APT ve Yetenek nedir? ve Aralarındaki Gerçek Fark Nedir?


Aptitude ve apt-get, paket yönetimini yöneten popüler araçlardan ikisidir. Her ikisi de paketler üzerinde kurulum, kaldırma, arama vb. dahil olmak üzere her türlü etkinliği gerçekleştirebilir. Ancak yine de her iki araç arasında kullanıcıların birini diğerine tercih etmesine neden olan farklılıklar vardır. Bu iki aracın ayrı ayrı ele alınmasını sağlayan farklılıkların neler olduğu bu makalenin kapsamını oluşturmaktadır.

Apt nedir?

Apt veya Gelişmiş Paketleme Aracı, yazılımın kurulumunu ve kaldırılmasını sorunsuz bir şekilde gerçekleştiren ücretsiz ve açık kaynaklı bir yazılımdır. Başlangıçta Debian'ın .deb paketleri için tasarlandı ancak RPM Paket Yöneticisi ile uyumlu hale getirildi.

Apt, GUI içermeyen tam bir komut satırıdır. Yüklenecek paketin adı belirtilerek komut satırından çağrıldığında, bu paketi '/etc/apt/sources.list' dosyasında belirtilen yapılandırılmış kaynaklar listesinde ve bağımlılıklar listesinde bulur. bu paket için bunları sıralar ve geçerli paketle birlikte otomatik olarak yükler, böylece kullanıcının bağımlılık kurma endişesinden kurtulmasına olanak tanır.

Kullanıcının çeşitli konfigürasyonları kolayca kontrol etmesine olanak tanıyan son derece esnektir; örneğin: paketleri aramak için herhangi bir yeni kaynak eklemek, apt-pinleme, yani sistem yükseltmesi sırasında mevcut olmayan herhangi bir paketi işaretlemek ve böylece mevcut sürümünün nihai sürümünün kurulu olmasını sağlamak, “akıllı” yükseltme, yani en önemli paketleri yükseltmek ve en az önemli olanları bırakmak.

Yetenek nedir?

Aptitude, işlevselliğe bir kullanıcı arayüzü ekleyen, böylece kullanıcının etkileşimli olarak bir paketi aramasına ve paketi kurmasına veya kaldırmasına olanak tanıyan gelişmiş paketleme aracının ön uçudur. Başlangıçta Debain için oluşturulan Aptitude, işlevselliğini RPM tabanlı dağıtımlara da genişletiyor.

Kullanıcı arayüzü, GUI'lerde yaygın olarak görülen çeşitli öğeleri ekleyen ncurses kitaplığını temel alır. Öne çıkan özelliklerinden biri apt-get'in komut satırı argümanlarının çoğunu taklit edebilmesidir.

Toplamda Aptitude, düşük düzeydeki ayrıntıları soyutlayan ve hem metin tabanlı etkileşimli kullanıcı arayüzü modunda hem de etkileşimli olmayan komut satırı modunda çalışabilen üst düzey bir paket yöneticisidir.

APT ve Aptitude'un kullanımını gerçek dünya örnekleriyle öğrenmek istiyorsanız aşağıdaki makalelere göz atmalısınız.

  1. APT-GET ve APT-CACHE ile İlgili 25 Faydalı Örnek Öğrenin
  2. Aptitude ve Dpkg ile Linux Paket Yönetimini Öğrenin

APT ve Yetenek Arasındaki Farklar Nelerdir?

Temel farkın yanı sıra, Aptitude'un üst düzey bir paket yöneticisi olması, APT'nin ise diğer üst düzey paket yöneticileri tarafından kullanılabilen alt düzey paket yöneticisi olması dışında, diğer ana Bu iki paket yöneticisini ayıran önemli noktalar şunlardır:

  1. Aptitude işlevsellik açısından apt-get'ten daha geniştir ve apt-get ile onun apt-mark ve apt dahil diğer varyantlarının işlevlerini entegre eder -önbellek.

apt-get tüm paket kurulumunu, yükseltmeyi, sistem yükseltmeyi, paketi temizlemeyi, bağımlılıkları çözmeyi vb. yönetirken Aptitude, apt-mark işlevleri de dahil olmak üzere apt'den çok daha fazla işlemi gerçekleştirir. ve apt-cache, yani kurulu paketler listesinde bir paket aramak, bir paketi otomatik veya manuel olarak kurulacak şekilde işaretlemek, bir paketi yükseltme için kullanılamaz hale getirmek için tutmak vb.

  1. Apt-get'in kullanıcı arayüzü olmasa da Aptitude'un salt metinden oluşan ve etkileşimli bir kullanıcı arayüzü vardır

Daha düşük seviyeli bir paket yöneticisi olan Apt-get yalnızca komut satırıyla sınırlıdır; daha yüksek seviyeli bir araç olan Aptitude ise varsayılan salt metinden oluşan etkileşimli bir arayüze ve gerekli komutları girerek komut satırı işlemi yapma seçeneğine sahiptir. komutlar.

  1. Aptitude apt-get'ten daha iyi bir paket yönetimine sahiptir

Paketlerin kurulumunu, kaldırılmasını ve çakışma çözümünü içeren birçok durumda Aptitude, apt-get yerine değerini kanıtlıyor. Durumlardan bazıları şunlardır:

1. Yüklü herhangi bir paketi kaldırırken, Aptitude kullanılmayan paketleri otomatik olarak kaldıracaktır; apt-get ise kullanıcının şunu ekleyerek bunu açıkça belirtmesini gerektirecektir: ek '—auto-remove' seçeneği veya 'apt-get autoremove' belirtme.4

2. Belirli bir eylemin neden engellendiğini veya belirli bir eylemin neden veya neden yapılmaması gerektiğini daha fazla araştırmak için Aptitude 'why' ve ' seçeneklerini sunar. neden olmasın' komutları.

Beğen: Aptitude, kurulu paketler listesine bakarak ve önerilen paketlerden herhangi birinin bir bağımlılığı olup olmadığını veya bağımlılıklarından herhangi birinin o paketi veya benzeri bir şeyi önerip önermediğini kontrol ederek belirli bir paketi kurmanızın nedenini bulabilir. .

$ aptitude why yaws-wiki
i   doc-base  Suggests   dhelp | dwww | doc-central | yelp | khelpcenter4
p   dwww      Depends    apache2 | httpd-cgi
p   yaws      Provides   httpd-cgi
p   yaws      Suggests   yaws-wiki

Burada olduğu gibi, 'yaws-wiki' adlı bir paketin kurulmasının nedeninin, (yaws) sanal paketi sağlayan bir bağımlılık tarafından önerilmesi olduğunu aradı. >(httpd-cgi) (dwww) paketinin bağımlı olduğu ve (dwww) paketinin ' adlı kurulu paketlerden biri tarafından önerildiği yer doc-base'.

Bu özellik apt-get'te eksik.

3. Paketin bir mesajla kurulumu veya kaldırılmasıyla ilgili çakışan eylemler olması durumunda apt-get muhtemelen ortadan kalkacak olsa da, Aptitude öneride bulunabilir Bu çatışmayı ortadan kaldırmak için olası önlemler.

Aptitude, yalnızca sistemdeki değil aynı zamanda tüm depodaki hemen hemen her paketi aramak için kullanılabilecek güçlü bir arama sağlar.

apt-get'in bir paketi aramak için başka bir apt varyantına, yani apt-cache'e ihtiyacı olmasına rağmen Aptitude, kurulu veya mevcut bir paketi aramak için çok daha kolay ve etkili bir yol sağlar. depoda ama henüz kurulmadı.

Apt-cache vs Aptitude kullanarak bir paket arama

$ apt-cache search 'python' | head -n4
kate - powerful text editor
kcachegrind-converters - format converters for KCachegrind profiler visualisation tool
kig - interactive geometry tool for KDE
python-kde4 - Python bindings for the KDE Development Platform

$ aptitude search 'python' | head -n4
i   bpython                         - fancy interface to the Python interpreter 
p   bpython-gtk                     - fancy interface to the Python interpreter 
p   bpython-urwid                   - fancy interface to the Python interpreter 
p   bpython3                        - fancy interface to the Python3 interpreter

Burada, varsayılan olarak hem apt-cache hem de aptitude, depodaki paketlerin tam listesinde bir paket arar, ancak aptitude çıktısı, paketin sistemde yüklü olup olmadığını veya paket başına bir bayrak vererek değil; burada 'p' paketin mevcut olduğunu ancak kurulmadığını belirtir ve 'i' paketin kurulu olduğunu belirtir, oysa apt -cache, paketin kurulu olup olmadığını belirtmeden sadece paketi ve onun tek satırlık ayrıntılarını listeler.

Aptitude ile gelişmiş paket aramanın diğer bazı örnekleri

1. Depoda, paket adında 'python2.7' ve açıklamasında '2.7' bulunan bir paket aranıyor.

$ aptitude search '~npython2.7 ~d2.7'
p   idle-python2.7                   - IDE for Python (v2.7) using Tkinter       
i   libpython2.7                     - Shared Python runtime library (version 2.7
p   libpython2.7:i386                - Shared Python runtime library (version 2.7
p   libpython2.7-dbg                 - Debug Build of the Python Interpreter (ver
p   libpython2.7-dbg:i386            - Debug Build of the Python Interpreter (ver
i A libpython2.7-dev                 - Header files and a static library for Pyth
p   libpython2.7-dev:i386            - Header files and a static library for Pyth
i   libpython2.7-minimal             - Minimal subset of the Python language (ver
p   libpython2.7-minimal:i386        - Minimal subset of the Python language (ver
i   libpython2.7-stdlib              - Interactive high-level object-oriented lan
p   libpython2.7-stdlib:i386         - Interactive high-level object-oriented lan
p   libpython2.7-testsuite           - Testsuite for the Python standard library 
i   python2.7                        - Interactive high-level object-oriented lan
p   python2.7:i386                   - Interactive high-level object-oriented lan
p   python2.7-dbg                    - Debug Build of the Python Interpreter (ver
p   python2.7-dbg:i386               - Debug Build of the Python Interpreter (ver
i A python2.7-dev                    - Header files and a static library for Pyth
p   python2.7-dev:i386               - Header files and a static library for Pyth
p   python2.7-doc                    - Documentation for the high-level object-or
p   python2.7-examples               - Examples for the Python language (v2.7)   
i   python2.7-minimal                - Minimal subset of the Python language (ver
p   python2.7-minimal:i386           - Minimal subset of the Python language (ver

Burada '~n' adı belirtir ve '~d' açıklamayı belirtir. Aynı komutun diğer şekli:

aptitude search '?name(python2.7) ?description(2.7)'
Diğer bazı bayraklar şunları içerir:
  1. ~i veya ?installed(): Yalnızca kurulu paketler listesinde bir paket aranıyor.
  2. ~U veya ~Yükseltilebilir: Mevcut en son sürümleriyle yükseltilebilen tüm paketleri listeler.
  3. ~E veya ?Essential(): Önemli olan yüklü veya mevcut paketler.
$ aptitude versions '?Upgradable' | head -n 12
Package apache2:
ph  2.4.7-1ubuntu4                                trusty                    500 
ph  2.4.7-1ubuntu4.5                              trusty-security           500 
ih  2.4.7-1ubuntu4.8                                                        100 
ph  2.4.7-1ubuntu4.9                              trusty-updates            500 

Package apache2-bin:
p A 2.4.7-1ubuntu4                                trusty                    500 
p A 2.4.7-1ubuntu4.5                              trusty-security           500 
i A 2.4.7-1ubuntu4.8                                                        100 
p A 2.4.7-1ubuntu4.9                              trusty-updates            500 

Burada, kurulu sürüme sahip ('i' ile gösterilir) ve yükseltilebilir sürüme sahip ('p' ile gösterilir) 3 paketin kısa bir listesi gösterilir.

2. Belirli bir hizmeti sağlayan tüm paketleri bulma

smtp hizmeti sağlayan tüm paketleri bulmak için:

$ aptitude search '?provides(smtp)'
p   libghc-smtpclient-dev            - Simple Haskell SMTP client library        
p   libghc-smtpclient-dev:i386       - Simple Haskell SMTP client library        
p   libghc-smtpclient-prof           - Simple Haskell SMTP client library; profil
p   libghc-smtpclient-prof:i386      - Simple Haskell SMTP client library; profil
p   syslog-ng-mod-smtp               - Enhanced system logging daemon (SMTP plugi
p   syslog-ng-mod-smtp:i386          - Enhanced system logging daemon (SMTP plugi

3. Belirli bir paketi öneren tüm paketleri bulma

Burada olduğu gibi 'gcc' paketini öneren tüm paketleri listeliyoruz.

$ aptitude search '~DSuggests:gcc' | head -n10
p   bochs                           - IA-32 PC emulator                         
p   bochs:i386                      - IA-32 PC emulator                         
p   cpp-4.4                         - GNU C preprocessor                        
p   cpp-4.4:i386                    - GNU C preprocessor                        
p   cpp-4.6                         - GNU C preprocessor                        
p   cpp-4.6:i386                    - GNU C preprocessor                        
p   cpp-4.7                         - GNU C preprocessor                        
p   cpp-4.7:i386                    - GNU C preprocessor                        
p   cpp-4.7-arm-linux-gnueabi       - GNU C preprocessor                        
p   cpp-4.7-arm-linux-gnueabi:i386  - GNU C preprocessor 

Çözüm

Bu nedenle çoğu durumda Aptitude'un sözdizimi apt-get ile hemen hemen aynı tutulur, böylece apt-get kullanıcılarının Aptitude'a geçişte daha az sıkıntı yaşaması sağlanır , ancak buna ek olarak Aptitude'un seçilecek kişi olmasını sağlayan birçok güçlü özellik entegre edilmiştir. Vurguladığımız bu farklılıkların dışında, bu iki paket yöneticisi arasında başka ilginç farklılıklar bulursanız yorumlarınızda bunlardan bahsedin.