Я хочу запустити 'make install', щоб у мене було все, що мені потрібно, але я хотів би, щоб він встановлював речі у власну папку на відміну від системної / usr / bin тощо. Це можливо? навіть якщо він посилається на інструменти у / usr / bin тощо?
Я хочу запустити 'make install', щоб у мене було все, що мені потрібно, але я хотів би, щоб він встановлював речі у власну папку на відміну від системної / usr / bin тощо. Це можливо? навіть якщо він посилається на інструменти у / usr / bin тощо?
Відповіді:
Це залежить від упаковки. Якщо Makefile генерується GNU autotools ( ./configure
), зазвичай ви можете встановити цільове розташування таким чином:
./configure --prefix=/somewhere/else/than/usr/local
Якщо Makefile не генерується автоінструментами, а поширюється разом із програмним забезпеченням, просто відкрийте його в редакторі та змініть його. Каталог встановлення цілі, ймовірно, десь визначений в змінній.
make && make install
дотримуватися пункт налаштування?
--prefix
полягає в тому, що якщо ви запустите a strings
на отриманому бінарному файлі згодом, ви побачите, що шлях зберігається всередині. Я не знаю, чому це відбувається, але я, звичайно, не хочу, щоб мої машинні шляхи на бінарних файлах, які я надсилаю іншим користувачам.
Оскільки не знаю, в якій версії автоматичного ви можете використовувати змінну середовища DESTDIR .
Переконайтесь у розділі Makefile.
Наприклад:
export DESTDIR="$HOME/Software/LocalInstall" && make -j4 install
make DESTDIR=./new/customized/path install
Ця швидка команда працювала для мене для встановлення opencv випуску 3.2.0 на Ubuntu 16. Шлях DESTDIR може бути як відносним, так і абсолютним.
Таке перенаправлення також може бути корисним у випадку, якщо користувач не має привілеїв адміністратора, якщо DESTDIR-адреса має правильний доступ для користувача. наприклад / додому //
Це може залежати від того, що підтримується модулем, який ви намагаєтеся скласти. Якщо ваш makefile генерується за допомогою автоінструментів, використовуйте:
--prefix=<myinstalldir>
під час запуску ./configure
деякі пакети дозволяють вам також перекривати під час запуску:
make prefix=<myinstalldir>
Однак, якщо ви не використовуєте ./configure, єдиний спосіб точно знати - це відкрити makefile і перевірити. Це має бути однією з перших змінних вгорі.
make prefix=...
може призвести до бінарних файлів з неправильно ./configure --prefix=...
Якщо пакет надає 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
Я спробував вищевказані рішення. Жоден не працював.
Врешті-решт я відкрив файл Makefile і вручну змінив шлях префікса на потрібний шлях установки, як показано нижче.
PREFIX ?= "installation path"
Коли я спробував --prefix, "make" поскаржився, що немає такого введення команди. Однак, можливо, деякі пакети приймають - prefix, що, звичайно, є більш чистим рішенням.
--prefix
варіантом є , ./configure
що ви називаєте ДО make
.