• # --prefix ?

    Posté par (site web personnel, Mastodon) . En réponse au journal Comment faire une sandbox de mon système de fichier ?. Évalué à 10.

    Salut,

    Corrige moi si je me trompe, mais ta problématique est simplement d'installer un programme auto-compilé, que tu comptes vraiment utiliser (et pas juste tester)?
    Parce que le sandbox, c'est plus pour des tests, par exemple pour sécuriser tes données si tu n'as pas entièrement confiance au programme exécuté, ou si c'est une version de dév un peu instable, ou que sais-je encore. Mais si ta problématique est uniquement que tu veux pas faire d'install crade, ça me paraît disproportionné.

    Si ton programme utilise les autotools, il suffit de mettre l'option --prefix au script configure:

    ./configure --prefix=$HOME/.local --autre --options
    make && make install

    Les autres systèmes de compilation ont (tous ceux qui se respecte, à ma connaissance) aussi un moyen de spécifier le préfixe d'installation, par exemple lors de la phase cmake, etc.

    $HOME/.local est un préfixe assez classique pour installer des logiciels pour ton user seulement (mais ça mélangera les divers logiciels si tu en installes d'autres avec ce même préfixe). Tu n'as même pas besoin d'être root pour le make install (en fait, de manière général, je déconseille d'installer quoi que ce soit d'auto-compilé en root, sauf si vous êtes vraiment sûr de vous).
    Sinon souvent on va installer dans /opt/nom-du-logiciel/ ou quoi que tu veuilles. Il suffit juste de bien mettre à jour la variable d'environnement $PATH.
    Par exemple dans ton ~/.bashrc:

    export PATH="$HOME/.local/bin:$PATH"

    Ensuite quand tu veux désinstaller, si tu as utilisé un préfixe unique avec aucun autre logiciel installé dedans, tu peux juste effacer tout le répertoire.

    Note que DESTDIR fait quelque chose de similaire, sauf que ce n'est absolument pas fait pour une installation finale. C'est plutôt fait pour créer votre arborescence, préfixe compris, dans un répertoire pour ensuite le déplacer ailleurs, cette fois au bon préfixe. L'utilisation la plus commune est la création de paquet, pour une utilisation sur plusieurs machines, par exemple dans un parc informatique, ou bien pour une distribution Linux, etc.
    En gros on donne à --prefix l'emplacement qui sera utilisé au final par le logiciel dans la machine cible, alors que DESTDIR n'est qu'un emplacement temporaire, en préparation du paquet, sur la machine de compilation et ne doit avoir absolument aucun impact sur l'installation finale.

    En fait c'est même sujet à bug d'utiliser DESTDIR pour une installation finale. En effet, le logiciel peut potentiellement utiliser le préfixe déterminé à la configuration (qui peut alors être inclus dans les sources avant compilation); par exemple pour connaître l'emplacement de données (permettant ainsi les binaires et les données d'être dans un préfixe différent notamment).
    DESTDIR par contre ne sert à rien et ne sera jamais utilisé par le logiciel final. Tu risques donc de "casser" le logiciel si ton installation repose sur l'usage de DESTDIR.

    Film d'animation libre en CC by-sa/Art Libre, fait avec GIMP et autre logiciels libres: ZeMarmot [ http://film.zemarmot.net ]