Таким образом, у меня просто был простой вопрос, это, вероятно, собирается заставить меня выглядеть немым, но я учусь
Когда я делаю a
./configure --prefix/usr/bin/
Что делает префикс? Это просто установка пакета в то местоположение
И может ответ давать больше тщательно продуманного ответа для сложной установки и объяснять подробно префиксы и опции, которые идут с ним.
Если бы я должен был работать, Кв. - получают установку, как я установил бы ее на определенном местоположении с префиксом
Я также видел
PREFIX=/tmp/installdir make
PREFIX=/tmp/installdir make install
Если префикс называют в./настраивать, почему он всегда сделал в этих двух примерах?
Заранее спасибо!
Когда Вы устанавливаете программное обеспечение с make install
или sudo make install
, различные файлы помещаются в различные каталоги. Исполняемые файлы, которые предоставляют командам пользователя, предназначаются для выполнения, обычно входят в a bin
каталог, библиотеки обычно входят в a lib
каталог, страницы руководства обычно входят в a man
каталог, и т.д.
Когда Вы работаете ./configure
, --prefix
опция позволяет Вам указать, где те каталоги. Это называют --prefix
потому что это позволяет Вам дать префикс, который появляется в путях к каждому из каталогов, где файлы из программы или библиотеки, которую Вы создаете, должны быть установлены. Большинство configure
поддержка сценариев --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=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, можно интересоваться Стандартом Иерархии Файловой системы.
Это говорит местоположение вещей, которые требуются, чтобы настраивать текущий пакет или программное обеспечение.
Как в простом случае, это может сказать местоположение 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
.