Dpkg-repack を使用して Debian バイナリ パッケージを再作成する
この簡単なガイドでは、dpkg-repack
と呼ばれる便利なユーティリティを紹介します。このユーティリティは、debian ベースのシステムにすでにインストールされている Debian バイナリ パッケージを再作成するために使用されます。
dpkg-repackとは何ですか?
このシナリオを想像してみてください。 Debian ベースのシステムにいくつかのパッケージがインストールされました。そして、同じパッケージを別のシステムにインストールしたいと考えています。しかし、バイナリ アーカイブ、つまり deb ファイルが失われてしまいました。公式 Web サイトまたはリポジトリから再度ダウンロードしますか?
特定のパッケージの特定のバージョンが他の場所で入手できなくなったらどうなるでしょうか?心配ない!これらはすでにシステムにインストールされているため、.deb
ファイルを簡単に再作成できます。 dpkg-repack
をよろしくお願いします。
dpkg-repack
は、システムに既にインストールされている Debian バイナリ パッケージを再作成するためのコマンドライン Debian パッケージ アーカイブ ツールです。
簡潔に言うと、dpkg-repack
ユーティリティは、システムにすでにインストールされている debian パッケージから .deb
ファイルを作成できます。
dpkg-repack
ユーティリティは、次のようなさまざまな状況で役立ちます。
- 既存のインストールされている debian パッケージから
.deb
ファイルを再作成します。 - あるシステムから別のシステムにパッケージを簡単にコピーできます。
- パッケージをアップグレードする前に、パッケージの現在の状態を保存します。
- 将来の使用に備えてパッケージの特定のバージョンをバックアップします。
- ダウンロードできなくなった特定のパッケージを保存します。
Debian、Ubuntu、および派生製品に dpkg-repack をインストールする
dpkg-repack
は、Debian、Ubuntu、およびそのバリアントのデフォルト リポジトリで利用できます。 dpkg-repack
をインストールするには、次のコマンドを実行するだけです。
sudo apt install dpkg-repack
dpkg-repack を使用して Debian バイナリ パッケージを再作成する
1. このガイドでは、少し前に Ubuntu デスクトップにインストールしたMicrosoft Teams アプリケーションを使用します。
dpkg -l | grep teams
サンプル出力:
ii teams 1.3.00.5153 amd64 Microsoft Teams for Linux is your chat-centered workspace in Office 365.
teams.deb
ファイルはもうありません。 Microsoft Teams アプリケーションをインストールした直後に削除してしまいました。公式ダウンロードページにアクセスして、再度ダウンロードできます。しかし、なぜわざわざ何度もダウンロードする必要があるのでしょうか?これで、dpkg-repack を使用して teams.deb
ファイルを簡単に再作成できるようになりました。
2. dpkg-repack
ユーティリティを使用して、すでにインストールされているチーム パッケージから teams.deb
ファイルを作成するには、次のコマンドを実行します。
dpkg-repack teams
サンプル出力:
dpkg-deb: building package 'teams' in './teams_1.3.00.5153_amd64.deb'.
dpkg-repack ユーティリティを使用して Debian バイナリ パッケージを再作成する
ご覧のとおり、上記のコマンドは、Ubuntu デスクトップに既にインストールされている Teams パッケージから "teams_1.3.00.5153_amd64.deb'"
ファイルを再作成しました。新しく作成された deb ファイルは、現在の作業ディレクトリに保存されます。
同様に、dpkg-repack
ユーティリティを使用して、インストールされている Debian パッケージを .deb
パッケージに戻すことができます。
3. スペースで区切って複数の deb ファイルを再作成することもできます。
dpkg-repack <package1> <package2> <package3>
4. 権限の問題により deb ファイルを再構築できない場合は、 以下のように偽ルート環境から再構築してみてください。
fakeroot -u dpkg-repack teams
dpkg-repack ユーティリティの興味深い機能の 1 つは、解凍中にパッケージに変更が加えられた場合 (つまり、/etc 内のファイルが変更された場合)、新しいパッケージがその変更を継承することです。
debファイルの内容を確認する
ステップ 1: 次のコマンドを使用して、deb ファイルの内容を表示できます。
dpkg --contents teams_1.3.00.5153_amd64.deb
サンプル出力:
drwxr-xr-x root/root 0 2020-05-26 15:15 ./
drwxr-xr-x root/root 0 2020-05-26 15:15 ./usr/
drwxr-xr-x root/root 0 2020-05-26 15:15 ./usr/bin/
-rwxr-xr-x root/root 286 2020-02-20 16:46 ./usr/bin/teams
drwxr-xr-x root/root 0 2020-05-26 15:15 ./usr/share/
.
.
.
drwxr-xr-x root/root 0 2020-05-26 15:15 ./usr/share/teams/swiftshader/
-rwxr-xr-x root/root 286264 2020-02-20 16:46 ./usr/share/teams/swiftshader/libEGL.so
-rwxr-xr-x root/root 2677296 2020-02-20 16:46 ./usr/share/teams/swiftshader/libGLESv2.so
-rwxr-xr-x root/root 114964776 2020-02-20 16:46 ./usr/share/teams/teams
-rw-r--r-- root/root 1040912 2020-02-20 16:46 ./usr/share/teams/v8_context_snapshot.bin
Linuxでdebファイルの内容を表示する
ステップ 2: dpkg-repack は、同じパッケージのセットを複数のシステムにインストールする場合に便利です。外付けハード ドライブまたは LAN 経由でパッケージを他のシステムに転送し、dpkg コマンドを使用してインストールするだけです。
sudo dpkg -i <package-name>
ステップ 3: 依存関係をダウンロードする必要があることに注意してください。依存関係をインストールするには、次を実行します。
sudo apt-get -f install
あるいは、次のリンクで説明されているように、パッケージの依存関係を見つけることもできます。
- Linux でパッケージの依存関係を一覧表示する方法
次に、上記のように dpkg-repack
を使用してすべてを再作成します。
ステップ 4: これは、パッケージを以前の作業バージョンにロールバックする場合にも役立ちます。たとえば、Vim
パッケージを新しい利用可能なバージョンにアップグレードしたとします。新しいバージョンが期待どおりに動作しない場合は、dpkg-repack
を使用して以前に作成した古いバージョンに単純にロールバックできます。
詳細については、マニュアルページを参照してください。
man dpkg-repack
関連記事:
- ソースから Debian パッケージをビルドする方法
- CheckInstall を使用してソースからパッケージをビルドする方法
- Alien を使用して Linux パッケージを変換する方法
リソース:
- dpkg-repack GitHub リポジトリ