Vyhledávání na webu

Co je APT a Aptitude? a jaký je mezi nimi skutečný rozdíl?


Aptitude a apt-get jsou dva oblíbené nástroje pro správu balíčků. Oba jsou schopny zpracovávat všechny druhy činností na balíčcích včetně instalace, odstranění, vyhledávání atd. Mezi oběma nástroji však stále existují rozdíly, díky nimž uživatelé upřednostňují jeden před druhým. Jaké jsou tyto rozdíly, kvůli kterým je třeba tyto dva nástroje posuzovat samostatně, je rozsah tohoto článku.

Co je Apt

Apt nebo Advanced Packaging Tool je bezplatný software s otevřeným zdrojovým kódem, který elegantně zvládne instalaci a odstranění softwaru. Původně byl navržen pro balíčky .deb Debianu, ale byl kompatibilní s RPM Package Manager.

Apt je celý příkazový řádek bez GUI. Kdykoli je vyvoláno z příkazového řádku spolu se zadáním názvu balíčku, který se má nainstalovat, najde tento balíček v nakonfigurovaném seznamu zdrojů specifikovaných v '/etc/apt/sources.list' spolu se seznamem závislostí pro tento balíček a seřadí je a automaticky je nainstaluje spolu s aktuálním balíčkem, takže se uživatel nemusí starat o instalaci závislostí.

Je vysoce flexibilní a umožňuje uživateli snadno ovládat různé konfigurace, například: přidání jakéhokoli nového zdroje pro vyhledávání balíčků, apt-pinning, tj. označení jakéhokoli balíčku za nedostupného během upgradu systému, čímž se jeho aktuální verze stane nainstalovanou konečnou verzí, „chytrý“ upgrade, tj. upgrade nejdůležitějších balíčků a ponechání těch nejméně důležitých.

Co je Aptitude?

Aptitude je front-end k pokročilému balicímu nástroji, který k funkcionalitě přidává uživatelské rozhraní, a umožňuje tak uživateli interaktivně vyhledat balíček a nainstalovat nebo odebrat jej. Aptitude, původně vytvořený pro Debain, rozšiřuje svou funkčnost také na distribuce založené na RPM.

Jeho uživatelské rozhraní je založeno na knihovně ncurses, která do něj přidává různé prvky běžně používané v GUI. Jednou z jeho předností je, že dokáže emulovat většinu argumentů příkazového řádku apt-get.

Celkově vzato je Aptitude správce balíčků vyšší úrovně, který abstrahuje detaily nízké úrovně a může pracovat jak v textovém interaktivním režimu uživatelského rozhraní, tak i v neinteraktivním režimu příkazového řádku.

Pokud chcete znát použití APT a Aptitude s příklady ze skutečného světa, měli byste zamířit do následujících článků.

  1. Naučte se 25 užitečných příkladů na APT-GET a APT-CACHE
  2. Naučte se správu balíků Linuxu s Aptitude a Dpkg

Jaké jsou rozdíly mezi APT a Aptitude?

Kromě toho, že hlavní rozdíl je v tom, že Aptitude je správce balíčků na vysoké úrovni, zatímco APT je správce balíčků nižší úrovně, který může být používán jinými správci balíčků vyšší úrovně, další hlavní přednosti, které oddělují tyto dva správce balíčků, jsou:

  1. Aptitude je ve srovnání s apt-get rozsáhlejší a integruje funkce apt-get a jeho dalších variant včetně apt-mark a apt -mezipaměť.

Zatímco apt-get zvládá veškerou instalaci balíčků, up-gradaci, aktualizaci systému, čištění balíčku, vyřešení závislostí atd., Aptitude zvládne mnohem více věcí než apt, včetně funkcí apt-mark a apt-cache, tj. vyhledání balíčku v seznamu nainstalovaných balíčků, označení balíčku, který má být nainstalován automaticky nebo ručně, podržení balíčku, který jej znepřístupní pro aktualizaci a tak dále.

  1. Zatímco apt-get postrádá uživatelské rozhraní, Aptitude má pouze textové a interaktivní uživatelské rozhraní

Apt-get, který je správcem balíčků nižší úrovně, je omezen pouze na příkazový řádek, zatímco Aptitude jako nástroj vyšší úrovně má výchozí interaktivní rozhraní pouze pro text spolu s možností ovládání z příkazového řádku zadáním požadovaného příkazy.

  1. Aptitude má lepší správu balíčků než apt-get

V mnoha situacích zahrnujících instalaci, odstranění a řešení konfliktů balíčků se Aptitude osvědčí spíše než apt-get. Některé ze situací zahrnují:

1. Při odstraňování jakéhokoli nainstalovaného balíčku Aptitude automaticky odstraní nepoužívané balíčky, zatímco apt-get by potřeboval, aby to uživatel výslovně uvedl buď přidáním další možnost '—auto-remove' nebo zadání 'apt-get autoremove'.4

2. Chcete-li dále prozkoumat, proč je určitá akce blokována nebo proč či proč-neměla by být určitá akce provedena, nabízí Aptitude 'proč' a ' proč-ne'příkazy.

To se mi líbí: Aptitude vám může najít důvod k instalaci určitého balíčku tak, že se podívá do seznamu nainstalovaných balíčků a zkontroluje, zda některý z jejich navrhovaných balíčků nemá závislost nebo některá z jejich závislostí naznačuje, že balíček nebo tak dále .

$ 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

Stejně jako zde hledalo důvod pro instalaci balíčku s názvem 'yaws-wiki', protože to bylo navrženo závislostí (yaws), která poskytuje virtuální balíček (httpd-cgi) na kterém balíku (dwww) je závislý a balík (dwww) je navržen jedním z nainstalovaných balíků s názvem ' doc-base'.

Tato funkce v apt-get chybí.

3. Zatímco apt-get by pravděpodobně zanikl v případě konfliktní akce týkající se instalace nebo odstranění balíčku se zprávou, Aptitude může navrhnout možná opatření k odstranění tohoto konfliktu.

Aptitude poskytuje výkonné vyhledávání, které lze použít k prohledávání téměř jakéhokoli balíčku nejen v systému, ale také v celém úložišti.

Zatímco apt-get potřebuje k vyhledání balíčku jinou variantu apt, tj. apt-cache, Aptitude poskytuje mnohem jednodušší a efektivnější způsob, jak vyhledat balíček, který je buď nainstalovaný nebo přítomný. v úložišti, ale ještě bude nainstalován.

Hledání balíčku pomocí apt-cache vs Aptitude

$ 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

Zde ve výchozím nastavení jak apt-cache, tak aptitude hledají balíček na celém seznamu balíčků v úložišti, ale výstup aptitude ukazuje, zda je balíček nainstalován v systému nebo ne uvedením příznaku pro balíček, kterým je zde 'p' označující, že balíček je přítomen, ale není nainstalován, a 'i', což znamená, že balíček je nainstalován, zatímco apt -cache pouze vypíše balíček a jeho jednořádkové podrobnosti, aniž by řekl, zda je balíček nainstalován nebo ne.

Některé další příklady pokročilého hledání balíčků pomocí Aptitude

1. Hledání balíčku v úložišti s 'python2.7' v názvu balíčku a '2.7' v jeho popisu.

$ 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

Zde '~n' označuje název a '~d' označuje popis. Další forma stejného příkazu je:

aptitude search '?name(python2.7) ?description(2.7)'
Některé další příznaky zahrnují:
  1. ~i nebo ?installed(): Hledání balíčku pouze v seznamu nainstalovaných balíčků.
  2. ~U nebo ~Upgradable: Zobrazí seznam všech balíčků, které lze upgradovat na jejich nejnovější dostupné verze.
  3. ~E nebo ?Essential(): Tyto balíčky buď nainstalované nebo dostupné, které jsou nezbytné.
$ 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 

Jako zde zobrazený krátký seznam 3 balíčků s nainstalovanou verzí (označenou 'i') a přítomnou jejich upgradovatelnou verzí (označenou 'p').

2. Vyhledání všech balíčků, které poskytují konkrétní službu

Chcete-li najít všechny balíčky, které poskytují službu smtp:

$ 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. Nalezení všech balíčků, které navrhují určitý balíček

Stejně jako zde uvádíme všechny balíčky, které navrhují balíček ‚gcc‘.

$ 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ávěr

Takže ve většině případů je syntaxe Aptitude zachována téměř stejná jako syntaxe apt-get, aby uživatelé apt-get měli méně starostí s migrací na Aptitude , ale kromě toho je v Aptitude integrováno mnoho výkonných funkcí, které z něj činí ten, který je třeba vybrat. Kromě těchto rozdílů, které jsme zdůraznili, pokud najdete nějaké další zajímavé rozdíly mezi těmito dvěma správci balíčků, zmiňte je ve svých komentářích.