Linuxを日常的に使う実験ブログ

Arch Linuxでdebパッケージやrpmパッケージを扱う方法

 2014-06-24

 Arch Linux

こんにちは。今回のテーマはArch Linuxでrpmやdebパッケージを扱う方法です。本来ならば、これらのパッケージはArch Linux向けのパッケージではないので使わないで済むならそれに越したことはありません。Pacman用のパッケージを使う方がArch本来の透明性とシンプルさを維持できると思います。 しかし、そんなキレイ事ばかり言ってられない時もあります。インストールしたいソフトが公式リポジトリにない、AURにもない、ソースも公開されてない・・・唯一Debパッケージとrpmパッケージしか無い・・・こんな状況がプリンタドライバ等のプロプライエタリなソフトウェアではあり得る話です。(割と・・・) [adsense02]

rpmやdebパッケージとは何なのか?

そもそも、パッケージファイルとは何でしょうか?とても簡単に言えばインストールしたいファイル(バイナリファイルやデータ等)とインストールのルールが書かれたファイルがセットになった圧縮ファイルです。インストールのルールが書かれたファイルにはとファイルをコピーする住所や依存性のある他のパッケージ等の情報が書かれています。 ということはArch Linuxでrpmやdebパッケージを展開して得られたバイナリファイルやデータファイルはArch Linuxでも使える可能性があるということです。(あくまで可能性です。バイナリ互換性の問題は常につきまといます)

rpmパッケージを扱う

rpmextractのインストール

以下コマンドでrpmextractをインストールします。

# pacman -S rpmextract

展開

rpmパッケージをダウンロードしたディレクトリに移動して展開します。

$ cd [パッケージのあるディレクトリ] $ rpmextract.sh [パッケージ名].rpm

実行例:Brotherプリンタドライバの展開 [bash] $ cd ~/temp $ rpmextract.sh dcpj525ncupswrapper-3.0.0-1.i386.rpm $ ls $ dcpj525ncupswrapper-3.0.0-1.i386.rpm opt usr [/bash] 展開したファイルの扱いはケースバイケースであり、一言では説明できません。一例として、Brother製プリンタドライバの導入例を紹介しておきます。また、パッケージを展開したファイルのバイナリ互換性は保証されていませんので、実行は自己責任でお願いします。

debパッケージを扱う

展開する

debパッケージの場合はarコマンドで展開できます。

$ cd [パッケージのあるディレクトリ] $ ar vx [パッケージ名].deb

このコマンドにより3つのファイルが展開されます。

  1. debian-binary
  2. control.tar.gz
  3. data.tar.gz

以下コマンドでdata.tar.gzを展開すればOKです。

$ tar zxf data.tar.gz

まとめて一発で展開を行う場合は以下コマンドが便利。

$ ar p [パッケージ名].deb data.tar.gz | tar zx

[実行例]:Brotherプリンタ(deb形式)の展開 [bash] $ cd Download/brprint $ ar p dcpj525nlpr-3.0.1-1.i386.deb data.tar.gz | tar zx $ ls $ dcpj525nlpr-3.0.1-1.i386.deb opt usr [/bash] 展開したファイルの使い方はrpmの場合と同様です。

dpkgやrpm、yum等のパッケージマネージャーを使う(非推奨)

AURからdpkgやrpmを導入すれば、dpkgコマンドやrpmコマンドを使って「一応」インストールや削除ができます。AURの使い方はAUR(Arch User Reposytory)を活用する方法をご覧ください。 例えばdpkgを導入したら以下のコマンドでパッケージをインストールできます。

# dpkg -i [パッケージ名].deb

しかし、積極的にオススメはしません。どうしても困った時の裏ワザ程度に考えた方が良いと思います。(システムにお詳しい方は別です。)dpkgやyumを用いた場合も依存性は手動で解決してください。dpkgを使って依存性を解決するとpacmanと競合して違うバージョンのパッケージが混同するなどシステムが不安定になる可能性があります。個人的にはパッケージ管理システムを2つ同居させるというのは気持ち悪いです。

最後に

基本的にはArch Linuxのパッケージ管理はpacmanに一任するべきだと考えています。ほとんどの場合はpacmanとABS(Aarch Build System)で問題ありません。しかし、どうしてもrpmやdebパッケージを扱わなければいけない場合はバイナリ互換性と依存性に十分注意し、扱ってください。 興味のある方は意外に簡単!Debパッケージを自作する方法もご覧ください。 [adsense]