J'ai besoin de compiler des logiciels sur ma machine Fedora. Quel est le meilleur endroit pour le mettre afin de ne pas interférer avec le logiciel fourni?
Règle générale, au moins sur les systèmes de type Debian:
/usr/local
pour les éléments "à l'échelle du système" —i.e. /usr/local
a tendance à être dans la distribution par défaut d'une distribution $PATH
, et suit une hiérarchie de répertoires UNIX standard avec /usr/local/bin
, /usr/local/lib
, etc.
/opt
pour les éléments auxquels vous ne faites pas confiance à l'échelle du système, avec des préfixes par application, c'est-à-dire. /opt/firefox-3.6.8
, /opt/mono-2.6.7
, etc. Les trucs ici nécessitent une gestion plus prudente, mais sont également moins susceptibles de briser votre système et sont plus faciles à supprimer car vous supprimez simplement le dossier et il est parti.
Si vous ne voulez vraiment pas qu'il interfère, ne le placez nulle part dans votre $PATH
.
Si vous le voulez dans $PATH
, assurez-vous au moins de ne pas installer sur /usr/local
. J'ai trouvé que beaucoup de logiciels y sont, même s'ils sont installés par la distribution dans /usr
.
Ma façon préférée d'installer un logiciel personnalisé est dans mon $HOME
répertoire. De cette façon, vous n'avez pas besoin d'utiliser Sudo
pour quoi que ce soit, et il est très bien séparé du reste de votre système. Par exemple:
mkdir ~/stage
./configure --prefix=/home/username/stage && make && make install
Et si vous le souhaitez, vous pouvez ensuite ajouter /home/username/stage/bin
à ton $PATH
.
FHS dit de le mettre dans/usr/local où les distributions ne devraient pas le toucher. /usr/local/bin
pour les binaires /usr/local/src
pour la source et /usr/local/lib
pour les bibliothèques. Voir spécification FHS pour plus d'informations
La plupart du temps, j'aime placer mes propres trucs compilés dans /opt
. C'est une sorte de lieu pseudo-standard. Vous pouvez également envisager /usr/local
, mais je préfère garder mes affaires isolées à 100%.
Mettez-les à /usr/local/src
.
Ce que je fais, c'est extraire la source dans ce répertoire. Cela créera un chemin comme
/usr/local/src/postgresql-8.3.7
Ensuite, je crée un lien symbolique vers celui-ci:
/usr/local/src # ln -s postgresql-8.3.7 postgresql
Faites tout votre immeuble en /usr/local/src/postgresql
.
Faire les choses de cette façon est utile lorsque vous devez passer d'une version à l'autre et documenter la version que vous utilisez.
Cela me rappelle, je dois utiliser checkinstall plus souvent! De cette façon, je fais juste l'habituel
./configure
make
suivi par
Sudo checkinstall
pour créer un fichier . deb ...
Par FHS , /usr/local/
est utilisé pour les applications compilées à partir de la source, tandis que /opt/
est utilisé pour les applications tierces non prises en charge par le fournisseur de votre système d'exploitation.
S'il y a une possibilité - je suggère de compiler votre logiciel puis de créer un package FC (je crois qu'il utilise yum pour installer des packages logiciels). Ensuite, vous pouvez installer ce package de votre propre logiciel compilé et le supprimer sans gâcher l'ensemble du système.
Si vous voulez pouvoir installer et supprimer facilement plusieurs applications que vous avez créées vous-même, vous pouvez utiliser Stow comme un simple gestionnaire de paquets.
Deux choses que je recommanderais:
À l'échelle du système: utilisez stow et installez-le sous/usr/local/stow/package-version. Ensuite, vous pouvez facilement basculer entre les versions.
Chez moi, ou si je n'ai pas les autorisations d'écriture/usr/local, j'installe personnellement des programmes sous ~/.local, ce qui est indiqué par norme XDG .
Vous pouvez également utiliser stow localement, même si je ne l'ai jamais fait :)
Il n'est en fait pas si difficile de créer des deb ou des rpm à partir d'une archive tar source. De cette façon, vous pouvez utiliser les fonctionnalités du gestionnaire de paquets de votre distribution pour garder votre système propre. C'est ce que je fais, la plupart du temps: il suffit de créer un petit rpm.
J'ai une configuration un peu différente de la plupart des gens car je fais beaucoup de développement. J'ai un répertoire/home/jackson/bin/dans lequel j'installe des trucs et j'ai édité mon .bashrc en ajoutant ceci:
export PATH=/home/jackson/bin/bin::$PATH
export LD_LIBRARY_PATH=/home/jackson/bin/lib:$LD_LIBRARY_PATH
export PKG_CONFIG_PATH=/home/jackson/bin/lib/pkgconfig:$PKG_CONFIG_PATH
Je ne ferais pas ça pour tout, mais c'est sympa pendant le développement.
si vous compilez une application, vous pouvez ajouter son chemin des exécutables dans votre variable env PATH. cela n'aura aucun impact sur les autres utilisateurs.
Il y a toujours la possibilité de "le mettre à sa place" mais écrivez d'abord un simple rpm.
Si vous souhaitez que votre application soit disponible pour tous les utilisateurs du système et que vous disposez des autorisations nécessaires, utilisez/opt. Si vous souhaitez que l'application soit disponible uniquement pour vous (et root), utilisez/home/username
Écrire un RPM, ce n'est pas difficile, a des directives sur où mettre les choses et fait la désinstallation d'un composant logiciel enfichable.
Si vous procédez ainsi, installez les fichiers sous /usr
et pas sous /usr/local
, comme tous les autres fichiers qui transitent par le système de packaging.
La façon la plus simple de procéder consiste à récupérer le package source (.src.rpm
pour RPMites), décompressez-le, piratez la nouvelle source/configuration/quoi que ce soit dedans, changez la version en conséquence et compilez. L'installation rend votre gestionnaire de packages conscient du nouveau package, permet de le considérer pour les dépendances et la désinstallation/mise à jour.
C'est une corvée la première fois, mais si une nouvelle version (ou un patch critique) sort, il est alors plus simple à mettre à jour. Un autre avantage est que vous pouvez créer votre propre référentiel avec un logiciel local, à partager par exemple par les machines d'un laboratoire.