Aptitudeとapt-get:推奨される(別名「正しい」)ツールはどれですか。


94

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

したがって、私は何かを逃したのではないかと思っています。使用する適切なツールはどれですか?


興味深いことに、Ubuntuはaptitudeデフォルトでインストールされなくなりました。
機械式カタツムリ

2
私にとって最も重要な唯一の違いは、ドキュメントをよく読んだ後、aptitudeを介してパッケージのソースを取得する方法が見つからないことです。apt-get source package-nameそれを行いますが、私は同等の適性を見ていません
-EricR

2
一つのことはaptitude search package-name、適性に働くことです。もう1つはaptitude why package-name便利ですが、ではありませんapt-get。コマンドラインがにaptitude比べて少しクリーンアップされていることもわかりましたapt-get。しかし、お気づきのとおりaptitude build-dep package-name、ありませんaptitude source package-name
アンデルス14年

回答:


73

aptitudeそしてapt-get多くのタスクのために同じように機能するが、このような分布のアップグレード(として最もトリッキーな例のためにapt-get dist-upgradeaptitude full-upgrade)、それらは異なるルールを持って、彼らは一致しないところ適性のルールは、実際にはほとんど常に優れています。

あなたはより多くのドキュメントを参照してください理由apt-getオーバーはaptitude、主に慣性です:aptitudeためにAPTに推奨フロントエンドをされていないすべてのその長い、既存のドキュメントのあまりが更新されていない、との利点を認識し、人々の多くがあるaptitude以上は、apt-getしかし、apt-get再帰的に使用します。

私は最近、入力するときではなく、通常はapta iでフォローするようになりました-

追記で使用されているルールはターゲットを移動しapt-getaptitudeいることに注意してください-Hubertがコメントで述べているように、Debian Lennyから推奨されるアップグレードパスはを使用するようapt-getになりましたaptitude。これは、apt-get現在のパッケージに関する状態を追跡するよりも少ない状態を追跡するという事実を反映しているaptitudeため、APTの状態が「クリーン」でないことを心配する必要はありませんapt-get。私はまだ使用してお勧めaptitudeapt-getますが、より微妙な推奨事項です


6
それに加えて、aptitudeは競合の可能な解決策を簡単に閲覧することを可能にしますが、apt-getでは通常1つの可能な方法しか表示されず、それを受け入れるか手動で解決する必要があります(dpkgを使用してfe)。
リオリ

20
apt-getよりメモリ効率が良いという利点があります。これは、ほとんどのユーザーにとって目立たないでしょう。32MBのRAMを備えた完全なDebianインストールでパッケージをアップグレードしようとするまで、私はそれを本当に知りませんでした。 aptitude実行ごとに約1時間、スワップでスラッシングを起こしました。apt-getはかなり高速でした。
直観

4
公式Debianのスクイズドキュメントが明示的に使用しないことを述べてaptitude...それは、以前のアップグレードのためにサポートされていたにもかかわらず、レニーからのアップグレードのために、私はそれだけで慣性だとは思わない
ヒューバートKario

@HubertKario-はい、確かに。回答を更新しました。
チャールズスチュワート

私は実際に何かapt-getaptitudeすることができる間、ほとんど常にエラー(Ubuntuサーバー12.10、14.04からの経験)を投げると言うことができるだけです。apt-getがどのようにまだ存在するのか、まだわかりません。
Totty.js 14

20

aptitude(の助けを借りてgrep)システムにインストール済みの検索プログラムを表示するのに便利です:

aptitude search flash | grep ^i

実際、aptitudeの検索はgrep、コンテキスト検索をサポートしているため、パイピングするよりもはるかに強力です。

たとえば、これはインストールされているパッケージ名に「flash」が含まれるすべてのパッケージを検索します。

aptitude search '~iflash'

「短い形式」に相当する「長い形式」~i

aptitude search '?installed(flash)'

デフォルトでは、検索パターンは無料(アンカーなし)であることに注意してください。それらをアンカーするには、アンカーパターン ' ^'(文字列の先頭)および/または ' $'(文字列の終わり)を使用する必要があります。

名前が「ttf」または「font」で始まるすべてのパッケージを検索するには:

aptitude search '(^ttf|^font)'

(注:aptitudeの正しい正規表現が'^(ttf|font)'正しく機能しないため、これはのバグの回避策です。名前が「ttf」で始まるか「font」を含むパッケージを検出します。)

その他の気の利いたaptitude機能:

名前に「ファームウェア」があり、説明にも「ワイヤレス」があるすべてのパッケージを表示します。

aptitude search 'firmware ~dwireless'

または長い形式:

aptitude search '?and(?name(firmware),?description(wireless))'

(注:短い形式では、スペースで区切られた引数は引用符内でANDされます。別個のargv []コマンドライン引数として渡された場合、それらはORされます。)

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(?)以降のデフォルトに起因するいくつかの狂気を示しています。組み込みの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

Essentialsまたは依存関係によって自動的にインストールされていない、インストールされているすべてのパッケージ名を表示します。

$ aptitude search '~i!(~E|~M)' -F '%p'

残念ながら、このようなものはかなり不十分に文書化されており、見つけるのは難しいですが、ここに最適なリファレンスがあります( 'aptitude'メンテナーから)。


4
検索機能は、から入手できますapt-get経由apt-cache search NAME
EricR

@EricR trueですが、これらの検索機能が見つかりませんでした
-niceman

4

パッケージ管理に関するDebian GNU / Linux FAQによると、aptitudeはapt-getよりも複雑で、あまり複雑でないパッケージ管理ツールapt-getおよびdpkgに依存しています。

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

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


3

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

これが、私が適性よりも適性が常に優れていると個人的に考える主な理由です。


引用が必要でしたが、それは説得力のある違いです。
クズカイ


実際にapt-getは、それも同様apt-get autoremove <package-name>です。自動インストールされたパッケージの両方apt-getaptitudeマーク
Legionair

ただし、aptitude使用するたびに自動パッケージをクリーンアップしてください。一方でapt-get、あなたはその明示的に開始する必要があります。
アンデルス14年

2

適切なツールはありません。手元のタスクに最も便利なツールに応じて、両方を組み合わせて使用​​できます。aptitudeはテスト/ sidユーザーにとっては素晴らしいツールですが、安定版から次の安定版へのdist-upgradingでは信頼性が低くなる傾向があります。私の記事apt-get、aptitudeを参照してください…適切なパッケージマネージャーを選択してください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.