El bucle meravellòs

Un dels avantatges d'utilitzar programari lliure és tenir disponible el codi font. Alhora, instal·lar programari mitjançant codi font pot tocar una mica els nassos. Es pot fer una mica menys toca collons utilitzant màgia de GNU Bash.

Habitualment per compilar un programa a partir del seu codi font cal executar configure i desprès make:

user@computer:~$ ./configure --prefix=${HOME}/software/qbittorrent
user@computer:~$ make -j

L'opció --prefix configura els arxius make (makefiles) per instal·lar el binari en el directori indicat. Si emprem sempre el mateix directori i un subdirectori per programa, tindrem individualitzats els diferents programes, amb la seva pròpia jerarquia de directoris bin,lib,include,etc,share. Això ens permet desprès esborrar els programes que volguem sense deixar cap rastre, esborrant el seu directori.
El problema de tenir tot instal·lat d'aquesta manera, amb el seu propi directori, és que els binaris no apareixen a la variable PATH i per tant per utilitzar-los cal indicar tot el camí de directoris fins a ${HOME}/software/qbittorrent/bin. Però si creem el fitxer .bash_profile i fiquem el següent bucle:
 
for i in $(ls -d ~/software/*); do
    if [ -d $i/bin ]; then
        PATH=$i/bin:${PATH}
    fi
    if [ -d $i/lib ]; then
        LD_LIBRARY_PATH=$i/lib:${LD_LIBRARY_PATH}
    fi
    if [ -d $i/lib64 ]; then
        LD_LIBRARY_PATH=$i/lib64:${LD_LIBRARY_PATH}
    fi
    if [ -d $i/man ]; then
        MANPATH=$i/man:${MANPATH}
    fi
done

Llavors qualsevol programa que instal·lem quedarà afegit a les variables de cerca de llibreries, pàgines de manual i binaris automàticament al iniciar sessió.

Si no teniu un fitxer .bash_profile, teniu en compte que s'ha d'afegir la següent comprovació a l'inici del fitxer:

if [ -f ~/.bashrc ]; then
    source ~/.bashrc
fi
Més detalls en la pàgina de manual bash, secció invocation.

Si tenim més d'una versió, s'utilitzarà la que aparegui en última posició en el llistat de ls. Aquí ja es complica la cosa i caldria tenir més scripts per gestionar la versió que volguem tenir disponible d'un programa determinat, canviant el nom dels directoris bin, lib i man de les versions no desitjades. En sistemes grans s'utilitza el sistema Environment Modules (disponible en els repositoris d'Ubuntu i Debian). Va bé si tens una selecció de software ben definida i constant en el temps. Requereix crear fitxers de configuració per a cada programa.

Comentaris