Yetenek vs. apt-get: Kullanılması önerilen (yani “doğru”) araç hangisidir?


94

Bir süre önce aptitudeDebian tabanlı sistemlere kurulum için tercih edilen araç olduğunu okudum . Ancak Debian tabanlı bir sistemin nasıl yönetileceğini araştırırken, yetenekten nadiren söz edilir. Çoğu insan tercih ediyor gibi görünüyor apt-get- ve bu Debian wiki sayfaları için bile doğru!

Bu yüzden bir şey özledim mi merak ediyorum. Kullanılacak doğru araç hangisi?


İlginçtir ki, Ubuntu artık aptitudevarsayılan olarak yüklenmemektedir .
Mekanik salyangoz,

2
Benim için en önemli olan tek şey, dokümanlar baştan sona okuduktan sonra, bir paketin kaynağını yetenek yoluyla elde etmenin bir yolunu bulamamam. apt-get source package-nameyapacağım, ancak hiçbir eşdeğer yetenek görmedim
EricR

2
Bir şey bu aptitude search package-nameyetenekli çalışıyor. Bir diğeri aptitude why package-namede kullanışlıdır ancak içinde değildir apt-get. Ayrıca komut satırının aptitudebiraz daha temizlenmiş olduğunu düşünüyorum apt-get. Ama fark ettiğin gibi, aptitude build-dep package-nameama yok aptitude source package-name.
Anders,

Yanıtlar:


73

aptitudeve apt-getbirçok görev için aynı şekilde çalışın, ancak dağıtım yükseltmeleri ( apt-get dist-upgradevs. aptitude full-upgrade) gibi en zor durumlar için farklı kuralları vardır ve yetenek kuralları, aynı fikirde olmadıkları uygulamada neredeyse her zaman daha iyidir.

Eğer daha fazla belgelere bakın neden apt-getover aptitudeçoğunlukla atalet geçerli: aptitudeAPT tavsiye ön uç olmamıştır bütün bu uzun, var olan belgelerin çok güncellenmedi ve avantajlarını tanıyan bir sürü insan var aptitudeüzerinde apt-getancak apt-getrefleks olarak kullanın .

Son zamanlarda genellikle aptbir iile değil bir -yazarken izlediğim bir noktaya geldim.

Postscript kurallar içinde kullanılan Not apt-getve aptitudeHubert yorumlarda da yazdığı gibi, Debian Lenny dan önerilen yükseltme yolu şimdi kullanır - hedefleri hareket ediyor apt-get, değil aptitude. Bu apt-get, mevcut paketle ilgili daha az durumun izini sürdüğü gerçeğini yansıtıyor ve aptitudeAPT'nin "temiz" olmama endişesi duyması gerekmiyor, çünkü apt-getkurallar eskisinden daha akıllı. Hala kullanmak ve tavsiye aptitudeüzerine apt-get, ama bir daha nüanslı öneridir


6
Buna ek olarak, yetenek olası çatışma çözümlerine kolayca göz atmanıza izin verirken apt-get ile genellikle tek bir olası yol gösterilebilir ve ya kabul edersiniz ya da elle çözmeniz gerekir (dpkg kullanarak).
liori

20
apt-gethafızada daha verimli olma avantajına sahiptir. Bu çoğu kullanıcı için farkedilir olması mümkün değildir; 32 MB RAM ile tam bir Debian kurulumunda paketleri yükseltmeye çalışana kadar gerçekten farkında değildim. aptitudekoşu başına yaklaşık bir saat takas halinde düştü; apt-get, çok daha hızlıydı.
intuited

4
Resmi Debian sıkma belgeleri aptitude, önceki yükseltmeler için desteklenmiş olmasına rağmen Lenny'den yükseltme yapmak için kullanılmamasını açıkça belirtiyor , bu yüzden sadece atalet olduğunu sanmıyorum ...
Hubert Kario

@HubertKario - Evet, gerçekten. Cevabımı güncelledim.
Charles Stewart

Sadece apt-getneredeyse her zaman hatalar attığını söyleyebilirim (Ubuntu sunucusundan gelen deneyim 12.10, 14.04) aptitudeaslında bir şeyler yapabilir. Hala apt-get'in hala var olduğunu anlamıyorum.
Totty.js,

20

aptitudebir aramada hangi programların sistemde yüklü olduğunu göstermeyi kolaylaştırır (yardımı ile grep):

aptitude search flash | grep ^i

Aslında, aramaları bağlamsal aramayı desteklediğinden, aptitudesizin aktardıklarınızdan çok daha güçlüdür grep:

Örneğin, bu, yüklü olan paket adında 'flash' bulunan tüm paketleri bulur:

aptitude search '~iflash'

"Kısa form" un eşdeğer bir "uzun form" u ~i:

aptitude search '?installed(flash)'

Arama kalıplarının varsayılan olarak ücretsiz (bağlantısız) olduğuna dikkat edin. Bunları demirlemek için, ' ^' (dizgenin başlangıcı) ve / veya ' $' (dizgenin sonu ) çapa desenlerini kullanmanız gerekir .

İsimleri 'ttf' veya 'font' ile başlayan tüm paketleri bulmak için:

aptitude search '(^ttf|^font)'

(Not: Bu, aptitudedoğru düzeltmesi '^(ttf|font)'düzgün çalışmadığından , bir hata için geçici bir çözümdür - adları 'ttf' ile başlayan veya 'font' içeren paketleri bulur .)

Diğer şık aptitudeözellikler:

'Firmware' içeren tüm paketleri kendi adlarına ALSO'nun açıklamalarında 'kablosuz' olduğunu göster:

aptitude search 'firmware ~dwireless'

veya uzun form:

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

(Not: kısa formda, boşlukla ayrılmış argümanlar tırnak içinde ANDed; ayrı bir argv [] komut satırı argümanları olarak iletilirse ORed olurlar.)

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 Geçerli sürümlerinden Yükseltilebilir olan tüm paketleri yeni sürümlerle gösterir:

# 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' Tavsiye Eden Paketleri Göster

$ aptitude search '~DRecommends:gcc-multilib'
i   libc6-dev-i386   - Embedded GNU C Library: 32-bit development libraries for AMD64

'Sigorta gereçlerinin' neden yüklenmesi gerekebileceğini açıklayın

$ 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)

(Bu örnekte, tüm "Tavsiye edilenler" paketlerinin yerleştirilmesinin Sıkıştırılmasından (?) Beri varsayılandan kaynaklanan çılgıncalıklar gösterilmektedir. GNome-terminalinin kurulması ntfsprogs ve fuse-utils'in yüklenmesinin sona ermesidir. Belirtilmedikçe, isteğe bağlı olan yerleşik NTFS tümleştirmesi değil.)

"Mail-transport-agent" hizmetini sağlayan tüm paketleri bulun:

$ 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

Yüklü olan, Temel veya Bağımlılıklar tarafından otomatik olarak yüklenmeyen tüm paket adlarını göster:

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

Ne yazık ki, bu malzeme oldukça kötü belgelenmiş ve sert bulmak için, ancak burada '(yetenek 'sürdürücü itibaren) en iyi referans s'.


4
Arama özellikleri şu adresten apt-getulaşılabilirapt-cache search NAME
EricR

@EricR doğru, ancak arama yeteneklerini bulamadım
niceman

4

Göre paket yönetimi hakkında Debian GNU / Linux SSS , yetenek daha apt-get daha karmaşık ve daha az karmaşık paket yönetim araçları üzerinde apt-get ve dpkg bağlıdır.

Bu nedenle, daha basit ihtiyaçlar için daha basit araçları kullanabilirsiniz, daha karmaşık ihtiyaçlar için daha karmaşık araçlara (apitude) güvenebilirsiniz.

Debian SSS'den alıntı: "yetenek dselect ve apt-get işlevinin yanı sıra her iki programda da bulunmayan birçok ek özellik sağlar."


3

Yetenek, auto tag'a bağımlılık nedeniyle kurulduğu paketleri işaretler. Şimdi bir paketi temizlerseniz veya kaldırırsanız, yetenek, temizlemek veya kaldırmak istediğiniz paketin yanında artık kullanılmayan otomatik yüklü paketleri otomatik olarak kaldırır.

Kişisel olarak, yeteneğin her zaman uygun olduğundan daha iyi olduğunu düşünmemin ana nedeni budur.


Alıntı gerekli, ancak bu zorlayıcı bir fark olurdu.
Kzqai 09:13


Aslında apt-getbunu da yapıyor apt-get autoremove <package-name>. Her ikisi de apt-getve aptitudeotomatik yüklü paketleri işaretleyin
Legionair

Ancak aptitudeher kullanıldığında otomatik paketleri temizleyin. Buna apt-getaçık bir şekilde başlaman gerek.
Anders,

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.