La problématique de la hiérarchie des fichiers

Ma situation

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 solution

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.

De l'échec de la première solution à la réflexion sur la hiérarchie des fichiers

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.

La solution retenue

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 ?

Les outils

La modification de /etc/man.conf

Il faut rajouter à la suite des MANPATH existant : "/opt/PRODUCTS/*/man"

La modification de /etc/ld.so.conf

Il suffit de rajouter la ligne "/opt/lib" au fichier

Les deux scripts

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

Les inconvénients de la solution et des pistes de solutions alternatives

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

Un petit peu de bricolage linuxien devant moi

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

Valid XHTML 1.1!