Налаштування вашої збірки
Коли у вас є вихідний код, який компілюється запуском, ./configure
і make
ви зазвичай використовуєте make install
(або sudo make install
) для його встановлення. Це копіює файли з каталогу збирання в місце встановлення. Коли річ, яку ви встановлюєте, надає виконувані команди, такі виконувані файли, як правило, копіюються в каталог, який знаходиться $PATH
або в який слід розглянути можливість додавання
$PATH
.
Хоча створення і установка програмного забезпечення часто так просто , як працює ./configure
, make
іноді make check
або make test
, а потім make install
або sudo make install
, ви іноді хочете передати параметри в configure
скрипт для настройки збірки. Зокрема, як каже pfnuesel , саме так ви налаштовуєте
місце встановлення програмного забезпечення. Незважаючи на те, що на make install
етапі фактично встановлено програмне забезпечення, місця, де все буде встановлено, зазвичай встановлюються на
./configure
кроці.
Найпоширеніший варіант для цього --prefix
. Префікс за замовчуванням, коли ви не вказуєте, configure
що використовувати, зазвичай /usr/local
. (Іноді вихідний код програми чи бібліотеки за замовчуванням застосовується до якогось іншого префікса. На щастя, це рідко.)
Так ./configure
зазвичай рівносильно ./configure --prefix=/usr/local
. Щоб встановити програмне забезпечення в домашній каталог, ви можете використовувати ./configure --prefix=/home/galahad
(якщо /home/galahad
це ваш домашній каталог) або --prefix="$HOME"
. Тоді, звичайно, потрібно все-таки створити та встановити програмне забезпечення make
. Слід сказати, що не все програмне забезпечення, яке поширюється у формі вихідного коду, побудовано таким чином. Ви завжди повинні шукати документацію всередині витягнутого архіву вихідного коду.
Що --prefix
означає
Під час запуску ви вказуєте, що програмне забезпечення має бути встановлено під
каталогом. Але це рідко, якщо і коли-небудь, вміщує вільні файли . Замість цього він розміщує файли, які служать різному призначенню в різних підкаталогах . Якщо цих підкаталогів не існує, він створює їх../configure --prefix=directory
directory
directory
directory
Виконані файли зазвичай входять directory/bin
, хоча вони можуть зайти, directory/sbin
якщо вони зазвичай використовуються для адміністрування системи, або вони можуть входити (рідше, в ці дні),
directory/games
якщо це ігри. Бібліотеки заходять у
directory/lib
інший каталог, подібний до назви
directory/lib32
. Заходять файли заголовків
directory/include
. Сторінки вручну входять
directory/man
. Файли даних, які використовує програмне забезпечення, входять
directory/share
.
Ось що це означає для directory
бути префіксом . Це батьківський каталог, який містить місця, в яких будуть встановлені різні файли. Таким чином, він з'являється як префікс в абсолютних шляхах більшості файлів і каталогів, створених за допомогою запуску make install
або sudo make install
.
З цього є деякі винятки. Загальносистемні файли конфігурації - які іноді створюються при встановленні програмного забезпечення, яке їх використовуватиме, хоча і не завжди - зазвичай входить /etc
. На це зазвичай не впливає, вказавши інший префікс. Навіть якщо ви встановите багато програмного забезпечення в /usr/local
ньому, воно все одно в основному буде використовувати
/etc
, і ваш /usr/local/etc
каталог, ймовірно, буде неіснуючим, порожнім або містить дуже мало файлів.
У багатьох системах ви можете знайти додаткову інформацію про типовий макет файлової системи, запустивши man hier
. Якщо ви використовуєте систему GNU / Linux, вас може зацікавити стандарт ієрархії файлової системи .