- Use alien to convert Deb to RPM (and RPM to Deb)
- Installing Alien
- Installation on Debian systems
- Installation on Redhat systems
- Converting an RPM to Debian package with Alien
- Converting a Debian package to RPM with Alien
- How does Alien work?
- Common Alien issues
- Dependency Chain
- Post/Pre/Uninstall scripts
- Service initialization
- Useful Alien options
- Conclusion
- Set up your own package repository.
- Как конвертировать файлы DEB в RPM в Linux
- Как преобразовать файлы DEB в RPM в Linux
- Установка Alien и его зависимостей
- Redhat/CentOS
- Fedora
- Debian/Ubuntu
- Преобразование файлов DEB в файлы RPM
- Установка конвертирования RPM-файла
- Похожие записи:
- Как конвертировать из RPM в DEB и DEB в RPM-пакет с помощью Alien
- Шаг 3: Преобразование пакета .rpm в .deb
- Краткое содержание
Use alien to convert Deb to RPM (and RPM to Deb)
Alien is a command line tool that allows you to convert Debian packages to RPM packages, and vice versa. This blog post will illustrate how to convert a Debian package to an RPM and similarly, how to convert an RPM package to a Debian package.
Installing Alien
Installation on Debian systems
alien can usually just be installed using apt-get on most Debian based systems. You’ll also want fakeroot .
$ sudo apt-get install alien fakeroot
Installation on Redhat systems
You’ll need the following dependencies installed.
$ yum install xz xz-devel perl-ExtUtils-Embed gcc make fakeroot
Note: to convert RPM to Debian Packages, you’ll need to install all the Debian tools (dpkg, dpkg-dev, debhelper), which is non-trivial on Redhat systems, so we recommend just finding a Debian system instead.
$ wget http://http.debian.net/debian/pool/main/a/alien/alien_8.95.tar.xz
Visit the newly extracted directory.
Converting an RPM to Debian package with Alien
For the example RPM package, we’ll download our packagecloud-test-1.1-1.x86_64.rpm package, from the packagecloud-test-packages repository.
$ wget --content-disposition https://packagecloud.io/computology/packagecloud-test-packages/packages/el/6/packagecloud-test-1.1-1.x86_64.rpm/download
Now, just run alien on it (using fakeroot ).
$ fakeroot alien packagecloud-test-1.1-1.x86_64.rpm packagecloud-test_1.1-2_amd64.deb generated
Note how it correctly changed RPM’s architecture x86_64 to the Debian nomenclature: amd64 .
You should now have a packagecloud-test_1.1-2_amd64.deb package in that same directory.
Let’s just install it with dpkg -i .
$ dpkg -i packagecloud-test_1.1-2_amd64.deb
Finally, you should be able to run our packagecloud_hello program to verify everything worked.
$ packagecloud_hello Hi from the packagecloud crew's test program
Converting a Debian package to RPM with Alien
For the example Debian package, we’ll download our packagecloud-test_1.1-2_amd64.deb package from the packagecloud-test-packages repository.
$ wget --content-disposition https://packagecloud.io/computology/packagecloud-test-packages/packages/ubuntu/precise/packagecloud-test_1.1-2_amd64.deb/download
Again, we run alien on it (in a fakeroot ), but this time with the —to-rpm flag.
$ fakeroot talien --to-rpm packagecloud-test_1.1-2_amd64.deb packagecloud-test-1.1-3.x86_64.rpm generated
You should now have a packagecloud-test-1.1-3.x86_64.rpm package in that same directory.
Let’s install that RPM on a Redhat based system.
$ rpm -ivh packagecloud-test-1.1-3.x86_64.rpm
Finally, you should be able to run our test program to verify everything worked.
$ packagecloud_hello Hi from the packagecloud crew's test program
How does Alien work?
Because Debian and RPM packages are a special kind of archive, automatically transforming between them is possible. For example, to transform an RPM to a Debian package, you would move the contents of an RPM cpio archive, to an ar archive.
Common Alien issues
It’s important to note that since Alien is just converting between package archive formats, the package you get may not always install, or work as desired, once installed.
Dependency Chain
It’s entirely possible that the original package dependency chain differs from the desired target system. For instance, a binary in the original package was linked against glibc-2.8 but the target system only has glibc-2.1 installed. It’s unlikely this package will work, and you might have to build a native RPM or Debian package instead.
Post/Pre/Uninstall scripts
Debian and RPM packages have shell scripts that can run before and/or after your install (during uninstall, also). By default, Alien will not include these in the converted package, as there is a high likelihood scripts written for RPM packages won’t work for a Debian system, and vice versa. It might be worth inspecting your original Debian or RPM package to see if the included scripts will work and passing —scripts to Alien, if so.
Service initialization
Converting service packages (like redis, apache, mysql, etc) with Alien is tricky because these packages tend to register themselves with the initialization service provided by the native operating system. For example, newer Ubuntu packages will want to use systemd instead of upstart or sysvinit, which is what Redhat systems usually want. The package will install successfully, but the service will not be running, as expected.
Useful Alien options
If you want to bump the version number, you can use —bump=number .
$ sudo alien --bump=5 --to-rpm packagecloud-test_1.1-2_amd64.deb packagecloud-test-1.1-7.x86_64.rpm generated
To munge/fix permissions, you can use —fixperms .
$ sudo alien --fixperms --to-rpm packagecloud-test_1.1-2_amd64.deb
Install scripts are not included by default, but you can include them using —scripts .
$ sudo alien --scripts packagecloud-test-1.1-1.x86_64.rpm
You can run lintian (must already be installed) on the generated Debian package by using —test .
$ sudo alien --test packagecloud-test-1.1-1.x86_64.rpm
Note: Running —test with —to-rpm does not run rpmlint , as you may expect.
Conclusion
While finding or building native Debian or RPM packages is ideal, it’s still useful to know how to convert between them in a pinch. Be sure to check out the official alien website for more information.
Set up your own package repository.
Fast, reliable, and secure software starts here.
Fast, reliable, and secure software starts here.
Как конвертировать файлы DEB в RPM в Linux
Системы Redhat/Fedora/CentOS требуют для установки пакетов .rpm. Иногда вы можете обнаружить, что пакет RPM недоступен для нужной вам программы или утилиты, но вместо него доступен пакет DEB. Пакеты DEB используются для установки в системах Ubuntu/Debian и не могут быть использованы непосредственно в системах Redhat/Fedora/CentOS. Поэтому вам нужно будет преобразовать DEB в RPM-пакет, чтобы продолжить установку. В этой статье мы рассмотрим, как конвертировать файлы DEB в RPM в Linux.
Как преобразовать файлы DEB в RPM в Linux
Мы будем использовать программу Alien для преобразования .deb в .rpm пакет.
Установка Alien и его зависимостей
Мы перечислили шаги как для RPM, так и для DEB-системы. Вы можете использовать любую из них в зависимости от вашей системы Linux.
Redhat/CentOS
Откройте терминал и выполните следующую команду для установки программы Alien. Сначала нам нужно включить EPEL и рабочий стол Nux.
yum install epel-release rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
Установите последнюю версию рабочего стола Nux. Мы установили версию 0.5. Вы можете установить другую версию в соответствии с вашими требованиями.
rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm
Наконец, установите пакет alien.
yum update && yum install alien
Fedora
В Fedora вам нужно выполнить всего одну команду, показанную ниже.
yum update && yum install alien
Debian/Ubuntu
Вот команда для установки пакета alien в Ubuntu/Debian Linux.
sudo aptitude install alien
Преобразование файлов DEB в файлы RPM
Вы можете использовать опцию -r для преобразования DEB в RPM-файлы. Вот пример. Мы используем команду wget для загрузки .deb файла, а затем используем команду alien двумя разными способами для преобразования его в RPM файл. Они оба дают одинаковый результат.
wget http://ftp.us.debian.org/debian/pool/main/d/dateutils/dateutils_0.3.1-1.1_amd64.deb alien -r dateutils_0.3.1-1.1_amd64.deb
alien --to-rpm --scripts dateutils_0.3.1-1.1_amd64.deb
Установка конвертирования RPM-файла
Если вы попытаетесь напрямую установить сгенерированный выше RPM-файл, иногда он может выдать сообщение об ошибке из-за совместимости параметров пакета. В сообщении будут перечислены 1 или несколько файлов, вызывающих конфликт, например
Preparing . file / from install of dateutils_0.3.1-1.1_amd64.deb conflicts with . file /test.fgh from install of dateutils_0.3.1-1.1_amd64.deb conflicts with . .
Поэтому нам нужно выполнить следующую команду, чтобы включить репозиторий epel-testing и установить инструмент rpmrebuild для изменения параметров установки пакета.
yum --enablerepo=epel-testing install rpmrebuild
Теперь выполните следующую команду для пересборки пакета
rpmrebuild -pe dateutils-0.3.1-2.1.x86_64.rpm
Это откроет настройки пакета в текстовом редакторе. Перейдите в раздел %files% и удалите строки, которые относятся к конфликтующим файлам, перечисленным выше.
%files% %dir %attr. "/" %dir %attr. "/test.fgh"
Сохраните и выйдите из файла. При выходе вас спросят, хотите ли вы продолжить перестройку. Введите Y, чтобы продолжить.
После завершения пересборки вы можете установить его должным образом.
rpm -Uvh /root/rpmbuild/RPMS/x86_64/dateutils-0.3.1-2.1.x86_64.rpm
После завершения установки вы можете проверить ее с помощью следующей команды.
ls -l /usr/bin | grep dateutils
Вот и все. В этой статье мы узнали, как преобразовать DEB в RPM-файл и установить его в системах Redhat/Fedora/CentOS Linux.
Похожие записи:
Как конвертировать из RPM в DEB и DEB в RPM-пакет с помощью Alien
Я уверен, вы уже знаете, что существует множество способов установки программного обеспечения в Linux: использование системы управления пакетами, предоставляемой вашим дистрибутивом (например, aptitude, yum или zypper), компиляция из исходного кода (хотя и несколько редкий в наши дни, это был единственный метод, доступный в первые дни Linux), или использование низкоуровневого инструмента, такого как dpkg или rpm с .deb %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 должен быть сгенерирован и готов к установке:
После установки вы можете убедиться, что zsh добавлен в список допустимых оболочек:
Краткое содержание
В этой статье мы объяснили, как преобразовать .rpm в .deb и наоборот, чтобы установить пакеты в крайнем случае, когда такие программы недоступны в репозиториях или в виде распространяемого исходного кода. Вы захотите добавить эту статью в закладки, потому что всем нам когда-нибудь понадобится инопланетянин.
Не стесняйтесь поделиться своими мыслями об этой статье, используя форму ниже.