Alien linux convert deb to rpm

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.

Читайте также:  Разметить диск linux консоль

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.

Читайте также:  Slackware linux установка пакетов

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.

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, чтобы продолжить.

Читайте также:  Изменить время linux ubuntu

После завершения пересборки вы можете установить его должным образом.

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 и наоборот, чтобы установить пакеты в крайнем случае, когда такие программы недоступны в репозиториях или в виде распространяемого исходного кода. Вы захотите добавить эту статью в закладки, потому что всем нам когда-нибудь понадобится инопланетянин.

Не стесняйтесь поделиться своими мыслями об этой статье, используя форму ниже.

Источник

Оцените статью
Adblock
detector