Содержание

пакет ПО

Пакет ПО - это архив, содержащий ПО (файлы, конфиги, библиотеки и тп) и инструкции/метаданные для его установки, обновления и удаления. Распространены несколько форматов пакетов: DEB и RPM.

Бинарный пакет ПО - пакет, содержащий не исхдные коды и инструкии для их сборки, а уже готовый билд.

Исходные пакеты (src-пакет) - пакет, содержащий исходные коды и инструкции по сборке и установке программы.

Метапакеты - пакеты, которые сами по себе не содержат программ, но служат для установки других пакетов или зависимостей.

Помимо классических пакетов ПО есть более современные технологии упаковки ПО:

О назначениях директорий

(в контексте префиксов (PREFIX))

(в соответствии с «Filesystem Hierarchy Standard» (см man 7 hier))

Подробнее об иерархиях файлов (префиксах) далее.

Подробнее о прификсах

Префикс /
Вряд ли когда-нибудь вам придётся его выбирать. Он используется для программ, критичных для ранних стадий загрузки ОС (т. е. критичные элементы для загрузки находятся в /bin, /lib и т. д.) (впрочем, даже если вам нужно установить программу в /, её сперва устанавливают в /usr, т. е. собирают и устанавливают с префиксом /usr, а потом перемещают необходимое в / \[т. е. перемещают из /usr/bin в /bin, скажем], во всяком случае именно так поступают авторы Linux From Scratch 7.10 с пакетом, скажем, bash).

Префикс /usr
Стандартный префикс, используемый обычно для программ, установленных через менеджер пакетов. То есть если вы установили программу через менеджер пакетов, она ведёт себя так, словно она собрана и установлена на вашей системе с префиксом /usr. Самому устанавливать пакеты с префиксом /usr нельзя.

Префикс /usr/local
Отличный префикс для установки туда программ самостоятельно. Хорош тем, что /usr/local/bin есть в дефолтном PATH (во всяком случае в дебиане). То есть сразу после установки программы вы сможете просто запускать программу по названию. Потому что бинарник лежит в /usr/local/bin, а /usr/local/bin есть в PATH.

Префиксы, соответствующие домашним каталогам (/home/username)
Советую в случае, когда хочется поставить «только для себя», т. е. только для одного юзера. Или когда нет прав root.

При любой установке пакетов в один префикс (что почти неизбежно), там все программы лежат смешанно. Вот допустим, вы установили библиотеку «foo», а потом библиотеку «bar». Обе в этот prefix. Тогда дерево может выглядеть так (в совсем упрощённом виде):

/usr/local/include/foo.h
/usr/local/include/bar.h
/usr/local/lib/libfoo.so
/usr/local/lib/libbar.so

Всё смешано. Нет единой папки, которая бы содержала «всё, связанное с foo» и другой папки, которая бы содержала «всё, связанное с bar». (GoboLinux решает эту проблему)

Префиксы вида /opt/XXX. Папку /opt предполагается использовать следующим образом: в ней нужно создавать подкаталоги, называть их названиями пакетов и использовать эти подкаталоги как префиксы. При таком подходе указанная выше проблема сваливания в кучу (если считать это проблемой) исчезает. Каждый пакет будет установлен в свой каталог. Приведённый выше пример с «foo» и «bar» будет выглядеть так (я бы посоветовал в названии подкаталогов в /opt указывать ещё и номер версии):

/opt/foo-1.0/include/foo.h
/opt/foo-1.0/lib/libfoo.so
/opt/bar-2.0/include/bar.h
/opt/bar-2.0/lib/libbar.so

Недостаток у такого решения тоже есть. Вам придётся самому добавлять все эти бесчисленные каталоги /opt/foo-1.0/bin (для каждого пакета) в PATH