技術者になりたい何か

技術者になりたい何かの覚書的な何かです

パッケージ管理しりーず dpkgによるパッケージ管理 (Debian系)

dpkgとは


Debian系で使われているパッケージ管理コマンド。
Red Hat系のrpmコマンドとほぼ対応する立ち位置にいる。
対象となるファイルはDebian形式のパッケージファイルで、拡張子は.debである。

主なオプション


-E 同バージョンが既にインストールされていればインストールを行わない
-Q 新バージョンが既にインストールされていればインストールを行わない
-R ディレクトリを再帰的に処理

-i(--install) パッケージファイル名 パッケージのインストール
-r(--remove) パッケージ名 パッケージのアンインストール
-P(--purge) パッケージ名 パッケージの完全削除(設定ファイルも含めて削除)
-l(--list) [検索パターン] インストール済みパッケージを検索して表示
-L(--listfiles) パッケージ名 指定したパッケージからインストールされたファイルを一覧表示
-s(--status) パッケージ名 指定したファイルがどのパッケージからインストールされたか表示
-C(--audit) 壊れているパッケージのチェック

使い方

$ sudo dpkg -i hoge.deb
$ sudo dpkg -l hoge

vimdebパッケージをDLしてインストールとかだとこんな感じ。

$ ls -l | grep vim
-rw-r--r-- 1 tmin tmin 952724 Nov 23 01:53 vim_7.4.488-7+deb8u1_amd64.deb

$ sudo dpkg -i vim_7.4.488-7+deb8u1_amd64.deb

 

rpmコマンドと同じく、リポジトリを参照してパッケージインストールとかはできないので、
基本的には配布されている必要なパッケージにリポジトリが用意されていなかったりして、aptが使えないときに使用することになる。
パッケージをDLしてきて手元に置いてインストールするという手法である。
検索についても、リポジトリ上のパッケージ群から探すのではなく、そのシステムにインストールされているパッケージから選択をする。

よって、dpkg -l 以外はaptが使用できる環境であればaptを使うべきだし、dpkgを使用して直接にdebパッケージをインストールする前に
そのパッケージを配布しているリポジトリが無いか探すべきである。

しかし、どうしてもない場合ないしバージョンにこだわりがある場合、もしくはネット環境が無い場合など、まれに必要になることもある。
ちなみにGUIでパッケージインストーラーにてdebファイルをインスコしようとして、リポジトリにそのパッケージのより新しいバージョンがある場合、
リポジトリから入れてよね!!と言わんばかりの警告が出るが、無視してインストールすることは依存関係を満たせば可能である。
また、依存関係で警告が出ている際にも--forceをつけることによって強制的にhogehogeしたりできる。
しかし、のちにupdateでエラー吐いたり、upgradeでエラー吐いたり色んなトラブルのもとになるのであまりお勧めしない。

なお、aptは裏でdpkgを呼んでいるらしい。


こわれたときのなおしかた

dokgでリポジトリ経由しないでdebパッケージインストールしたりして、
依存関係がおかしくなったりするとこんなエラーが出たりする。


You might want to run 'apt-get -f install' to correct these.
The following packages have unmet dependencies:
vim : Depends: vim-common (= 2:7.4.488-7+deb8u1) but 2:7.4.488-7+deb8u2 is installed
Depends: vim-runtime (= 2:7.4.488-7+deb8u1) but 2:7.4.488-7+deb8u2 is installed
zsh : Depends: zsh-common (= 5.3.1-4) but it is not installed
Depends: libtinfo5 (>= 6) but 5.9+20140913-1+b1 is installed
Recommends: libc6 (>= 2.23) but 2.19-18+deb8u7 is installed
Recommends: libncursesw5 (>= 6) but 5.9+20140913-1+b1 is installed
E: Unmet dependencies. Try using -f.

上記の場合はvimzshの依存関係で問題有り。

こんな感じで直せることが多い。

$ sudo dpkg --configure -a
$ sudo apt-get -f install

 

実行例

$ sudo dpkg --configure -a
dpkg: dependency problems prevent configuration of vim:
vim depends on vim-common (= 2:7.4.488-7+deb8u1); however:
Version of vim-common on system is 2:7.4.488-7+deb8u2.
vim depends on vim-runtime (= 2:7.4.488-7+deb8u1); however:
Version of vim-runtime on system is 2:7.4.488-7+deb8u2.

dpkg: error processing package vim (--configure):
dependency problems - leaving unconfigured
dpkg: dependency problems prevent configuration of zsh:
zsh depends on zsh-common (= 5.3.1-4); however:
Package zsh-common is not installed.
zsh depends on libtinfo5 (>= 6); however:
Version of libtinfo5:amd64 on system is 5.9+20140913-1+b1.

dpkg: error processing package zsh (--configure):
dependency problems - leaving unconfigured
dpkg: dependency problems prevent configuration of zsh-static:
zsh-static depends on zsh; however:
Package zsh is not configured yet.

dpkg: error processing package zsh-static (--configure):
dependency problems - leaving unconfigured
Errors were encountered while processing:
vim
zsh
zsh-static

sudo apt-get -f install
Reading package lists... Done
Building dependency tree
Reading state information... Done
Correcting dependencies... Done
The following extra packages will be installed:
vim
Suggested packages:
ctags vim-doc vim-scripts
The following packages will be REMOVED:
zsh zsh-static
The following packages will be upgraded:
vim
1 upgraded, 0 newly installed, 2 to remove and 0 not upgraded.
3 not fully installed or removed.
Need to get 0 B/953 kB of archives.
After this operation, 4,776 kB disk space will be freed.
Do you want to continue? [Y/n] y
Reading changelogs... Done
(Reading database ... 164824 files and directories currently installed.)
Removing zsh-static (5.3.1-4) ...
Removing zsh (5.3.1-4) ...
Processing triggers for man-db (2.7.0.2-5) ...
(Reading database ... 164760 files and directories currently installed.)
Preparing to unpack .../vim_2%3a7.4.488-7+deb8u2_amd64.deb ...
Unpacking vim (2:7.4.488-7+deb8u2) over (2:7.4.488-7+deb8u1) ...
Setting up vim (2:7.4.488-7+deb8u2) ...

$ sudo dpkg --configure -a

 

2回めのdpkg --configure -a で出力がなければ問題解決してるはず。