Prefix linux что это

Обновлено: 07.07.2024

И может ответ дать более сложный ответ для сложной установки и подробно объяснить префиксы и опции, которые идут с ним.

Если бы я должен был запустить apt-get install, как бы я установить его в определенное место с префиксом

Если префикс вызывается в ./configure, почему он всегда делается в этих двух примерах?

Рецензенты: речь идет об установке программного обеспечения . У него три закрытых голоса не по теме, как «не об Ubuntu». Если закрытие это каким-то образом согласуется с какой-либо реальной политикой сайта , я предлагаю комментировать. В противном случае это, вероятно, будет вновь открыто, даже если оно будет закрыто.

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

При запуске ./configure , параметр позволяет указать , где эти каталоги . Он вызывается потому, что он позволяет вам указать префикс, который появляется в путях к каждому из каталогов, куда должны быть установлены файлы из создаваемой вами программы или библиотеки. Большинство сценариев поддерживают , и пропуск и просто запуск обычно эквивалентны . --prefix --prefix configure --prefix ./configure ./configure --prefix=/usr/local

Чтобы ответить на этот вопрос более полно, я воспроизвел два раздела из моего ответа на Как установить tar-файл «глобально»? (на Unix и Linux ), которые конкретно решают этот вопрос:

Настройка вашей сборки

Если у вас есть исходный код, скомпилированный с помощью команды ./configure and 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 значит

И может ли ответ дать более сложный ответ для сложной установки и подробно объяснить префиксы и опции, которые идут с ним.

Если бы я запускал apt-get install, как бы я установить его в определенное место с префиксом

Если префикс вызывается в ./configure, почему он всегда делается в этих двух примерах?

2 ответа

Когда вы устанавливаете программное обеспечение с помощью make install или sudo make install , разные файлы размещаются в разных каталогах. Исполняемые файлы, предоставляющие команды, которые пользователь должен выполнять, обычно помещаются в каталог bin , библиотеки обычно находятся в lib , страницы справочника обычно находятся в каталоге 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 step.

Наиболее распространенным вариантом для этого является --prefix . Префикс по умолчанию, когда вы не говорите configure , что использовать, обычно это /usr/local . (Иногда исходный код программы или библиотеки по умолчанию другой префикс. К счастью, это редко.)

Итак, ./configure обычно эквивалентно ./configure --prefix=/usr/local . Чтобы установить программное обеспечение в своем домашнем каталоге, вы можете использовать ./configure --prefix=/home/galahad (если /home/galahad есть Ваш домашний каталог) или --prefix="$HOME" . Тогда, конечно, вы должны по-прежнему собирайте и устанавливайте программное обеспечение с помощью make . Я должен сказать, что не все программное обеспечение, которое распространяется в форме исходного кода, построено так путь. Вы всегда должны искать документацию внутри извлеченного архив исходного кода.

Что --prefix означает

Здесь указывается, что нужно для настройки текущего пакета или программного обеспечения.

Как и в простом случае, он может определить местоположение библиотек ssl:

и также сообщает, какие пакеты не нужно настраивать, чтобы сделать подходящие компиляции программы в соответствии с вашей системой:

Это всего лишь дополнительные опции, чтобы сделать компиляцию подходящей для вашей системы. Это то, что я думаю. Поправьте меня, если это что-то еще.

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

Если этот аргумент не передан команде configure , то значением по умолчанию будет /usr/local

./configure

чтобы сконфигурировать сборку Gwyddion .

Если configure пишет об отсутствии требуемых пакетов, установите эти пакеты и перезапустите её. То же самое справедливо и для случая, если configure заканчивается успешно, но вы обнаружили, что забыли установить опциональный компонент, с которым хотели собрать Gwyddion . Возможно, что пакет не был найден или был неправильно определён даже если вы его установили, а именно если он был установлен в нестандартный каталог. В этом случае необходимо настроить определённые переменные окружения чтобы дать configure возможность найти эти пакеты:

Большинство пакетов идут вместе с так называемыми файлами pkg-config ( .pc ), которые описывают как программы должны собираться и линковаться с ними. configure использует информацию из этих файлов, следовательно, PKG_CONFIG_PATH должна быть установлена таким образом, чтобы там были перечислены все нестандартные какталоги с нужными файлами pkg-config. Чтобы добавить, например, установленную библиотеку GTK+ в /opt/gnome и установленную библиотеку FFTW3 в $HOME/opt/fftw3 , нужно выполнить:

PKG_CONFIG_PATH=/opt/gnome/lib/pkgconfig:$HOME/opt/fftw3/lib/pkgconfig
export PKG_CONFIG_PATH

Может потребоваться настроить эти переменные чтобы включить нестандартные каталоги с исполняемыми файлами и библиотеками соответствующих пакетов. Переменные LD_LIBRARY_PATH и DYLD_LIBRARY_PATH обе задают путь поиска для разделяемых библиотек, но первая используется в системах на основе Linux и BSD, в то время, как вторая на OS X.

Может потребоваться настроить эти переменные чтобы включить нестандартные каталоги с заголовочными файлами и библиотеками пакетов, с которыми не шло файлов pkg-config, например, для libTIFF в /usr/local можно установить:

CPPFLAGS=-I/usr/local/include
export CPPFLAGS
LDFLAGS=-L/usr/local/lib
export LDFLAGS

Опция --prefix команды configure задаёт базовый каталог установки. Компоненты программы будут установлены в его подкаталоги bin , lib , share , и т.д. (которые будут созданы если они не существуют). Более детальное управление возможно с помощью опций, задающих отдельные подкаталоги, таких как --bindir , --libdir . Префикс по умолчанию – /usr/local/bin , чтобы установить Gwyddion в домашний каталог пользователя можно использовать, например команду

./configure --prefix=$HOME/opt/gwyddion

Если вы устанавливаете Gwyddion для личного использования это является рекомендованным вариантом, поскольку в этом случае не требуется выполнять действий с правами суперпользователя.

Настройки процесса конфигурирования

Необязательные возможности можно включить/выключить с помощью опций вроде --with-foo / --without-foo или --enable-foo / --disable-foo . Например, компиляция с zlib может быть отключена командой:

./configure --without-zlib

По умолчанию все опциональные возможности включены, если найдены все требуемые для их реализации библиотеки. Краткая информация о включенных и отключенных опциональных возможностях печатается в выводе команды configure недалеко от его конца.

Полный список опций и важных переменных configure можно получить с помощью команды:

./configure --help

Список будет длинным и большая часть опций контроллирует включение/выключение отдельных опциональных возможностей или передачу необходимых флагов компиляции и связывания для различных библиотек. Например, задавая FFTW3_CFLAGS и FFTW3_LIBS можно задать (или переопределить) как будет осуществляться компиляция и связывание с FFTW3. Однако, такое ручное задание является резервным вариантом для гораздо более удобного метода, основанного на использовании pkg-config в том случае если он почему-то не работает.

Некоторые интересные общие опции описаны в следующих параграфах.

Настройки пользователей

C Gwyddion поставляются различные файлы взаимодействия со средой рабочего стола, которые определяют типы MIME, элементы меню, привязки файлов, генерацию миниатюр и т.п. Если Gwyddion устанавливается в системный каталог, они обычно находятся в правильных местах файловой системы. Однако, если вы устанавливаете его куда-то в свой каталог пользователя, то эти файлы нужно поместить в другое место. а именно в определённые скрытые каталоги, начинающиеся с точки в вашем домашнем каталоге.

Это можно задать с помощью опции --enable-home-installation команды configure . Следует отметить, что использование этой опции приводит к установке файлов в каталоги вне заданного префикса.

Настройки создателей пакетов

Если Gwyddion устанавливается во временный каталог для дальнейшего создания пакета, необходимо отключить определённые действия после установки, которые нужно производить с системой, где пакет будет установлен, а не в момент создания пакета.

Обновление файлов FreeDesktop может быть отключено с помощью --disable-desktop-file-update . Установка схем GConf2 может быть отключена с помощью --disable-schemas-install . Обычно это не надо делать в явной форме т.к. установки в временный каталог используют непустую переменную DESTDIR (см. раздел установка). Если переменная DESTDIR не пустая, система сборки пропустит автоматически действия после установки. Тем не менее, обычной причиной отключения этих действий является то. что Gwyddion устанавливается на временное место вместо финального каталога (что обычно происходит при сборке пакетов в Linux). В этом случае вспомогательные действия отключаются автоматически при непустой переменной DESTDIR (см. раздел установка) и, следовательно, нет нужды отключать их в configure .

Передавая параметр --enable-library-bloat скрипту configure заставляет связываться модулям со всеми библиотеками. Это автоматически включается на MS Windows, где это является обязательным требованием. В основанных на Unix системах, связывание модулей со всеми библиотеками, которые уже загружены основной программой только напрасно замедляет работу (как во время сборки, так и во время исполнения). Таким образом, модули не связываются непосредственно с основными библиотеками вроде GLib. если ваша система или правила сборки требуют связывания модулей со всеми библиотеками (например, в системах, основанных на AltLinux), использование этой опции включает данное поведение.

Передачей опции --disable-module-bundling команде configure можно запретить объединение всех модулей одного типа (файловых, обработки данных, . ) в одну разделяемую библиотеку, что обычно делается для сохранения места на диске и ускорения загрузки. Хотя подобное объединение не меняет функциональность, оно заметно меняет набор устанавливаемых файлов. Если вы, по той или иной причине, полагаетесь на наличие на диске файла gwyfile.so , самое время остановиться и перестать так делать. Тем не менее, можно использовать данную опцию чтобы принудительно получить традиционный вариант установки, где каждый модуль находился в отдельном файле.

Настройки для разработчиков

Если вы собираетесь накладывать патч или иным образом модифицировать исходный код Gwyddion запустите configure с опцией --enable-maintainer-mode чтобы включить различные правила обновления и пересборки, которые не используются при обычной компиляции. В зависимости от вида изменений могут понадобиться некоторые дополнительные инструменты, описанные в разделе Снимок Subversion, разработка.

По умолчанию справочное руководство по C API не пересобирается. Подготовленные файлы HTML распространяются с архивом, документация меняется редко и её генерация требует достаточно продолжительного времени. Для того, чтобы включить генерацию документации по API нужно передать опцию --enable-gtk-doc скрипту configure . Естественно, вам потребуется gtk-doc. Следует отметить, что configure предупредит вас, если вы включили режим мантейнера, но выключили gtk-doc (что может быть полезно для того, чтобы не пересобирать постоянно и бесцельно документацию). Если вы не собираетесь делать make dist , это предупреждение безвредно.

Сначала Вам скорее всего нужно скачать архив с программой, которую Вы хотите установить.

Например, команда для скачивания python3.7:

Затем распаковать архив

tar -xf Python-3.7.0.tgz

И перейти в только что распакованную директорию

В этой директории скорее всего будет находиться скрипт configure

Configure

configure - это не команда linux а скрипт, который обычно лежит в папке к configure


--prefix=PREFIX - папка для установки программы, вместо /, например, может быть /usr/local/, тогда все файлы будут распространены не по основной файловой системе, а в /usr/local;

--bindir=DIR - папка для размещения исполняемых файлов, должна находится в PREFIX;

--libdir=DIR - папка для размещения и поиска библиотек по умолчанию, тоже в PREFIX;

--includedir=DIR - папка для размещения man страниц;

--disable-возможность - отключить указанную возможность;

--enable-возможность - включить возможность;

--with-библиотека - подобно enable активирует указанную библиотеку или заголовочный файл;

--without-библиотека - подобное disable отключает использование библиотеки.

.cpp файлы компилируются в .o файлы

один .h файл может использоваться несколькими .cpp файлами

makefile нужны для того чтобы печатать меньше названий файлов и опций вручную.

С их помощью можно делать build только тех файлов, которые изменились.

Make это инструмент, который вызывает компиллятор. Можно указать тот компиллятор который нужен именно Вам.

С помощью инструкций в makefile можно указать какие именно файлы нужно заново компилировать.

Рассмотрим пример из C++ .

В директории находятся три .cpp файла, два .h файла и три .o файла, оставшиеся от прошлой компиляции.

  • Example.cpp , Example.o
  • Second.cpp , Second.h , Second.o
  • Third.cpp , Third.h , Third.o

Все они нужны для проекта и не могут быть объединены в один файл.

Известно, что Example.cpp включает в себя файл Second.h и других зависимостей не имеет.

Мы хотим, чтобы при изменении самого Example.cpp либо его зависимости Second.h начиналась новая компиляция Example.cpp а затем новый Example.o линковался со старыми Second.o и Third.o

Для этого напишем Makefile aomake

all: simple simple: Example.o Second.o Third.o g++ Example.o Second.o Third.o - Simple Example.o: Example.cpp Second.h g++ -c Example.cpp

Отступы нужно ставить табуляцией

Смотрим на последние две строки:

Если Second.h или Example.cpp (в который включен Second.h) изменились нужно компилировать файл Example.cpp после чего получается object файл Example.o и, как видно из первых двух строк - после обновления Example.o все object файлы линкуются.

Выигрыш в этой ситуации заключается в том, что нам не нужно было перекомпилировать Second.cpp и Third.cpp мы просто перелинковали уже существующие Second.o Third.o с новым Example.o

Чтобы запустить этот файл нужно к команде make добавить опцию f и название файла

У файла Second.cpp две зависимости: Second.h и Third.h

У файла Third.cpp только одна зависимость: Third.h

Учтём эти зависимости в нашем aomake

all: simple simple: Example.o Second.o Third.o g++ Example.o Second.o Third.o - Simple Second.o: Second.cpp Second.h Third.h g++ -c Second.cpp Third.o: Third.cpp Third.h g++ -c Third.cpp Example.o: Example.cpp Second.h g++ -c Example.cpp

Ещё одной полезной опцией является j

-j - jobs Определяет число работ - jobs (commands) которые запускаются одновременно.

Если указано больше чем одна -j опция, то применяться будет последняя.

Если -j опция дана без аргументов make не будет ограничивать количество работ запускаемых одновременно. То есть запуститься сможет неограниченное количество работ одновременно.

Более подробную информацию по Makefile вы можете найти в статье «makefile tutorial»

Install

Make - это не единственный способ устанавливать программы под linux. Более того, за сорок с лишним лет существования утилиты make вышло много её версий.

Прежде чем ставить что-то по-старинке с make install - советую изучить checkinstall

Читайте также: