web-dev-qa-db-fra.com

Faire installer, mais pas aux répertoires par défaut?

Je veux utiliser 'make install' pour avoir tout ce dont j'ai besoin, mais j'aimerais que les choses soient installées dans leur propre dossier, par opposition à/usr/bin du système, etc. Est-ce possible? même s'il fait référence à des outils dans/usr/bin, etc.? 

115
jphenow

Cela dépend du paquet. Si le Makefile est généré par GNU autotools (./configure), vous pouvez généralement définir l'emplacement cible de la manière suivante:

./configure --prefix=/somewhere/else/than/usr/local

Si le Makefile n'est pas généré par autotools, mais distribué avec le logiciel, ouvrez-le simplement dans un éditeur et modifiez-le. Le répertoire cible d'installation est probablement défini dans une variable quelque part.

161
Thomas

Puisque je ne sais pas quelle version d’automake vous pouvez utiliserDESTDIRvariable d’environnement.
Voir Makefile pour en être sûr.

Par exemple:

 export DESTDIR="$HOME/Software/LocalInstall" && make -j4 install
30
Andor

Cela peut dépendre de ce qui est supporté par le module que vous essayez de compiler. Si votre makefile est généré en utilisant autotools, utilisez:

--prefix=<myinstalldir>

lors de l'exécution de ./configure

certains paquets vous permettent également de remplacer lors de l'exécution:

make prefix=<myinstalldir>

cependant, si vous n'utilisez pas ./configure, le seul moyen de vous en assurer est d'ouvrir le fichier makefile et de le vérifier. Ce devrait être l'une des premières variables au sommet.

15
Tree77
make DESTDIR=./new/customized/path install

Cette commande rapide a fonctionné pour moi pour l'installation de la version 3.2.0 d'Opencv sur Ubuntu 16. Le chemin DESTDIR peut être relatif ou absolu.

Une telle redirection peut également être utile dans le cas où l'utilisateur ne dispose pas des privilèges d'administrateur tant que l'emplacement DESTDIR dispose d'un accès correct pour l'utilisateur. par exemple/home // 

14
samasat

Si le paquet fournit un Makefile.PL - on peut utiliser:

Perl Makefile.PL PREFIX=/home/my/local/lib LIB=/home/my/local/lib
make
make test
make install

* explication supplémentaire: https://www.perlmonks.org/?node_id=564720

3
eli

J'ai essayé les solutions ci-dessus. Aucun n'a travaillé.

Finalement, j'ai ouvert le fichier Makefile et changé manuellement le chemin du préfixe en chemin d'installation souhaité, comme ci-dessous.

PREFIX ?= "installation path"

Quand j'ai essayé --prefix, "make" s'est plaint de l'absence d'une telle entrée de commande. Cependant, certains paquets acceptent peut-être --prefix qui est bien sûr une solution plus propre.

0
Majid Azimi