Що саме --prefix робить саме при використанні в ./configure?


29

Тож у мене просто було просте запитання, яке, мабуть, змусить мене виглядати німим, але я навчаюсь

Коли я роблю а

./configure --prefix/usr/bin/

Що робить префікс? Це лише встановлення пакета в тому місці

А чи може відповідь дати більш детальну відповідь на складну установку та детально пояснити префікси та параметри, які йдуть разом із цим.

Якби я запустив apt-get install, як би я встановив його до певного місця з префіксом

Я також бачив

 PREFIX=/tmp/installdir make


 PREFIX=/tmp/installdir make install

Якщо префікс викликається в ./configure, чому він завжди робиться в цих двох прикладах?

Заздалегідь спасибі!



перевірити оновлену відповідь
luv.preet

freetds.org/userguide/config.htm , це допоможе вам більше
luv.preet

Рецензенти: мова йде про встановлення програмного забезпечення . У ньому є три голоси між темою, як "не про Ubuntu". Якщо закриття цього рішення якось узгоджується з будь-якою фактичною політикою щодо сайту , пропоную прокоментувати. В іншому випадку це, швидше за все, буде відновлено, навіть якщо воно закрите.
Елія Каган

Відповіді:


32

Коли ви встановлюєте програмне забезпечення з make installабо sudo make install, різні файли розміщуються в різних каталогах. Виконавчі файли, що надають команди, які користувач повинен запускати, зазвичай йдуть у binкаталог, бібліотеки зазвичай йдуть у libкаталог, сторінки вручну зазвичай йдуть у manкаталог тощо.

При запуску ./configure, параметр дозволяє вказати , де ці каталоги . Він називається тому, що дозволяє надати префікс, який з’являється на шляхах, до кожного з каталогів, куди мають бути встановлені файли програми або бібліотеки, яку ви будуєте. Більшість сценаріїв підтримують , опускаючи його та просто працюючи, як правило, еквівалентно .--prefix--prefixconfigure--prefix./configure./configure --prefix=/usr/local

Щоб відповісти на це більш повно, я відтворив два розділи з моєї відповіді на тему "Як встановити файл tar" глобально "? (на Unix & Linux ), які конкретно вирішують це питання:

Налаштування вашої збірки

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


2

Він повідомляє про розташування речей, необхідних для налаштування поточного пакета чи програмного забезпечення.

Як у простому випадку, він може вказати розташування ssl бібліотек:

--with-libssh2=/usr/local  #used in configuring nagios

а також повідомляє, які пакети не налаштовувати, щоб зробити відповідні компіляції програми відповідно до вашої системи:

--disable-shared  # used in configuring nagios
--disable-link-balancer  # used in configuring Firehol

Це лише додаткові варіанти зробити компіляцію, підходящу для вашої системи. Це те, що я думаю. Виправте мене, якщо це щось інше.

--prefix=PREFIXОпція встановлює незалежні від архітектури файли PREFIX. При запуску make installкоманди бібліотеки будуть розміщені в PREFIX/libкаталозі, виконувані файли в PREFIX/binкаталозі тощо.

Якщо цей аргумент не передається configureкоманді, то значенням за замовчуванням є /usr/local.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.