web-dev-qa-db-ja.com

適性とapt-get:どちらを使用することをお勧めします(別名 "正しい")ツール?

しばらく前に、私はaptitudeがDebianベースのシステムにインストールするのに好ましいツールであると読みました。しかし、Debianベースのシステムを管理する方法を探し回ってみると、aptitudeはほとんど言及されていません。ほとんどの人はapt-getを好むようです - そしてそれはDebianのwikiページにも当てはまります!

それで、私は何かを逃したかどうか疑問に思います。どちらが適切なツールですか?

93
Vokuhila-Oliba

aptitudeapt-getは多くのタスクで同じように機能しますが、ディストリビューションのアップグレード(apt-get dist-upgradeaptitude 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を使用して推奨していますが、それはより微妙な推奨です。

72
Charles Stewart

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'メンテナからの)最もよい参照です。

20
Chris P

Debian GNU/Linux FAQパッケージ管理について によれば、aptitudeはapt-getよりも複雑で、それほど複雑ではないパッケージ管理ツールaptに依存します。 -getとdpkg.

したがって、よりシンプルなニーズにはよりシンプルなツールを使用できますが、より複雑なニーズにはより洗練されたツール(apitude)を使用できます。

Debian FAQからの引用: "aptitudeはdselectとapt-getの機能、そしてどちらのプログラムにも見られない多くの追加機能を提供します。"

4
pagliuca

aptitudeはautoタグとの依存関係のためにインストールされたパッケージをマークします。ここでパッケージを削除または削除すると、aptitudeは削除または削除したいパッケージと一緒に使用されなくなった自動インストールパッケージを自動的に削除します。

これが私が個人的にはaptitudeの方がaptよりも常に優れていると考える主な理由です。

3
Fleshgrinder

適切なツールはありません、あなたが手元のタスクに最も便利だと思うものに応じて、両方を組み合わせて組み合わせることができます。 aptitudeはユーザーのテストやシドのための優れたツールですが、安定版から次の安定版へのアップグレードには信頼性が低い傾向があります。私の記事 apt-get、aptitudeを見てください。あなたにぴったりのパッケージマネージャを選んでください

2