Pour le fun j'ai construit un LFS. Et très vite je me suis heurté à l'absence de gestion de package.
Certains logiciels sont bien founis avec un "make uninstal" qui fonctionne, mais celà contraint de garder les sources en permanences
La première idée que j'ai mise en place était une version modifiée de /bin/install qui créait un script de désinstallation du logiciel. Finalement je suis tombé sur des cas ingérable avec cet outil.
LFS étant "FHS compliant", je me replongé dans la doc de la Filesystem Hierachy Standard. Le problème de la séparation des données est assez claire, et la place des programmes que je testais était bien dans /opt. La lecture des README et INSTALL de cdrecord me confirmait sur ce point.
OK donc pour installer chaque logiciel dans un répertoire distinct sous /opt semblait donc la bonne piste.
Néanmoins il restait un os. Pour pouvoir appeler chaque nouvelle commande il fallait la rajouter systématiquement au PATH, donc une mise à jour de /etc/profile. Une source d'erreur et puis le PATH n'est pas extensible à l'infini, source de problème à venir, et plus il est long plus l'invocation d'une commande se retrouve ralentie.
Le même problème ou presque se pause pour le MANPATH et le LDPATH, bien que là il y a la possibilité de mettre à jour /etc/man.conf et /etc/ldconfig.
J'optai donc pour une solution "stow-like". Je décidai d'intaller les logiciels sous
/opt/PRODUCTS/logiciel-version et de gérer des
J'avais essayé les "hard link"
mais la maintenance
est plus compliquée
liens symboliques
vers /opt/bin /opt/lib /opt/include etc..
Pour ce faire j'ai créé deux petits shell scripts et une séquence de mise en place d'un logiciel
se fait par la suite de commandes suivantes
. set_prefix
./configure --prefix=$PREFIX plus les autres paramètres que l'on veut
make
make install
ln_opt -m
ldconfig
Et pour supprimer l'accès à un logiciel, on se déplace dans /opt/PRODUCTS/mon_logiciel et un simple "ln_opt -d" fait l'affaire.
Simplissime non ?
Il faut rajouter à la suite des MANPATH existant : "/opt/PRODUCTS/*/man"
Il suffit de rajouter la ligne "/opt/lib" au fichier
Je les ai personellement installé sous /usr/local/sbin
set_prefix
ln_opt c'est le petit moteur magique
Ils sont fournis tels quels et ne sont sous aucune licence, puisqu'en partie inspiré d'un article de Linux Magazine
Cette solution consomme des inodes, ce n'est en général pas un problème mais ce n'est pas idéal. Une meilleur solution serait de gérer directement l'indirection au niveau de l'appel au filesystem. Je penses qu'il doit être possible de mettre en place une meilleur gestion "stowlike" à en se basant de fuse
Efectivement je vais replonger dedans je viens en effet passer commande d'un point d'acccès Wifi-Nas DSM-G600, trouver à prix canon sur cdiscount
Le but du jeux sera d'y ajouter un système de contrôle de la rémanence des données ... en fait une sorte de sauvegarde en mirroir avec auto test cycliques des fichiers sauvegardés. J'essaierai aussi d'y installer un serveur web à défaut de pouvoir utiliser celui embarqué et le graal installer python
Pour avoir plein d'informations sur linux sur la bestiole un forum dédié et aussi quelques articles très intéressants sur openwrt.
Pour faire une remarque à l'auteur ou lui signaler une faute d'orthographe