Alien [1] は、異なる Linux パッケージフォーマット間の変換を行うコンピュータプログラムです。Joey Hess 氏によって作成され、現在は Kyle Barry 氏によってメンテナンスされています。
以前、Debian / Ubuntu の DEB パッケージを Fedora / CentOS 用の RPM パッケージへ変換するために使ったことがありましたが、逆のケースでは使ったことが無かったので、備忘録としました。なお、参考サイト [2] で説明されている内容を参考にさせていただきました。
使用した OS は下記の通りです。
Ubuntu Desktop 20.10 | x86_64 |
Alien のインストール
まず、alien をインストールします。
bitwalk@ubuntu-pc:~$ sudo apt install alien パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 以下の追加パッケージがインストールされます: autoconf automake autopoint autotools-dev binutils binutils-common binutils-x86-64-linux-gnu build-essential debhelper debugedit dh-autoreconf dh-strip-nondeterminism dpkg-dev dwz fakeroot g++ g++-10 gcc gcc-10 gettext intltool-debian libalgorithm-diff-perl libalgorithm-diff-xs-perl libalgorithm-merge-perl libarchive-cpio-perl libarchive-zip-perl libasan6 libatomic1 libbinutils libc-dev-bin libc6-dev libcroco3 libcrypt-dev libctf-nobfd0 libctf0 libdebhelper-perl libfakeroot libfile-stripnondeterminism-perl libgcc-10-dev libitm1 liblsan0 libltdl-dev liblua5.2-0 libmail-sendmail-perl libnsl-dev librpm8 librpmbuild8 librpmio8 librpmsign8 libsigsegv2 libstdc++-10-dev libsub-override-perl libsys-hostname-long-perl libtirpc-dev libtool libtsan0 libubsan1 linux-libc-dev m4 make manpages-dev po-debconf rpcsvc-proto rpm rpm-common rpm2cpio 提案パッケージ: lintian autoconf-archive gnu-standards autoconf-doc binutils-doc dh-make rpm-i18n debian-keyring g++-multilib g++-10-multilib gcc-10-doc gcc-multilib flex bison gcc-doc gcc-10-multilib gcc-10-locales gettext-doc libasprintf-dev libgettextpo-dev glibc-doc libtool-doc libstdc++-10-doc gfortran | fortran95-compiler gcj-jdk m4-doc make-doc libmail-box-perl elfutils rpmlint rpm2html 以下のパッケージが新たにインストールされます: alien autoconf automake autopoint autotools-dev binutils binutils-common binutils-x86-64-linux-gnu build-essential debhelper debugedit dh-autoreconf dh-strip-nondeterminism dpkg-dev dwz fakeroot g++ g++-10 gcc gcc-10 gettext intltool-debian libalgorithm-diff-perl libalgorithm-diff-xs-perl libalgorithm-merge-perl libarchive-cpio-perl libarchive-zip-perl libasan6 libatomic1 libbinutils libc-dev-bin libc6-dev libcroco3 libcrypt-dev libctf-nobfd0 libctf0 libdebhelper-perl libfakeroot libfile-stripnondeterminism-perl libgcc-10-dev libitm1 liblsan0 libltdl-dev liblua5.2-0 libmail-sendmail-perl libnsl-dev librpm8 librpmbuild8 librpmio8 librpmsign8 libsigsegv2 libstdc++-10-dev libsub-override-perl libsys-hostname-long-perl libtirpc-dev libtool libtsan0 libubsan1 linux-libc-dev m4 make manpages-dev po-debconf rpcsvc-proto rpm rpm-common rpm2cpio アップグレード: 0 個、新規インストール: 67 個、削除: 0 個、保留: 0 個。 45.0 MB のアーカイブを取得する必要があります。 この操作後に追加で 188 MB のディスク容量が消費されます。 続行しますか? [Y/n] y : : : bitwalk@ubuntu-pc:~$
変換する RPM パッケージ
DEB パッケージへ変換するパッケージには、最近、本ブログで取り組んでいるタッチスクリーンデバイスのファームウェア (Silead MSSL1680) の RPM を例として使います。
wget で下記のようにダウンロードします。
bitwalk@ubuntu-pc:~$ cd ダウンロード bitwalk@ubuntu-pc:~/ダウンロード$ wget https://osdn.net/downloads/users/27/27216/mssl1680-firmware-jumper-ezpad6pro-1.0.git20201209.e247c34-2.fc33.noarch.rpm --2021-01-18 10:01:44-- https://osdn.net/downloads/users/27/27216/mssl1680-firmware-jumper-ezpad6pro-1.0.git20201209.e247c34-2.fc33.noarch.rpm osdn.net (osdn.net) をDNSに問いあわせています... 202.221.179.17 osdn.net (osdn.net)|202.221.179.17|:443 に接続しています... 接続しました。 HTTP による接続要求を送信しました、応答を待っています... 302 Found 場所: https://osdn.net/frs/chamber_redir.php?m=jaist&f=%2Fusers%2F27%2F27216%2Fmssl1680-firmware-jumper-ezpad6pro-1.0.gipm [続く] --2021-01-18 10:01:48-- https://jaist.dl.osdn.jp/users/27/27216/mssl1680-firmware-jumper-ezpad6pro-1.0.git20201209.e247 c34-2.fc33.noarch.rpm jaist.dl.osdn.jp (jaist.dl.osdn.jp) をDNSに問いあわせています... 150.65.7.130, 2001:df0:2ed:feed::feed jaist.dl.osdn.jp (jaist.dl.osdn.jp)|150.65.7.130|:443 に接続しています... 接続しました。 HTTP による接続要求を送信しました、応答を待っています... 200 OK 長さ: 22953 (22K) `mssl1680-firmware-jumper-ezpad6pro-1.0.git20201209.e247c34-2.fc33.noarch.rpm' に保存中 mssl1680-firmware-jumper-ezpa 100%[=================================================>] 22.42K --.-KB/s in 0.02s 2021-01-18 10:01:48 (919 KB/s) - `mssl1680-firmware-jumper-ezpad6pro-1.0.git20201209.e247c34-2.fc33.noarch.rpm' へ保存完了 [22953/22953] bitwalk@ubuntu-pc:~/ダウンロード$ ls mssl1680-firmware-jumper-ezpad6pro-1.0.git20201209.e247c34-2.fc33.noarch.rpm bitwalk@ubuntu-pc:~/ダウンロード$
DEB パッケージへ変換
fakeroot で管理者を装って alien コマンドを実行します。sudo で実行しても良いのですが、その場合、出力ファイルの所有者が root になります。
bitwalk@ubuntu-pc:~/ダウンロード$ alien mssl1680-firmware-jumper-ezpad6pro-1.0.git20201209.e247c34-2.fc33.noarch.rpm Must run as root to convert to deb format (or you may use fakeroot). bitwalk@ubuntu-pc:~/ダウンロード$ fakeroot alien mssl1680-firmware-jumper-ezpad6pro-1.0.git20201209.e247c34-2.fc33.noarch.rpm mssl1680-firmware-jumper-ezpad6pro_1.0.git20201209.e247c34-3_all.deb generated bitwalk@ubuntu-pc:~/ダウンロード$ ll -rw-rw-r-- 1 bitwalk bitwalk 22953 1月 14 19:54 mssl1680-firmware-jumper-ezpad6pro-1.0.git20201209.e247c34-2.fc33.noarch.rpm -rw-r--r-- 1 bitwalk bitwalk 14032 1月 18 12:18 mssl1680-firmware-jumper-ezpad6pro_1.0.git20201209.e247c34-3_all.deb bitwalk@ubuntu-pc:~/ダウンロード$
変換された DEB パッケージのバージョン番号が、RPM パッケージの 2 から 3 へひとつ上がっています。
インストールと確認
apt コマンドでインストールして、問題なくインストールできることを確認します。
bitwalk@ubuntu-pc:~/ダウンロード$ sudo apt install ./mssl1680-firmware-jumper-ezpad6pro_1.0.git20201209.e247c34-3_all.deb パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 注意、'./mssl1680-firmware-jumper-ezpad6pro_1.0.git20201209.e247c34-3_all.deb' の代わりに 'mssl1680-firmware-jumper-ezpad6pro' を選択します 以下のパッケージが新たにインストールされます: mssl1680-firmware-jumper-ezpad6pro アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 0 個。 14.0 kB 中 0 B のアーカイブを取得する必要があります。 この操作後に追加で 54.3 kB のディスク容量が消費されます。 取得:1 /home/bitwalk/ダウンロード/mssl1680-firmware-jumper-ezpad6pro_1.0.git20201209.e247c34-3_all.deb mssl1680-firmware-jumper-ezpad6pro all 1.0.git20201209.e247c34-3 [14.0 kB] 以前に未選択のパッケージ mssl1680-firmware-jumper-ezpad6pro を選択しています。 (データベースを読み込んでいます ... 現在 199117 個のファイルとディレクトリがインストールされています。) .../mssl1680-firmware-jumper-ezpad6pro_1.0.git20201209.e247c34-3_all.deb を展開する準備をしています ... mssl1680-firmware-jumper-ezpad6pro (1.0.git20201209.e247c34-3) を展開しています... mssl1680-firmware-jumper-ezpad6pro (1.0.git20201209.e247c34-3) を設定しています ... bitwalk@ubuntu-pc:~/ダウンロード$ dpkg -L mssl1680-firmware-jumper-ezpad6pro /. /usr /usr/lib /usr/lib/firmware /usr/lib/firmware/silead /usr/lib/firmware/silead/mssl1680.fw /usr/share /usr/share/doc /usr/share/doc/mssl1680-firmware-jumper-ezpad6pro /usr/share/doc/mssl1680-firmware-jumper-ezpad6pro/README.md /usr/share/doc/mssl1680-firmware-jumper-ezpad6pro/changelog.Debian.gz /usr/share/doc/mssl1680-firmware-jumper-ezpad6pro/copyright bitwalk@ubuntu-pc:~/ダウンロード$
期待通りに元の RPM パッケージと同じファイルがインストールされているばかりでなく、changelog.Debian.gz まで加えられています。😮
bitwalk@ubuntu-pc:~/ダウンロード$ less /usr/share/doc/mssl1680-firmware-jumper-ezpad6pro/changelog.Debian.gz mssl1680-firmware-jumper-ezpad6pro (1.0.git20201209.e247c34-3) experimental; urgency=low * Converted from .rpm format to .deb by alien version 8.95 - correct firmware license to 'Proprietary'. - change firmwre from gsl3692-jumper-ezpad-6-pro.fw to gsl3692-jumper-ezpad-6-pro-b.fw. -- Fuhito SuguriMon, 18 Jan 2021 12:18:17 +0900 /usr/share/doc/mssl1680-firmware-jumper-ezpad6pro/changelog.Debian.gz (END)
まとめ
今回試したパッケージの中身は、もともとコンパイラによるビルドを必要としない単純な構成です。このぐらいの単純なパッケージであれば、alien を積極的に活用して、RPM や DEB のパッケージ双方をそろえていくことに努めていこうと思いました。
ちなみに、今回 DEB 形式へ変換したパッケージは、下記にアップしました。
参考サイト
- alien-pkg-convert download | SourceForge.net
- Alien で rpm を deb に変換してみる - CUBE SUGAR CONTAINER [2016-03-24]
1 件のコメント:
わかりやすい説明でうまくインストールすることができました。感謝です。
コメントを投稿