Сделать установку, но не в каталоги по умолчанию? - PullRequest
122 голосов
/ 13 июля 2010

Я хочу запустить 'make install', чтобы у меня было все, что мне нужно, но я бы хотел, чтобы он устанавливал вещи в их собственную папку, в отличие от системного / usr / bin и т. Д. Возможно ли это?даже если он ссылается на инструменты в / usr / bin и т. д.?

Ответы [ 7 ]

176 голосов
/ 13 июля 2010

Это зависит от пакета.Если Makefile генерируется с помощью автоинструментов GNU (./configure), вы обычно можете установить целевое местоположение следующим образом:

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

Если Makefile не генерируется автоматическими инструментами, а распространяется вместе с программным обеспечением, просто откройтеэто в редакторе и изменить его.Целевой каталог установки, вероятно, где-то определен в переменной.

34 голосов
/ 16 июля 2013

Поскольку не знаю, какую версию automake вы можете использовать DESTDIR переменная окружения.
См. Makefile, чтобы быть уверенным.

Например:

 export DESTDIR="$HOME/Software/LocalInstall" && make -j4 install
16 голосов
/ 13 июля 2010

Это может зависеть от того, что поддерживается модулем, который вы пытаетесь скомпилировать. Если ваш make-файл создан с помощью автоинструментов, используйте:

--prefix=<myinstalldir>

при запуске ./configure

некоторые пакеты позволяют также переопределять при запуске:

make prefix=<myinstalldir>

однако, если вы не используете ./configure, единственный способ узнать наверняка - открыть make-файл и проверить. Это должна быть одна из первых переменных наверху.

15 голосов
/ 14 мая 2017
make DESTDIR=./new/customized/path install

Эта быстрая команда сработала для меня при установке opencv версии 3.2.0 на Ubuntu 16. Путь DESTDIR может быть как относительным, так и абсолютным.

Такое перенаправление также может быть полезно в случае, если у пользователя нет прав администратора, если местоположение DESTDIR имеет права доступа для пользователя. например, / home //

2 голосов
/ 14 июня 2018

Если пакет предоставляет Makefile.PL - можно использовать:

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

* дальнейшее объяснение: https://www.perlmonks.org/?node_id=564720

0 голосов
/ 24 апреля 2018

Я попробовал вышеуказанные решения. Никто не работал.

В конце я открыл файл Makefile и вручную изменил путь префикса к желаемому пути установки, как показано ниже.

PREFIX ?= "installation path"

Когда я попробовал --prefix, «make» пожаловался, что такого ввода команд нет. Однако, возможно, некоторые пакеты принимают --prefix, который, конечно, является более чистым решением.

0 голосов
/ 01 декабря 2015

попробуйте использовать INSTALL_ROOT.

make install INSTALL_ROOT=$INSTALL_DIRECTORY
...