すでに同名のdebパッケージがインストールされているか確認する@Ubuntu 14.04

リポジトリにはまだ登録されていないパッケージを手動でdpkgを使ってアップデートする時の話。

 

個別にパッケージをダウンロードしたり、自分でパッケージを作成したりした場合、複数のdebパッケージが存在する場合があります。

例えば、aaa_1.1_amd64.deb というパッケージには、aaa-lib_1.1_amd64.deb とか、aaa-dev_1.1_amd64.deb とかが付属することがあります。この時、実際にインストールされているパッケージがaaa_1.0_amd64.debとaaa_1.0_amd64-lib.deb だった場合、アップデート時にaaa_1.1_amd64-dev.deb をインストールする必要は通常ありません。

パッケージが3つの場合、dpkg -l で個別にインストールされているかどうかを確認するのはそれ程手間ではありませんが、ファイルが多いと確認も一苦労です。

RedHat系のrpm では、-Fvh オプションでアップデートすれば、すでにインストール済みのパッケージのみアップデートすることができますが、dpkgだとできそうにありません。こんな時には、シェル一発で確認してみましょう。

例えば、上記を例に、カレントディレクトリに以下の三つのファイルがあるとします。

aaa_1.1_amd64.deb
aaa-lib_1.1_amd64.deb
aaa-dev_1.1_amd64.deb

この時、同名のパッケージがインストールされているかどうかを確認するには、こんな感じのコマンドを叩くだけです。

# for i in `ls *.deb`; do dpkg -l | grep "..  "`echo $i | cut -d "_" -f 1`" " ; done
ii  aaa                      1.0   amd64        aaa
ii  aaa-lib                  1.0   amd64        aaa libraries

これで、アップデートが必要なパッケージはわかりました。

タイトルとURLをコピーしました