Налаштування вашої збірки
Коли у вас є вихідний код, який компілюється запуском, ./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=directorydirectorydirectorydirectory
Виконані файли зазвичай входять 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, вас може зацікавити стандарт ієрархії файлової системи .