Alienを使用してRPMからDEBおよびDEBからRPMパッケージに変換する方法


すでにご存知のとおり、Linuxにソフトウェアをインストールする方法はたくさんあります。ディストリビューションが提供するパッケージ管理システム(aptitude、yum、zypperなど)を使用して、ソースからコンパイルします(多少はありますが)。最近ではまれですが、Linuxの初期の頃に利用できた唯一の方法でした)、またはdpkgやrpmなどの低レベルのツールをそれぞれ.debおよび.rpmスタンドアロンのプリコンパイル済みパッケージで利用していました。

この記事では、さまざまなLinuxパッケージ形式間で変換するツールであるalienを紹介します。最も一般的な使用法は、.rpmから.deb(およびその逆)です。

このツールは、作者がもはやそれを維持しておらず、エイリアンはおそらく常に実験的な状態のままであると彼のウェブサイトで述べている場合でも、特定のタイプのパッケージが必要であるが、そのプログラムを別のパッケージ形式でしか見つけることができない場合に役立ちます。

たとえば、エイリアンは、インクジェットプリンタ用の.debドライバを探していたときに、何も見つからなかったときに1日を節約しました。製造元は、.rpmパッケージしか提供していませんでした。エイリアンをインストールしてパッケージを変換したところ、やがて問題なくプリンターを使用できるようになりました。

ただし、重要なシステムファイルやライブラリはディストリビューション間で設定が異なるため、このユーティリティを使用して重要なシステムファイルやライブラリを置き換えることはできません。この記事の冒頭で提案されているインストール方法が必要なプログラムの問題外である場合にのみ、最後の手段としてエイリアンを使用してください。

最後になりましたが、この記事ではCentOSとDebianを使用しますが、エイリアンは最初の2つのディストリビューションとそれぞれのファミリに加えて、SlackwareやSolarisでも動作することが知られています。

ステップ1:エイリアンと依存関係をインストールする

CentOS/RHEL 7にエイリアンをインストールするには、EPELリポジトリとNux Dextop(デスクトップではなくDextop)リポジトリを次の順序で有効にする必要があります。

# yum install epel-release
# rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro

このリポジトリを有効にするパッケージの最新バージョンは現在0.5です(2015年8月10日に公開)。先に進む前に、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を選択しました。 .debパッケージをCentOS7ボックスにダウンロードし、.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

重要:(デフォルトでは、エイリアンがターゲットパッケージのバージョンマイナー番号を増やす方法に注意してください。この動作をオーバーライドする場合は、–keep-versionフラグを追加してください)。

パッケージをすぐにインストールしようとすると、わずかな問題が発生します。

# 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ビットのDebianWheezyボックスで、CentOS 6OSリポジトリからzshシェルの.rpmパッケージをダウンロードしましょう。このシェルは、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に、またはその逆に変換して、そのようなプログラムがリポジトリで利用できない場合の最後の手段として、または配布可能なソースコードとしてパッケージをインストールする方法について説明しました。私たち全員がいつか別のエイリアンを必要とするので、あなたはこの記事をブックマークしたいと思うでしょう。

以下のフォームを使用して、この記事についてのご意見をお気軽に共有してください。