ウェブサイト検索

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 リポジトリ

関連記事