Что такое бинарный пакет (deb, rpm)?
На сегодняшний день поверх линукса разворачивается огромное количество дистрибутивов, каждый из которых предлагает пользователю определенную пакетную базу, каждый элемент которой необходим для развертывания софта на целевой системе.
Репозитории для серверных изданий содержат одни пакеты, хомяки (Home Edition), в свою очередь, могут поставляться с другими: окружения рабочего стола, графические утилиты и т.д. Самыми распространенными расширениями пакетов в Linux являются
.deb (Debian) и
.rpm (Red Hat Package Manager).
Что такое бинарный пакет?
Бинарный пакет - архив, содержащий скомпилированные (готовые к запуску) приложения и набор вспомогательных файлов, необходимых для максимально гибкого и качественного распространения.
Вспомогательные файлы могут включать в себя библиотеки, от которых зависит приложение, конфиги, мануалы с подробным описанием функционала, инструкций по развертыванию, список необходимых зависимостей и т.д.
Примером бинарного пакета может быть обычный apk файл, с которым каждый владелец андройда когда-либо взаимодействовал. Прелесть его в том, что разработчику один раз нужно скомпилировать и собрать софт под целевую систему, прописать правила инсталляции и вуаля - все окружение для бесперебойной работы настраивается на этапе установки.
Пользователю не нужно подтягивать исходный код приложения и решать головоломку с его компиляцией - на его стороне все решается одним кликом.
Чем отличается .deb от .rpm?
Пакеты с расширением
.deb используются в "Debian based" дистрибутивах: Ubuntu, Mint, Deepin, AntiX, Kali и т.д. Установка пакетов данного типа выполняется через утилиту
dpkg (Debian Package):
dpkg -i packageName.deb
Также существует ряд утилит семейства dpkg, которые входят в пакет
dpkg-dev и необходимых для создания и администрирования архивов формата .deb:
$ dpkg -L dpkg-dev | grep -i bin
/usr/bin/dpkg-architecture
/usr/bin/dpkg-buildapi
/usr/bin/dpkg-buildflags
...
А что же такое
apt (Advanced Package Tool)? Apt - это набор утилит высокого уровня, необходимых для администрирования .deb пакетов и работы с внешними репозиториями.
Apt, в отличии от dpkg, позволяет подтягивать из локальных либо удаленных репозиториев необходимые зависимости, мониторить список доступных пакетов, следить за обновлениями и много-много чего еще:
$ apt-cache search mesa
libd3dadapter9-mesa - state-tracker for Direct3D9
mesa-vdpau-drivers - Mesa VDPAU video acceleration drivers
mesa-vulkan-drivers - Mesa Vulkan graphics drivers
...
Прописать список источников, с которыми менеджер apt будет работать, можно в файл "
/etc/apt/sources.list":
$ cat /etc/apt/sources.list
Types: deb
URIs: http://ports.ubuntu.com/ubuntu-ports/
Suites: noble noble-updates noble-backports
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
RPM - это расширение для пакетов, используемых в операционных системах, основанных на Red Hat, это вся ветка дистрибутивов: Fedora, OpenSUSE, Red Hat, CentOS и т д.
Изначально это пакетное расширение и одноименный менеджер были разработаны в компании Red Hat еще в 1997 году и только для их дистрибутива, но затем все это пошло дальше и распространилось в другие операционные системы.
По аналогии с
dpkg, утилита rpm используется для того, чтобы локально обслуживать
.rpm пакеты. Для более высокоуровневого взаимодействия и возможности работать с репозиториями, необходимо использовать ряд пакетных менеджеров: zypper (OpenSUSE), dnf (Fedora), urpmi (Mageia), yum - для многих дистрибутивов, основанных на Fedora:
rpm -i package.rpm
yum install package.rpm
dnf install package.rpm
Тема пакетирования и распространения софта очень обширная: существует множество техник и практик, которым нужно следовать для того, чтобы качественно разворачивать программы на системах. Пишите, что бы вы хотели узнать в рамках топика, разгоним всю эту историю до серии постов.