読むだけでちょっと賢くなる、架空のまとめスレ

【疑問】dpkg -i で入れたら依存関係のエラー。dpkg と apt はどう使い分けるん【LPICレベル1】

22レスカテゴリ:Linux
1: 名無しさん

配布されてた .deb ファイルを dpkg -i tool.deb で入れようとしたら、依存するパッケージがないってエラーで止まった
パッケージを入れるだけやのに、なんで

2: 名無しさん

>>1
dpkg は、手元の .deb を1つずつ入れたり消したりする道具で、足りない依存パッケージを取ってくる機能はない
apt(apt-get)はリポジトリから依存関係をたどって、必要なものをまとめて入れる。中では dpkg を使ってる

3: 名無しさん

>>2
じゃあ止まったあとはどうするん

4: 名無しさん

>>3
apt-get install -f で、足りない依存を入れて途中の状態を直せる
最初から apt install ./tool.deb のようにパスで渡せば、依存もまとめて入れてくれる

5: 名無しさん

dpkg の他のオプションは?

6: 名無しさん

>>5
よく出るのはこのあたり
dpkg -l:入ってるパッケージの一覧。dpkg -s パッケージ名:状態やバージョン
dpkg -L パッケージ名:そのパッケージが置いたファイルの一覧。dpkg -S ファイル名:そのファイルがどのパッケージのものか

7: 名無しさん

>>6
-r と -P の違いは?

8: 名無しさん

>>7
-r(remove)はプログラムを消すけど、設定ファイルは残す。-P(purge)は設定ファイルまで消す
apt でも同じで、apt-get remove と apt-get purge

9: 名無しさん

>>8
設定を残す意味ってある?

10: 名無しさん

>>9
入れ直したときに同じ設定で使える。dpkg -l で状態が rc になってるのは、消したけど設定だけ残ってるパッケージ

11: 名無しさん

dpkg -S /bin/ls したら見つからんって出たんやけど

12: 名無しさん

>>11
最近の Debian 系は /bin が /usr/bin へのリンクになってて、パッケージには /usr/bin/ls として登録されてることがある
dpkg -S /usr/bin/ls なら coreutils: /usr/bin/ls と出る

13: 名無しさん

>>12
入ってないパッケージの中身を調べることはできるん?

14: 名無しさん

>>13
dpkg はインストール済みのものしか分からない。リポジトリにあるものを調べるのは apt-cache
apt-cache search キーワード で探す、apt-cache show パッケージ名 で説明、apt-cache depends パッケージ名 で依存

15: 名無しさん

update と upgrade、名前が似すぎてて混ざる

16: 名無しさん

>>15
apt-get update はリポジトリから「どんなパッケージがあるか」の一覧を取り直すだけで、何も入れない
apt-get upgrade は、入ってるパッケージを新しい版にする。だから update してから upgrade

17: 名無しさん

>>16
今は apt-get じゃなくて apt を使えばええんやろ。試験で apt-get を覚える意味ある?

18: 名無しさん

>>17
apt は人が打つ用に表示が見やすくなってて、ふだんはそれでいい
でもスクリプトでは、出力の形が変わりにくい apt-get や apt-cache が勧められてる。試験の範囲(102.4)も apt-get・apt-cache が中心で、apt は「知っておく」扱い

19: 名無しさん

リポジトリの場所はどこに書いてあるん

20: 名無しさん

>>19
/etc/apt/sources.list と、/etc/apt/sources.list.d/ の下のファイル
書き換えたら apt-get update で一覧を取り直す

21: 名無しさん

dpkg-reconfigure って何するん

22: 名無しさん

>>21
インストールのときに聞かれた設定を、もう一度聞き直してやり直す
dpkg-reconfigure tzdata でタイムゾーンを選び直す、みたいに使う

管理人のひとこと