[[PageOutline]] = package management system = * [http://debian.fam.cx/index.php?AptGet D: AptGet - Debian GNU/Linux スレッドテンプレ] * [http://ubuntuforums.org/showthread.php?t=1459754 |all variants| apt-get upgrade security updates only - Ubuntu Forums] > {{{ > sudo aptitude update && sudo aptitude install '?and(~U,~Asecurity)' > }}} * see [http://www.debian.org/doc/manuals/reference/ch02.en.html#_the_aptitude_regex_formula Chapter 2. Debian package management] 2.2.7. The aptitude regex formula * Debianでは「security」というarchiveが無いのか、この手法では不可 = Dynamic MMap ran out of room. = * sudo aptitude update {{{ E: Dynamic MMap ran out of room. Please increase the size of APT::Cache-Limit. Current value: 25165824. (man 5 apt.conf) E: Error occurred while processing samba-tools (NewVersion1) E: Problem with MergeList /var/lib/apt/lists/security.ubuntu.com_ubuntu_dists_maverick-security_universe_binary-amd64_Packages W: Unable to munmap E: The package lists or status file could not be parsed or opened. }}} * [http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=535218 #535218 - apt-get / aptitude segfault when Cache-Limit is too small - Debian Bug report logs] * [http://ubuntuforums.org/showthread.php?t=1722785 (ubuntu) Unable to Upgrade. - Ubuntu Forums] = apt-get vs. aptitude = * 以下、http://web.archive.org/web/20080612112414/http://foamy-capriccio.seesaa.net/article/47608276.html より抜粋して転載 > * 結論から言うと、「Ubuntuで使うなら今はapt-getに統一しておいた方がいいよ」ということらしいです。実際、非公式なUbuntuGuideのGeneral Notesのところでも > {{{ > All references to "aptitude" will be replaced with "apt-get". You may still use "aptitude" if you wish, however could cause dependency issues. > }}} > * 以下、apt-getとaptitudeの違いをつらつらと。 > 1. ログファイル > * apt-getは特にログファイルを持っていません。そのかわり後ろで動くdpkgコマンドが /var/log/dpkg.log というログファイルを持っているようです。この中にはインストール・アンインストールしたパッケージの一覧が載っています。 > * aptitudeでもdpkgが後ろで動いていますが、dpkg.logとは別に /var/log/aptitude というファイルを管理しています。もし一度もaptitudeコマンドを使ったことがないのなら、ファイル自体が存在しません。 > 1. インストール時 > * 主な違いは「推奨(recommends)パッケージ」の扱いです。apt-getは推奨パッケージを表示するだけに留めますが、aptitudeは推奨パッケージもインストールしようとします(たぶん提案(suggests)パッケージはインストールしません。推奨と提案の違いは[http://www.debian-administration.org/users/lykwydchykyn/weblog/3 このエントリの質疑応答]が参考になります)。 > 1. アンインストール時 > * 主な違いは必要のなくなったパッケージ(孤児(orphan)パッケージと呼ばれるらしい)の扱いです。apt-getもaptitudeもあるパッケージをインストールしたとき、必要なパッケージも自動的にインストールしてくれますが、インストールしたパッケージを削除したとき、apt-getはそのパッケージだけを、aptitudeは(/var/log/aptitudeのログを元に)不要になったパッケージも削除します。 > * この不要パッケージに対する扱いの違いのために、aptitudeの愛用者が多かったようです。現在ではapt-get autoremoveコマンドでaptitude同様のことを独自のログファイルを作成することなく実現できます。 > * 実例 > * 仮想的なpackageXパッケージをapt-get、aptitudeの双方でインストールしたときの違いを見ていきましょう。まず、packageXに対する依存関係は以下のようになっているとします。 > * 依存:packageXdep > * 推奨:packageXrec > * 提案:packageXsug > 1. ケース1:aptitudeを使ってインストールし、aptitudeを使ってアンインストールする。 > * aptitude install packageX:packageXとpackageXdepとpackageXrecがインストールされる。 > * aptitude remove packageX:packageXとpackageXdepとpackageXrecがアンインストールされる。 > * 一緒にインストールされたパッケージはaptitudeのデータベースに基づいて全てアンインストールされる。 > * aptitudeのデータベースの整合性は維持される。 > 1. ケース2:apt-getを使ってインストールし、apt-getを使ってアンインストールする。 > * apt-get install packageX:packageXとpackageXdepがインストールされる。 > * apt-get remove packageX:packageXのみがアンインストールされる。 > * 依存関係によってインストールされたパッケージは残ったままになる。 > * aptitudeのデータベースには触れないので整合性は維持される。 > 1. ケース3:apt-getを使ってインストールし、apt-get --autoremoveを使ってアンインストールする。 > * apt-get install packageX:packageXとpackageXdepがインストールされる。 > * apt-get --autoremove remove packageX:packageXとpacageXdepがアンインストールされる。 > * 一緒にインストールされたパッケージは全てアンインストールされる。 > * aptitudeのデータベースには触れないので整合性は維持される。 > 1. ケース4:apt-getを使ってインストールし、aptitudeを使ってアンインストールする。 > * apt-get install packageX:packageXとpackageXdepがインストールされる。 > * aptitude remove packageX:packageXがアンインストールされる。 > * packageXdepはaptitudeのデータベースに登録されていないので、アンインストールされない。 > * aptitudeのデータベースにおいてpackageXdepはインストールされていないことになっている。 > 1. ケース5:aptitudeを使ってインストールし、apt-get --autoremoveを使ってアンインストールする。 > * aptitude install packageX:packageXとpackageXdepとpackageXrecがインストールされる。 > * apt-get --autoremove remove packageX:packageXとpackageXdepがアンインストールされる(packageXrecはどうなるか不明)。 > * packageXdepはaptitudeのデータベースに関係なくアンインストールされる。 > * aptitudeのデータベースにおいて、packageXdepはインストールされたままの状態になっている。 > * 追記(2007/12/17) > * 案外、このエントリにやってくる人が多いようなので、いくつか修正・追記しておきました。とりあえず、ここに書いてあることは、非公式の情報を元に推論したものであり、事実と違う可能性があるので注意してください。実際、apt-getに統一した方がいいと書きましたが、DebianのMLや[http://debian.fam.cx/ Debian GNU/Linux スレッドテンプレ]を見ると、積極的にaptitudeが使われています。これはDebianでは、SynapticのようなGUIは利用せずに端末上からインストールする方が多いために、aptitudeで統一した方がいろいろとログが残るし、特にオプションを指定しなくても「推奨」パッケージがインストールされるし、aptitudeにはCUI用のインターフェースも用意されているしと利点が多いからだと思われます。 > * この記事へのコメント > 1. こんばんは。aptitude のメンテナをやっているものなのでちょっと気になった点についてコメントです。「aptitudeは(/var/log/aptitudeのログを元に)不要になったパッケージも削除します」は嘘ですよ。/var/lib/apt/extended_states というデータベースがあり、依存関係で引き込まれて自動的にインストールされたか否かに関する情報がそこに含まれています。ログなんて飾りですよ。何ヶ月かすれば logrotate に消されてしまうものなので。;-) - Posted by noritada at 2008年01月10日 03:22 > 1. aptitudeのメンテナさん直々に指摘していただけるなんて光栄です。ちゃんと確認もせずにふわふわな状態で嘘を書いてしまってすみません……。aptitude も(/var/lib/aptitude/pkgstatesだけでなく)/var/lib/apt/extended_statesを読み込んでくれるんですね。てことは、この二つを混用することによる問題って何が原因で起こるのでしょう。というか、問題自体も解決済みなのかな。やっぱちゃんと確認してからって話になっちゃいますね……。 - Posted by しぐま at 2008年01月11日 21:27 = Preference control file for APT = * APT_PREFERENCES(5) > * Determination of Package Version and Distribution Properties > the Archive: or Suite: line > names the archive to which all the packages in the directory tree > belong. For example, the line "Archive: stable" or "Suite: stable" > specifies that all of the packages in the directory tree below the > parent of the Release file are in a stable archive. Specifying this > value in the APT preferences file would require the line: > > Pin: release a=stable > > the Codename: line > names the codename to which all the packages in the directory tree > belong. For example, the line "Codename: squeeze" specifies that > all of the packages in the directory tree below the parent of the > Release file belong to a version named squeeze. Specifying this > value in the APT preferences file would require the line: > > Pin: release n=squeeze > > the Version: line > names the release version. For example, the packages in the tree > might belong to Debian GNU/Linux release version 3.0. Note that > there is normally no version number for the testing and unstable > distributions because they have not been released yet. Specifying > this in the APT preferences file would require one of the following > lines. > > Pin: release v=3.0 > Pin: release a=stable, v=3.0 > Pin: release 3.0 > > the Component: line > names the licensing component associated with the packages in the > directory tree of the Release file. For example, the line > "Component: main" specifies that all the packages in the directory > tree are from the main component, which entails that they are > licensed under terms listed in the Debian Free Software Guidelines. > Specifying this component in the APT preferences file would require > the line: > > Pin: release c=main > > the Origin: line > names the originator of the packages in the directory tree of the > Release file. Most commonly, this is Debian. Specifying this origin > in the APT preferences file would require the line: > > Pin: release o=Debian > > the Label: line > names the label of the packages in the directory tree of the > Release file. Most commonly, this is Debian. Specifying this label > in the APT preferences file would require the line: > > Pin: release l=Debian