web-dev-qa-db-fra.com

Où dois-je mettre les logiciels que je compile moi-même?

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?

130
theotherreceive

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.

92
directhex

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.

50
Sandy

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

21
xenoterracide

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%.

10
Scott Anderson

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.

9
Stephen Jazdzewski

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 ...

6
Kevin Cantu

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.

5
Aaron Toponce

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.

5
Eimantas

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.

5
Daniel James

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 :)

4
elmarco

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.

3
wzzrd

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.

3
jacksonh

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.

2
Hemant

Il y a toujours la possibilité de "le mettre à sa place" mais écrivez d'abord un simple rpm.

2
Nils

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

1
Silviu Bogan

É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.

0
user55149

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.

0
vonbrand