Как конвертировать пакет из RPM в DEB и из DEB в пакет RPM с помощью Alien
Как я уверен, вы уже знаете, существует множество способов установки программного обеспечения в Linux: использование системы управления пакетами, предоставляемой вашим дистрибутивом (aptitude, yum или zypper, если назвать несколько примеров), компиляция из исходного кода (хотя и несколько редкость в наши дни, это был единственный метод, доступный на заре Linux), или использование инструмента низкого уровня, такого как dpkg или rpm с .deb< и .rpm автономные предварительно скомпилированные пакеты соответственно.
В этой статье мы познакомим вас с alien, инструментом, который конвертирует различные форматы пакетов Linux, с .rpm в .deb (и наоборот). наоборот) является наиболее распространенным использованием.
Этот инструмент, даже если его автор больше не поддерживает его и заявляет на своем веб-сайте, что Alien, вероятно, всегда будет оставаться в экспериментальном статусе, может пригодиться, если вам нужен определенный тип пакета, но вы можете найти эту программу только в другом формате пакета.
Например, alien однажды спас меня, когда я искал драйвер .deb для струйного принтера и не смог его найти – производитель предоставил только пакет .rpm. Я установил Alien, преобразовал пакет и вскоре смог без проблем пользоваться своим принтером.
Тем не менее, мы должны уточнить, что эту утилиту не следует использовать для замены важных системных файлов и библиотек, поскольку в разных дистрибутивах они настраиваются по-разному. Используйте Alien только в крайнем случае, если предложенные в начале этой статьи методы установки не подходят для требуемой программы.
И последнее, но не менее важное: мы должны отметить, что хотя в этой статье мы будем использовать CentOS и Debian, известно, что Alien также работает в Slackware. и даже в Solaris, помимо первых двух дистрибутивов и их соответствующих семейств.
Шаг 1. Установка Alien и зависимостей
Чтобы установить alien в CentOS/RHEL 7, вам необходимо включить EPEL и Nux Репозитории Dextop (да, это Dextop, а не Desktop) в следующем порядке:
yum install epel-release
rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
Последняя версия пакета, поддерживающего этот репозиторий, на данный момент — 0.5 (опубликована 10 августа 2015 г.). Прежде чем продолжить, вам следует проверить http://li.nux.ro/download/nux/dextop/el7/x86_64/, чтобы узнать, существует ли более новая версия:
rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm
тогда делай,
yum update && yum install alien
В Fedora вам нужно будет выполнить только последнюю команду.
В Debian и его производных просто выполните:
aptitude install alien
Шаг 2. Преобразование пакета .deb в .rpm
Для этого теста мы выбрали dateutils, который предоставляет набор утилит date и time для работы с большими объемами финансовых данных. Мы загрузим пакет .deb в нашу систему CentOS 7, преобразуем его в .rpm и установим:
cat /etc/centos-release
wget http://ftp.us.debian.org/debian/pool/main/d/dateutils/dateutils_0.3.1-1.1_amd64.deb
alien --to-rpm --scripts dateutils_0.3.1-1.1_amd64.deb
Важно: (Обратите внимание, что по умолчанию Alien увеличивает младший номер версии целевого пакета. Если вы хотите переопределить это поведение, добавьте – флаг сохранения версии).
Если мы попытаемся установить пакет сразу, мы столкнемся с небольшой проблемой:
rpm -Uvh dateutils-0.3.1-2.1.x86_64.rpm
Чтобы решить эту проблему, мы включим репозиторий epel-testing и установим утилиту rpmrebuild для редактирования настроек пересобираемого пакета:
yum --enablerepo=epel-testing install rpmrebuild
Тогда беги,
rpmrebuild -pe dateutils-0.3.1-2.1.x86_64.rpm
Откроется текстовый редактор по умолчанию. Перейдите в раздел %files
и удалите строки, относящиеся к каталогам, указанным в сообщении об ошибке, затем сохраните файл и выйдите:
При выходе из файла вам будет предложено продолжить перестроение. Если вы выберете Y, файл будет перестроен в указанный каталог (отличный от текущего рабочего каталога):
rpmrebuild –pe dateutils-0.3.1-2.1.x86_64.rpm
Теперь вы можете приступить к установке пакета и проверке как обычно:
rpm -Uvh /root/rpmbuild/RPMS/x86_64/dateutils-0.3.1-2.1.x86_64.rpm
rpm -qa | grep dateutils
Наконец, вы можете перечислить отдельные инструменты, включенные в dateutils, и также просмотреть соответствующие справочные страницы:
ls -l /usr/bin | grep dateutils
Шаг 3. Преобразование пакета .rpm в .deb
В этом разделе мы покажем, как преобразовать .rpm в .deb. В 32-битной версии Debian Wheezy загрузим пакет .rpm для оболочки zsh из ОС CentOS 6 . репозиторий. Обратите внимание, что эта оболочка по умолчанию недоступна в Debian и его производных.
cat /etc/shells
lsb_release -a | tail -n 4
wget http://mirror.centos.org/centos/6/os/i386/Packages/zsh-4.3.11-4.el6.centos.i686.rpm
alien --to-deb --scripts zsh-4.3.11-4.el6.centos.i686.rpm
Сообщения об отсутствии подписи можно смело игнорировать:
Через несколько секунд файл .deb должен быть создан и готов к установке:
dpkg -i zsh_4.3.11-5_i386.deb
После установки вы можете убедиться, что zsh добавлен в список допустимых оболочек:
cat /etc/shells
Краткое содержание
В этой статье мы объяснили, как преобразовать .rpm в .deb и наоборот, чтобы установить пакеты в крайнем случае, когда такие программы недоступны в репозиториях или в виде распространяемого исходного кода. Вы захотите добавить эту статью в закладки, потому что всем нам рано или поздно понадобится инопланетянин.
Не стесняйтесь поделиться своими мыслями об этой статье, используя форму ниже.