DESTDIR против параметров префикса в системе сборки? - PullRequest
0 голосов
/ 30 мая 2018

Может кто-нибудь объяснить мне назначение переменной $(DESTDIR) в системе сборки?Я имею в виду, что я знаю, что он указывает временный каталог для установленного в данный момент пакета, но я не представляю, как его использовать на практике.

Чтобы уточнить, ну, я знаю, например, что такое опция --prefixесли мы укажем систему bulds как ./configure --prefix="/usr", то все файлы пакета будут принадлежать /usr, как /usr/lib, /usr/share и т. д., но в Makefiles я также видел следующие конструкции:

$(DESTDIR)/$(prefix)

И какова цель этого?Короче говоря, есть ли разница между DESTDIR и prefix и когда оба должны использоваться?

1 Ответ

0 голосов
/ 30 мая 2018

Да, есть очень важное отличие ... в некоторых средах.

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

DESTDIR позволяет людям фактически устанавливать содержимоегде-то, кроме фактического префикса: DESTDIR добавляется перед всеми значениями префикса, так что место установки имеет точно такую ​​же структуру каталогов / структуру, что и окончательное местоположение, но имеет корень где-то кроме /.

. Это можетбыть полезным по разным причинам.Одним из примеров являются такие средства, как GNU stow , которые позволяют устанавливать несколько экземпляров одновременно и легко контролировать.Другие примеры - это создание файлов пакета с использованием RPM или DEB: после установки пакета вы хотите, чтобы он был распакован в корне, но для создания пакета вам необходимо установить его в другом месте.

И другие люди используют егопо своим собственным причинам: в основном все сводится к тому, что DESTDIR используется для создания «промежуточной области» для установки, без фактической установки в конечное местоположение.

И т. д.

...