2010-03-16 4 views
1

Supposons que j'écris un script d'installation pour le programme contenant le fichier exécutable et la bibliothèque partagée. Par défaut, ce script place l'exécutable dans/usr/local/bin et la bibliothèque partagée dans/usr/local/lib. Dans ce cas mon programme peut être exécuté par n'importe quel utilisateur en tapant son nom dans la ligne de commande. Supposons que cet utilisateur sélectionne le répertoire d'installation personnalisé, comme ~/myprogram /. Est-ce la responsabilité de l'utilisateur de s'assurer que mon programme peut être exécuté, ou que mon script d'installation doit le faire?Répertoires d'installation personnalisés

Répondre

2

Normalement, le script "make install" ou le script d'installation utilise la commande install pour copier le fichier et définir les autorisations (y compris les bits d'exécution). Le processus d'installation doit soit ajouter tous les nouveaux répertoires (c'est-à-dire s'il n'existe pas déjà) à utiliser pour les bibliothèques partagées, soit indiquer à l'utilisateur ce qui doit être ajouté. Tel que le cas si le programme est installé dans un répertoire non déjà répertorié dans /etc/ld.so.conf ou dans un fichier conf dans le répertoire /etc/ld.so.conf.d/. Pour référence, les deux principales directives d'emballage auxquelles vous pouvez vous référer sont Linux Standard Base et Debian Policy Manual.

J'espère que cela répond à votre question.

1

Cela dépend si votre programme d'installation est exécuté par root. Si le logiciel est installé dans/opt/myprogram, alors tout le monde peut l'utiliser et il serait semi-approprié de fixer /etc/ld.so.conf (ou son équivalent) pour que tout le monde puisse l'utiliser. Dans le répertoire personnel d'un individu, ou lorsque le programme d'installation n'est pas exécuté par root, le mieux que vous puissiez faire est de dire "Ajouter ~/myprogram/lib à LD_LIBRARY_PATH". S'il existe une variable d'environnement que vous pouvez utiliser pour identifier l'emplacement d'installation, vous pouvez installer un script qui s'assure que LD_LIBRARY_PATH est défini dans ~/myprogram/bin, qui exécute ensuite l'exécutable avec l'environnement défini. Le pourrait être dans ~/myprogram/libexec, si je me souviens du FHS correctement .


Le répertoire libexec ne semble pas être mentionné dans la FHS. Il est couramment utilisé dans les systèmes d'installation GNU autoconf et connexes.

+0

Merci. En fait, je veux savoir, si mon script d'installation devrait le faire, ou utilisateur. Pour l'instant, je ne demande pas comment puis-je m'assurer que le programme peut être exécuté depuis n'importe quel répertoire. –

+0

Votre installateur peut noter où il est demandé de mettre le logiciel. Si vous utilisez RPM, il existe des scripts post-installation. Si vous utilisez le mécanisme script + libexec, votre installation est la même - vous éditez le script lors de l'installation avec le répertoire d'installation réel, définissez LD_LIBRARY_PATH, et partez. –

+1

@Alex Farber: la réponse directe à votre question est "oui, si possible, l'installateur du logiciel doit s'assurer que le logiciel est utilisable une fois l'installation terminée". Pensez à d'autres paquets que vous installez - que devez-vous faire pour le faire fonctionner? Vous ne devriez pas avoir à faire plus avec votre logiciel. –

Questions connexes