読者です 読者をやめる 読者になる 読者になる

技術者になりたい何か

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

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

apt,aptitudeとは

Debian系のデストリビューションで使用されるパッケージ管理システム。

リポジトリを参照してパッケージのインストール・アンインストールといった操作をするもの。
ということでRed Hat系のyumに相当するものである。
Linuxデストリビューションは数多くあるが、なかでもRedHat系(CentOS,Fedoraなど)とDebian系(Debian,Ubuntu,Linux Mintなど)
が二大メジャーな流れなので、必然yum or apt, rpm or dpkgを使用することが多くなる。
pacmanとがemergeはほっときます。GentooとかArchのひとすみません殴らないで下さい。

ちなみにDebianyumは使用できるがCentOSでaptは使用できない。(CentOSでもdpkgはある

 

aptとaptitude

基本的には同じような動きをする。aptitudeの方が若干高機能らしいが、最近のDebian自体がapt推奨してたりする。

apt-get

パッケージの操作の為のコマンドである。

オプション
-d ファイルをダウンロードする。インストールはしない。
-s システムに変更を加えずに動作をシミュレートする。

サブコマンド
clean 過去に取得し保持していたパッケージファイルのキャッシュを削除する。
update パッケージデータベースを更新する。
upgrade インストールされているパッケージの内、他のパッケージを削除しないものを全て更新する。
dist-upgrade インストールされているパッケージ全て更新する。
       (更新に伴い削除されるパッケージ、新規インストールされるパッケージが有ったらそれぞれ削除・インストールをする)
remove パッケージをアンインストールする。
autoclean 保持しているパッケージのキャッシュから必要なくなったものを削除する。
autoremove インストールされているパッケージの内、必要なくなったものを削除する。
purge インストールされているパッケージを設定ファイル含めて削除する。

実行例


通常の運用システムに置いて全パッケージを普通に更新するとき。

$ sudo apt-get update
Get:1 http://security.debian.org jessie/updates InRelease [63.1 kB]
Hit http://nginx.org jessie InRelease
Get:2 http://security.debian.org jessie/updates/main Sources [193 kB]
Ign http://ftp.jp.debian.org jessie InRelease
Get:3 http://ftp.jp.debian.org jessie-updates InRelease [145 kB]
Get:4 http://security.debian.org jessie/updates/contrib Sources [1,439 B]
Get:5 http://security.debian.org jessie/updates/non-free Sources [14 B]
(中略)
Ign http://nginx.org jessie/nginx Translation-ja
Fetched 991 kB in 12s (78.3 kB/s)
Reading package lists... Done

$ sudo apt-get upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

 

 

上記2つを合わせてyumにおけるyum updateとほぼ同じ動作をする。

 

インストール・アンインストール

$ sudo apt-get install apache2

$ sudo apt-get remove [パッケージ]

$ sudo apt-get purge [パッケージ]

 

remove したときは設定ファイルは残る。よって、removeでアンインストールしたパッケージを再インストールしたときは、基本的に以前使っていた設定で動く。
purge したときは設定ファイル含めて削除されるので、再インストールしたときはデフォルト設定で動く。
よって、設定ファイルをいじって動作がおかしくなってしまったときはpurgeしてからインストールしたほうがよいし、使ってないからアンインストールするけどまた今度使うかもなぁ、ってときはremoveの方がいいかもしれない。
なお、運用ポリシーとしては設定ファイルは必要ならバックアップを取り、使用しないパッケージはpurgeで完全削除するのがあるべき姿らしい(聞いたところ)

 

apt-cache

パッケージ情報の照会・検索用コマンド。
なお、対象パッケージはインストールされてなくても良い。
主なサブコマンド
serch キーワード キーワードで検索
show パッケージ名 パッケージ詳細情報表示
showpkg パッケージ名 パッケージについての情報表示
depends パッケージ名 指定パッケージの依存関係情報表示

yum search, yum infoあたりとそっくり。
searchは実際よく使う。

 

aptitude

apt-get よりも高度な機能を持っている。検索時に正規表現が使える。
apt-getとapt-cacheの両方の機能をカバーする。
しかし最近はDebianのバージョンアップ時の推奨コマンドがapt-getになったりしてるので、ちょっと落ち目な感じがする。
ぶっちゃけ実際の運用に置いてはたいして違わないので好きな方を使えばいいと思う。

主な違いは
・インストール時、apt-getは推奨パッケージを提案するが、aptitudeは問答無用でインストールする。
・アンインストール時、apt-getは推奨パッケージを残す(よって不要になったパッケージ=孤児パッケージが生じる)が、aptitudeは問答無用で案インストールする。
 (とはいえ、apt-get autoremoveが実装されたおかげでこの問題はほぼ解決されている)
・apt-get dist-upgrade よりも aptitude full-upgradeの方が大体良い(と言われていた?)
aptitudeの方が単体で高機能な分バグやエラーが多い。
(筆者はapt-get派の為若干主観が混じっています)

 

サブコマンド
update パッケージデータベース更新
show パッケージ名 パッケージ情報を表示する
search パターン 指定したパターンでパッケージを検索する
install パッケージ名 指定したパッケージをインストールする
remove パッケージ名 指定したパッケージを削除する
purge パッケージ名 指定したパッケージを設定ファイルも含めて削除する
full-upgrade システムの全パッケージを最新に更新する
safe-upgrade インストールされているパッケージのうち他のパッケージを削除しないものを更新する
download パッケージ名 パッケージをカレントディレクトリにDLする

基本的にはサブコマンドもapt-getとほぼ同じ。


正規表現を使った検索

$ aptitude search "~napahe2~i"

~n正規表現 パッケージ名が正規表現パターンにマッチするパッケージを探す
~d正規表現 パッケージの説明が正規表現パターンにry
~V正規表現 パッケージのバージョンがry
~i インストール済みのパッケージを検索する
~U 更新可能なパッケージを更新する
~M 自動的にインストールされたパッケージを検索する

というか、正規表現でパッケージ探す状況って思い浮かばないんですが・・・あるんですかね・・・

 

 

図解でわかるLinuxのすべて―コマンド操作&パッケージ管理

図解でわかるLinuxのすべて―コマンド操作&パッケージ管理

 

  

[入門] Debian パッケージ

[入門] Debian パッケージ