しばらく前に、私はaptitude
がDebianベースのシステムにインストールするのに好ましいツールであると読みました。しかし、Debianベースのシステムを管理する方法を探し回ってみると、aptitudeはほとんど言及されていません。ほとんどの人はapt-get
を好むようです - そしてそれはDebianのwikiページにも当てはまります!
それで、私は何かを逃したかどうか疑問に思います。どちらが適切なツールですか?
aptitude
とapt-get
は多くのタスクで同じように機能しますが、ディストリビューションのアップグレード(apt-get dist-upgrade
とaptitude full-upgrade
)のような最もトリッキーなケースでは、規則が異なり、aptitudeの規則は実際にはほとんど同じです。
aptitude
よりapt-get
のためのより多くのドキュメンテーションを見る理由は主に慣性です:aptitude
はずっと長い間APTへの推薦されたフロントエンドではなかったので、多くの既存のドキュメンテーションは更新されていません、そしてapt-get
に対するaptitude
の利点を認識しているが、apt-get
を反射的に使用している人はたくさんいます。
私が最近タイプしたとき、私はapt
の後にi
を付けて-
を付けないようにしました。
Postscriptapt-get
およびaptitude
で使用されているルールは動くターゲットです - Hubert氏がコメントで指摘しているように、Debian Lennyが推奨するアップグレードパスはapt-get
を使用します。 aptitude
。これは、apt-get
が現在のパッケージについてaptitude
よりも少ない状態を追跡し、APT状態が「クリーン」でないことを心配する必要がないこと、およびapt-get
ルールが従来よりも賢いためです。あります。私はまだapt-get
よりaptitude
を使用して推奨していますが、それはより微妙な推奨です。
aptitude
を使うと(grep
の助けを借りて)、検索でどんなプログラムをシステムにインストールしたかを表示するのに便利です。
aptitude search flash | grep ^i
実際には、aptitude
の検索はコンテキスト検索をサポートしているので、grep
を介してパイプするよりはるかに強力です。
例えば、これはインストールされているパッケージ名に 'flash'が付いているすべてのパッケージを見つけます。
aptitude search '~iflash'
"short form" ~i
と同等の "long form":
aptitude search '?installed(flash)'
デフォルトでは検索パターンはフリー(固定なし)です。それらを固定するには、アンカーパターン '^
'(文字列の先頭)または '$
'(文字列の最後)を使用する必要があります。
名前が 'ttf'または 'font'で始まるすべてのパッケージを見つけるには、次のようにします。
aptitude search '(^ttf|^font)'
(注:'^(ttf|font)'
の正しい正規表現が正しく機能しないため、これはaptitude
のバグに対する回避策です。名前が 'ttf'またはで始まるパッケージにはが含まれます。フォント'。)
その他の気の利いたaptitude
の機能:
ALSOの説明に「wireless」と表示されている名前に「firmware」が含まれているすべてのパッケージを表示します。
aptitude search 'firmware ~dwireless'
または長い形式
aptitude search '?and(?name(firmware),?description(wireless))'
(注:短い形式では、スペースで区切られた引数は引用符で囲まれたANDになります。別々のargv []コマンドライン引数として渡された場合は、それらの論理和がとられます。)
p atmel-firmware - Firmware for Atmel at76c50x wireless networking chips.
p firmware-atheros - Binary firmware for Atheros wireless cards
...
p libertas-firmware - Firmware for Marvell's libertas wireless chip series
p zd1211-firmware - Firmware images for the zd1211rw wireless driver
~U
は、現在のバージョンから新しいバージョンにアップグレード可能なすべてのパッケージを表示します。
# aptitude update ; aptitude versions '~U'
Package virtualbox-4.1:
i 4.1.18-78361~Debian~squeeze 100
p 4.1.20-80170~Debian~squeeze <NULL> 500
'gcc-multilib'を推奨するパッケージを表示
$ aptitude search '~DRecommends:gcc-multilib'
i libc6-dev-i386 - Embedded GNU C Library: 32-bit development libraries for AMD64
'Fuse-utils'をインストールする必要がある理由を説明してください
$ aptitude why Fuse-utils
i xorg Depends xterm | x-terminal-emulator
pi gnome-terminal Provides x-terminal-emulator
pi gnome-terminal Recommends gvfs
pi gvfs Depends libgdu0 (>= 2.29.90)
pi libgdu0 Depends udisks (< 1.1.0)
pi udisks Recommends ntfsprogs
pi ntfsprogs Depends Fuse-utils (> 2.5.0)
(この例は、Squeeze(?)からすべての "Recommends"パッケージをインストールしてからのデフォルトの厄介さを表しています。組み込みのNTFS統合ではありません。指定しない限り、これはオプションです。)
サービス "mail-transport-agent"を提供するすべてのパッケージを見つけてください。
$ aptitude search '?provides(mail-transport-agent)'
p citadel-mta - complete and feature-rich groupware server (mail transport agent)
...
p nullmailer - simple relay-only mail transport agent
p postfix - High-performance mail transport agent
i sendmail-bin - powerful, efficient, and scalable Mail Transport Agent
p ssmtp - extremely simple MTA to get mail off the system to a mail hub
p xmail - advanced, fast and reliable ESMTP/POP3 mail server
インストールされているすべてのパッケージ名を表示します。これらのパッケージ名は、「必須」または「依存関係によって自動的にインストールされる」のいずれでもありません。
$ aptitude search '~i!(~E|~M)' -F '%p'
残念ながら、このようなものはあまり文書化されておらず見つけにくいですが、 こちら が( 'aptitude'メンテナからの)最もよい参照です。
Debian GNU/Linux FAQパッケージ管理について によれば、aptitudeはapt-getよりも複雑で、それほど複雑ではないパッケージ管理ツールaptに依存します。 -getとdpkg.
したがって、よりシンプルなニーズにはよりシンプルなツールを使用できますが、より複雑なニーズにはより洗練されたツール(apitude)を使用できます。
Debian FAQからの引用: "aptitudeはdselectとapt-getの機能、そしてどちらのプログラムにも見られない多くの追加機能を提供します。"
aptitudeはautoタグとの依存関係のためにインストールされたパッケージをマークします。ここでパッケージを削除または削除すると、aptitudeは削除または削除したいパッケージと一緒に使用されなくなった自動インストールパッケージを自動的に削除します。
これが私が個人的にはaptitudeの方がaptよりも常に優れていると考える主な理由です。
適切なツールはありません、あなたが手元のタスクに最も便利だと思うものに応じて、両方を組み合わせて組み合わせることができます。 aptitudeはユーザーのテストやシドのための優れたツールですが、安定版から次の安定版へのアップグレードには信頼性が低い傾向があります。私の記事 apt-get、aptitudeを見てください。あなたにぴったりのパッケージマネージャを選んでください 。