Hva er APT og Aptitude? og hva er den virkelige forskjellen mellom dem?


Aptitude og apt-get er to av de populære verktøyene som håndterer pakkehåndtering. Begge er i stand til å håndtere alle typer aktiviteter på pakker, inkludert installasjon, fjerning, søk osv. Men det er fortsatt forskjeller mellom begge verktøyene som gjør at brukere foretrekker det ene fremfor det andre. Hva er disse forskjellene som gjør at disse to verktøyene må vurderes separat, er omfanget av denne artikkelen.

Hva er Apt

Apt eller Advanced Packaging Tool er en gratis programvare med åpen kildekode som på en elegant måte håndterer installasjon og fjerning av programvare. Opprinnelig ble den designet for Debians .deb-pakker, men den er gjort kompatibel med RPM Package Manager.

Apt er hele kommandolinjen uten GUI. Når den påkalles fra kommandolinjen sammen med å spesifisere navnet på pakken som skal installeres, finner den den pakken i den konfigurerte listen over kilder spesifisert i '/etc/apt/sources.list' sammen med listen over avhengigheter for den pakken og sorterer dem og installerer dem automatisk sammen med den gjeldende pakken og lar brukeren ikke bekymre seg for å installere avhengigheter.

Det er svært fleksibelt, slik at brukeren enkelt kan kontrollere ulike konfigurasjoner, som: legge til en ny kilde for å søke etter pakker, apt-pinning, dvs. markere enhver pakke som er utilgjengelig under systemoppgradering, og dermed gjøre gjeldende versjon til den endelige versjonen installert, \smart\ ” oppgradere dvs. oppgradere de viktigste pakkene og forlate de minst viktige.

Hva er Aptitude?

Aptitude er front-end til avansert pakkeverktøy som legger til et brukergrensesnitt til funksjonaliteten, slik at en bruker interaktivt kan søke etter en pakke og installere eller fjerne den. Opprinnelig opprettet for Debain, utvider Aptitude funksjonaliteten til RPM-baserte distribusjoner også.

Brukergrensesnittet er basert på ncurses-biblioteket som legger til forskjellige elementer til det som ofte sees i GUI-er. Et av høydepunktene er at den kan etterligne de fleste av apt-gets kommandolinjeargumenter.

Alt i alt er Aptitude en pakkeforvalter på høyere nivå som abstraherer detaljer på lavt nivå, og kan operere i både tekstbasert interaktiv brukergrensesnittmodus og til og med i ikke-interaktiv kommandolinjemodus.

Hvis du vil vite bruken av APT og Aptitude med eksempler fra den virkelige verden, bør du gå over til følgende artikler.

  1. Lær 25 nyttige eksempler på APT-GET og APT-CACHE
  2. Lær Linux Package Management med Aptitude og Dpkg

Hva er forskjellene mellom APT og Aptitude?

Bortsett fra at hovedforskjellen er at Aptitude er en pakkebehandler på høyt nivå mens APT er pakkebehandler på lavere nivå som kan brukes av andre pakkebehandlere på høyere nivå, er andre hovedhøydepunkter som skiller disse to pakkebehandlerne:

  1. Aptitude har større funksjonalitet enn apt-get og integrerer funksjonaliteten til apt-get og dets andre varianter, inkludert apt-mark og apt-cache.

Mens apt-get håndterer all pakkeinstallasjon, oppgradering, systemoppgradering, purging-pakke, løsning av avhengigheter osv., håndterer Aptitude mye mer enn apt, inkludert funksjonaliteten til apt-mark og apt-cache, dvs. å søke etter en pakke i liste over installerte pakker, markere en pakke som skal installeres automatisk eller manuelt, holde en pakke som gjør den utilgjengelig for oppgradering og så videre.

  1. Selv om apt-get mangler brukergrensesnitt, har Aptitude et interaktivt brukergrensesnitt som kun består av tekst

Apt-get er en pakkebehandling på lavere nivå begrenset til kommandolinjen, mens Aptitude er et verktøy på høyere nivå har et standard interaktivt grensesnitt for tekst bare sammen med mulighet for kommandolinjeoperasjon ved å legge inn nødvendige kommandoer.

  1. Aptitude har en bedre pakkeadministrasjon enn apt-get

I mange situasjoner som involverer installasjon, fjerning og konfliktløsning for pakker, beviser Aptitude sin verdi i stedet for apt-get. Noen av situasjonene inkluderer:

1. Mens du fjerner en installert pakke, vil Aptitude automatisk fjerne ubrukte pakker, mens apt-get vil trenge at brukeren spesifiserer dette eksplisitt ved enten å legge til tilleggsalternativet '—auto-remove' eller spesifisere 'apt-get autoremove'.4

2. For å undersøke nærmere hvorfor en bestemt handling blir blokkert eller hvorfor eller hvorfor ikke en bestemt handling bør utføres, tilbyr Aptitude kommandoene why og 'why-not'.

Som: Aptitude kan finne grunnen til å installere en bestemt pakke ved å se i listen over installerte pakker og sjekke om noen av de foreslåtte pakkene har en avhengighet eller noen av deres avhengigheter antyder den pakken eller så videre.

$ 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

Som her søkte den etter at grunnen til å installere en pakke kalt yaws-wiki er at den er foreslått av en avhengighet (yaws) som gir en virtuell pakke ( httpd-cgi) som pakken (dwww) har avhengighet av og pakken (dwww) er foreslått av en av de installerte pakkene kalt doc-base .

Denne funksjonen mangler i apt-get.

3. Mens apt-get sannsynligvis ville dø ut i tilfelle motstridende handlinger angående installasjon eller fjerning av pakke med en melding, kan Aptitude foreslå mulige tiltak for å fjerne denne konflikten.

Aptitude gir et kraftig søk som kan brukes til å søke i nesten hvilken som helst pakke, ikke bare på systemet, men også på hele depotet.

Mens apt-get trenger en annen apt-variant, det vil si apt-cache for å søke etter en pakke, gir Aptitude en mye enklere og effektiv måte å søke etter en pakke som enten er installert eller tilstede i repository, men som ennå ikke er installert.

$ 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

Her søker både apt-cache og aptitude som standard etter en pakke på hele listen over pakker i repository, men output of aptitude viser om pakken er installert på systemet eller ikke ved å gi et per-pakke-flagg som her er p som indikerer at pakken er til stede, men ikke installert og i som indikerer at pakken er installert, mens apt-cache bare viser pakken og dens énlinjedetalj uten å fortelle om pakken er installert eller ikke.

1. Søke etter en pakke i repository med python2.7 i navnet på pakken og 2.7 i beskrivelsen.

$ 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

Her indikerer ~n navn og ~d indikerer beskrivelse. En annen form for samme kommando er:

$ aptitude search '?name(python2.7) ?description(2.7)'

  1. ~i eller ?installed(): Søker kun etter en pakke i listen over installerte pakker.
  2. ~U eller ~Oppgraderbar: Viser alle pakkene som kan oppgraderes med de nyeste tilgjengelige versjonene.
  3. ~E eller ?Essential(): Disse pakkene er enten installert eller tilgjengelige, som er avgjørende.

$ 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 

Som en kort liste vist her over 3 pakker med installert versjon (indikert med i) og deres oppgraderbare versjon til stede (indikert med p).

For å finne alle pakkene som tilbyr smtp-tjeneste:

$ 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

Som her, viser vi alle pakker som foreslår gcc-pakke.

$ 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 

Konklusjon

Så for de fleste tilfellene holdes syntaksen til Aptitude nesten den samme som for apt-get, for å få brukere av apt-get til å ha mindre smerter ved å migrere til Aptitude, men i tillegg til dette er mange kraftige funksjoner integrert i Aptitude som gjør det til den som skal velges. Bortsett fra disse forskjellene som vi fremhevet, hvis du finner andre interessante forskjeller mellom disse to pakkeforvalterne, nevner du dem i kommentarene dine.