Re: /usr/local

Top Page

Reply to this message
Author: Olivier Allard-Jacquin
Date:  
CC: Guilde Mailing list
Subject: Re: /usr/local
    Bonsoir,


Patrice Karatchentzeff wrote:
> ... me complique beaucoup la vie ;-)


    Tu crois ?? Bah, si cela permet d'éviter de tout planter et de devoir 
passer des heures à réinstaller toute mon installation de RPM.  Et 
devoir la reconfigurer aux petits oignons... :=)


> A priori, tous les logiciels libres un peu récent sont relogeables,
> (bon, plus ou moins facilement). L'option la plus courante est
> --prefix. Si tu compiles avec cette option (mis en local sous ton
> compte local), tu sais très bien ce que fait le logiciel, s'il compile
> bien, s'il s'installe bien (et s'il ne va rien percuter) et, cerise
> sur le gâteau, s'il fonctionne bien. Il suffit de recompiler ensuite
> avec l'option par défaut et faire l'install en root par la suite
> (juste l'install).



    Je connais le "--prefix". Pour ainsi dire, je l'utilise tout le temps !!!


    Bon, dans mon précédent mail j'ai simplifié ce que je fais réellement 
dans mon /usr/local, aussi j'ose vous en donner la version longue. Au 
risque de me faire traiter de fou de la compilation !!! :=) Âmes 
sensibles, s'abstenir !!!


    En fait, je compile mes programmes en utilisant le :
./configure --prefix=/usr/local/soft/PROGRAMME/VERSION/


    L'idée c'est d'avoir dans le /usr/local/soft, un répertoire par 
applications, et dedans un répertoire par version. Ainsi, j'ai par 
exemple l'arborescence suivante :


<extrait>
/usr/local/soft/ulogd/
/usr/local/soft/ulogd/0.98
/usr/local/soft/ulogd/0.98/etc
/usr/local/soft/ulogd/0.98/lib
/usr/local/soft/ulogd/0.98/lib/ulogd
/usr/local/soft/ulogd/0.98/sbin
/usr/local/soft/ulogd/1.00
/usr/local/soft/ulogd/1.00/etc
/usr/local/soft/ulogd/1.00/lib
/usr/local/soft/ulogd/1.00/lib/ulogd
/usr/local/soft/ulogd/1.00/sbin
/usr/local/soft/ulogd/1.02
/usr/local/soft/ulogd/1.02/etc
/usr/local/soft/ulogd/1.02/lib
/usr/local/soft/ulogd/1.02/lib/ulogd
/usr/local/soft/ulogd/1.02/sbin
/usr/local/soft/xxdiff/
/usr/local/soft/xxdiff/1.13
/usr/local/soft/xxdiff/1.13/bin
/usr/local/soft/xxdiff/1.13/man
/usr/local/soft/xxdiff/1.13/man/man1
/usr/local/soft/xxdiff/2.9.2
/usr/local/soft/xxdiff/2.9.2/bin
/usr/local/soft/xxdiff/2.9.2/man
/usr/local/soft/xxdiff/2.9.2/man/man1
</extrait>

    Et dans le /usr/local/soft/xxdiff/, j'ai :
total 8
drwxr-xr-x    4 xxxx     xxxx     4096 sep  2  2001 1.13/
drwxr-xr-x    4 xxxx     xxxx     4096 mar 30  2003 2.9.2/
lrwxrwxrwx    1 xxxx     xxxx     5 mar 30  2003 last -> 2.9.2/


    L'idée est simple : je compile chaque nouveau soft indépendamment, et 
il s'installe dans son propre répertoire ("/usr/local/soft/xxdiff/2.9.2" 
par exemple). Puis je définie quelle est la dernière version que je veux 
utiliser, via un lien symbolique ("last -> 2.9.2/" dans mon exemple).


    Pour lancer le nouveau soft, je n'ai donc qu'à lancer un :
/usr/local/soft/xxdiff/last/bin/xxdiff


Mais pour faire plus pratique, j'ai en fait crée un lien symbolique :
/usr/local/bin/xxdiff -> /usr/local/soft/xxdiff/last/bin/xxdiff , et
comme "/usr/local/bin" est dans mon $PATH, je n'ai qu'à lancer "xxdiff"

    De cette manière, je suis sûr que :
- la nouvelle version du soft ne va pas toucher à la précédente version
- je peux passer INSTANTANEMENT d'une version à l'autre d'un soft. Je 
n'ai qu'à changer le lien "last" de "last -> 2.9.2/" ) "last -> 1.13/" 
pour revenir à la dernière version.
- lors de la COMPILATION, le makefile ne va pas aller massacrer mon 
répertoire perso. Dans le cas le plus extrême ("rm -rf /"), le makefile 
ne supprimera que le "/usr/local/" et le "/home/" de mon utilisateur de 
compilation. Le reste sera épargné, et c'est le principal !!!


> Le mieux étant quand même de faire rapidement un paquet de la
> distribution (même pointant vers /usr/local) à des fins de
> désinstallation et d'intégration propre...


    Avec cette méthode, la désinstallation PROPRE se résume à un "rm -rf 
/usr/local/soft/PROGRAMME/VERSION/". C'est rapide, et sans problème. 
L'intégration quand à elle est propre, vu qu'elle ne touche à aucun 
moment au reste de l'arborescence des fichiers. Je peux même interdir à 
mes autres utilisateurs d'utiliser les softs que j'installe dans le 
/usr/local/, en ne les nommant pas membre du group de compilation.


    La technique du "faire rapidement un paquet" à pour moi un inconvenant 
: Je suppute que tu dois faire cette opération de création/suppression 
de paquet en temps que root, non ? Or avec ma méthode,  je n'utilise 
jamais les droits root. C'est, à mon point de vue, nettement plus 
sécurisé. D'ailleurs, c'est un Guildien appellé PK qui m'apprit il y a 
quelques années "moins tu es root, mieux c'est" ! :=))


                        Olivier


PS : Oui, j'admets que cette méthode est assez bizarre, et parfois un
peu lourde, à utiliser. D'un autre coté :
- je n'ai jamais eu de problème de dépendance de paquets
- je n'ai jamais cassé ma distribution en installant des RPMS bizarres.
Je n'installer que les RPMS officiels et les mises à jours.
- pour le cas des rares nouveaux softs qui ne marchaient plus en version
N+1, j'ai pu retrouver ma version N en recréant tout simplement un lien.
On ne peut pas faire plus simple, ni plus rapide !

PPS : J'ai récemment tenté la mise à jour d'un driver ATI sur un
portable. Opération qui demandait à la fois les droits root et de la
compilation. L'opération a fini par planter (X ne démarre plus), et
après bien du boulot, je n'ai pas encore retrouver toutes les
fonctionnalités que j'avais auparavant (accélération 3D notamment)...
Alors, pour moi, la compilation en temps que root, franchement je n'aime
pas...

-- 
~~~~~~~  _____/\_____  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Phoenix /   _ \/ _   \    Olivier Allard-Jacquin
       /   / \  / \   \   Web:  http://olivieraj.free.fr
      /___/  /  \  \___\  Mail: olivieraj@???
~~~~ /////  ///\\\  \\\\\ ~~~~~~~~~~~~~~~~~~~~~~~ Linux Powered !!