::
Sam Qasbah” post=102049 @elrond:
La tua soluzione, provata su macchine diverse, dà gli stessi risultati della mia: tutti e due inaffidabili. Infatti su una macchina la stringa risultante dagli script è “[tt]i686-linux[/tt]” mentre il ramo della installazione TeXLive è “[tt]/usr/local/texlive/2015/bin/i386-linux/[/tt]”.
Non ho idea di come TeX Live decida di chiamare le cartelle, io ho solo tradotto il comando Python in bash. Quello dei sistemi i386/i686 è un bel guaio: [tt]uname[/tt] riporta correttamente l’architettura del sistema, ma spesso altri programmi, come TeX Live in questo caso, usano i386 o i686 come nome collettivo per indicare entrambe le architetture.
Sam Qasbah” post=102049E allora forse è utile seguire un altro approccio:
1) determinare la directory voluta individuandola come contenente un certo file, ad es.: [tt]mktexmf[/tt]
`$ locate '/*/bin/*/mktexmf'
$ /usr/local/texlive/2015/bin/x86_64-linux/mktexmf`
Questa mi sembra una variante di quanto avevo suggerito io, sapendo dove andare a parare. Ovviamente tu sai a cosa ti serve lo script, ma ti consiglio di considerare la possibilità che uno abbia più installazioni di TeX Live sul proprio sistema (io faccio così, quando possibile), quindi
`$ locate '/*/bin/*/mktexmf'`
mi restituisce più di un risultato. Suggerirei di specificare l’anno con
`$ locate '/*/2015/bin/*/mktexmf'`
Sam Qasbah” post=1020492) lavorare sulla stringa risultante per isolare il dato che ci interessa. Tralascio i passaggi intermedi, il comando risultante è la simpatica linea sottostante.
`$ SYS=$(locate '/*/bin/*/mktexmf'|python -c “import sys; l=[line for line in sys.stdin.readlines()]; print(l[0].split('bin/')[1].split('/mktexmf')[0])”)
$ echo $SYS
$ x86_64-linux`
Usando solo bash:
`echo “$(basename “$(dirname “$(locate '/*/2015/bin/*/mktexmf')”)”)”`
Sam Qasbah” post=102049Ma sono certo che DEVE esistere una soluzione più semplice e ‘naturale’.
Il metodo più naturale sarebbe vedere come sceglie i percorsi il programma di installazione di TeX Live. Per quanto riguarda il problema i386/i686, probabilmente basterebbe un controllo ([tt]if[/tt] o [tt]case[/tt]) per scegliere in entrambi i casi [tt]i386[/tt]. Quali sono gli altri possibili percorsi?