Где лучший путь для установки всех файлов пакета при компиляции?
Например - я хочу установить ProFTPd, так что есть возможность
--prefix=/usr/local/proftpd
Это означает, что все файлы после компиляции (включая двоичные файлы и файлы конфигурации) будут храниться здесь. Как вы знаете, все пакеты, которые устанавливаются через систему пакетов (например, zypper в SuSE или apt в Ubuntu), обычно хранят свои файлы конфигурации в / etc / и двоичные файлы в / sbin /, а также хранят ссылку в моем $ PATH, поэтому я могу запустить, просто набрав proftpd (без / sbin).
Я считаю, что огромное преимущество пакетов, устанавливаемых через систему пакетов, - это простой процесс удаления. Я хотел бы иметь возможность также легко удалять скомпилированные пакеты.
Я думаю, что смогу создать какой-нибудь командный файл, который я смогу использовать так:
uninstall --package=proftpd
И мой скрипт найдет все файлы proftpd по обычным путям (/ etc, / sbin) и удалит их с помощью rm.
Есть ли рекомендации, где хранить все эти файлы, или есть какие-либо (не) преимущества моего первого примера (--prefix = / usr / local / proftpd)?
Я действительно не думаю, что хорошо иметь 2 пути с файлами конфигурации и двоичными файлами, но, возможно, я неправильно понимаю основные принципы Linux ... :-)
Наилучшие места для установки пакетов на вашем компьютере - это
/usr/local
если у вас есть права администратора и вы хотите, чтобы все использовали вашу программу, или$HOME
если вы хотите просто сделать копию для себя.Обычно вы устанавливаете префикс
--prefix=/usr/local
так, чтобы файлы приложения сохранялись в/usr/local/bin
настройках/usr/local/etc
и т. Д.Преимущество использования этих стандартных мест в том, что они стандартные. Люди знают, где искать файлы. Например,
/usr/local/bin
он почти всегда у всех$PATH
, так что вам не придется возиться с$PATH
переменной, чтобы заставить ее работать. Точно так же библиотеки обнаруживаются путем проверки,$LD_LIBRARY_PATH
но/usr/local/lib
обычно проверяются по умолчанию, поэтому вам не нужно добавлять их вручную и так далее.Относительно удаления: После того, как вы запустите, сконфигурируете и соберете программу, затем
make install
установите ее для вас иmake uninstall
автоматически удалите файлы.источник
На самом деле, лучший подход, вероятно, заключается в создании пакета, который вы можете установить.
Многие приложения поставляются с необходимыми файлами для создания пакетов RPM или DEB. Если они этого не делают, есть инструменты для автоматического создания пакетов, например, checkinstall .
checkinstall
будет следить за операциямиmake install
и перенаправлять установленные файлы, чтобы создать из них пакет DEB или RPM. Таким образом, вы получаете обычный пакет, который интегрируется с другими вашими пакетами.Есть некоторые предостережения (вы не получите зависимости, а некоторые очень сложные сценарии установки могут потерпеть неудачу), но обычно это работает очень хорошо.
источник
Лучше всего следовать стандарту Linux Standard Base , особенно стандарту иерархии файловой системы .
источник