Kaj sta APT in Aptitude? in kakšna je resnična razlika med njima?


Aptitude in apt-get sta dve izmed priljubljenih orodij za upravljanje paketov. Oba sta sposobna opravljati vse vrste dejavnosti na paketih, vključno z namestitvijo, odstranjevanjem, iskanjem itd. A kljub temu obstajajo razlike med obema orodjema, zaradi katerih imajo uporabniki prednost pred enim. Kakšne so razlike, zaradi katerih je treba ta dva orodja obravnavati ločeno, je obseg tega članka.

Kaj je Apt

Apt ali Advanced Packaging Tool je brezplačna in odprtokodna programska oprema, ki elegantno obravnava namestitev in odstranitev programske opreme. Sprva je bil zasnovan za Debianove pakete .deb , vendar je bil združljiv z RPM Package Manager.

Apt je celotna ukazna vrstica brez grafičnega uporabniškega vmesnika. Vsakič, ko se prikliče iz ukazne vrstice, skupaj z navedbo imena paketa, ki ga je treba namestiti, ta paket najde na konfiguriranem seznamu virov, določenih v '/etc/apt/sources.list', skupaj s seznamom odvisnosti za ta paket in jih razvrsti in jih samodejno namesti skupaj s trenutnim paketom, kar uporabniku omogoča, da ne skrbi namestitve odvisnosti.

Je zelo prilagodljiv, kar uporabniku omogoča enostavno upravljanje različnih konfiguracij, na primer: dodajanje katerega koli novega vira za iskanje paketov, apt-pinning, tj. ”Nadgraditi, tj. Nadgraditi najpomembnejše pakete in pustiti najmanj pomembne.

Kaj je sposobnost?

Aptitude je prednji del naprednega orodja za pakiranje, ki funkcionalnosti doda uporabniški vmesnik in tako uporabniku omogoči interaktivno iskanje paketa ter njegovo namestitev ali odstranitev. Prvotno ustvarjen za Debain, Aptitude razširja svojo funkcionalnost tudi na distribucije na osnovi RPM.

Njegov uporabniški vmesnik temelji na knjižnici ncurses, ki mu doda različne elemente, ki jih pogosto vidimo v grafičnem uporabniškem vmesniku. Eden od njegovih vrhuncev je, da lahko posnema večino argumentov ukazne vrstice apt-get.

Na splošno je Aptitude upravitelj paketov na višji ravni, ki povzema podrobnosti nizke ravni in lahko deluje tako v besedilnem interaktivnem načinu uporabniškega vmesnika kot celo v neinteraktivnem načinu ukazne vrstice.

Če želite poznati primere APT in Aptitude s primeri iz resničnega sveta, si oglejte naslednje članke.

  1. Naučite se 25 uporabnih primerov na APT-GET in APT-CACHE
  2. Naučite se upravljanja paketov Linux z Aptitude in Dpkg

Kakšne so razlike med APT in Aptitude?

Poleg glavne razlike je v tem, da je Aptitude upravitelj paketov na visoki ravni, medtem ko je APT upravitelj paketov na nižji ravni, ki ga lahko uporabljajo tudi drugi upravitelji paketov na višji ravni, drugi glavni poudarki, ki ločujejo ta dva upravitelja paketov, pa so:

  1. Aptitude je bolj funkcionalen kot apt-get in vključuje funkcionalnosti apt-get in njegovih drugih različic, vključno z apt-mark in apt-cache.

Medtem ko apt-get obravnava vso namestitev paketov, nadgradnjo, nadgradnjo sistema, čiščenje paketa, razreševanje odvisnosti itd., Aptitude obravnava veliko več stvari kot apt, vključno s funkcionalnostmi apt-mark in apt-cache, tj. Iskanje paketa v seznam nameščenih paketov, označevanje paketa za samodejno ali ročno namestitev, držanje paketa, zaradi česar ni na voljo za nadgradnjo itd.

  1. Čeprav apt-get nima uporabniškega vmesnika, ima Aptitude samo besedilni in interaktivni uporabniški vmesnik

Apt-get kot upravitelj paketov nižje stopnje je omejen samo na ukazno vrstico, medtem ko ima orodje Aptitude višje ravni privzeti samo besedilni interaktivni vmesnik, skupaj z možnostjo delovanja ukazne vrstice z vnosom zahtevanih ukazov.

  1. Aptitude ima boljše upravljanje paketov kot apt-get

V mnogih situacijah, ki vključujejo namestitev, odstranjevanje in reševanje konfliktov za pakete, se Aptitude izkaže za boljše kot za primeren. Nekatere situacije vključujejo:

1. Med odstranjevanjem nameščenega paketa bo Aptitude samodejno odstranil neuporabljene pakete, medtem ko bi moral apt-get uporabnik to izrecno določiti z dodajanjem dodatne možnosti '—auto-remove' ali z določitvijo 'apt-get autoremove' .4

2. Za nadaljnje raziskovanje, zakaj se določeno dejanje blokira ali zakaj ali zakaj ne bi bilo treba sprejeti določenega dejanja, Aptitude ponuja ukaza why in ‘why-not’.

Tako kot: Aptitude vam lahko poišče razlog za namestitev določenega paketa tako, da pogleda seznam nameščenih paketov in preveri, ali ima kateri od predlaganih paketov odvisnosti ali katera od njihovih odvisnosti predlaga ta paket ali tako naprej.

$ 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

Tako kot tukaj je iskal razlog za namestitev paketa z imenom yaws-wiki , da ga predlaga odvisnost (yaws) , ki zagotavlja navidezni paket ( httpd-cgi) , kateri paket (dwww) je odvisen, in paket (dwww) predlaga eden od nameščenih paketov z imenom doc-base .

Ta funkcija manjka v apt-get.

3. Čeprav bi apt-get verjetno izumrl v primeru nasprotujočega si dejanja glede namestitve ali odstranitve paketa s sporočilom, lahko Aptitude predlaga možne ukrepe za odpravo tega konflikta.

Aptitude omogoča močno iskanje, ki ga lahko uporabimo za iskanje skoraj vseh paketov ne samo v sistemu, temveč tudi v celotnem repozitoriju.

Medtem ko apt-get potrebuje drugo različico apt, tj.

$ 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

Tu privzeto apt-cache in aptitude iščeta paket na celotnem seznamu paketov v repozitoriju, vendar izhod aptitude pokaže, ali je paket nameščen v sistemu, tako da poda zastavico za paket, ki je tukaj p označuje, da je paket prisoten, vendar ni nameščen, in i , kar pomeni, da je paket nameščen, medtem ko apt-cache samo navede paket in njegove enovrstne podrobnosti, ne da bi vedel, ali je paket nameščen ali ne.

1. Iskanje paketa v repozitoriju z python2.7 v imenu paketa in 2.7 v njegovem opisu.

$ 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

Tu ~ n označuje ime, ~ d pa opis. Druga oblika istega ukaza je:

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

  1. ~ i ali? Installed() : iskanje paketa samo na seznamu nameščenih paketov.
  2. ~ U ali ~ Nadgradljivo : Navede vse pakete, ki jih je mogoče nadgraditi, z najnovejšimi razpoložljivimi različicami.
  3. ~ E ali? Essential() : Paketi, ki so nameščeni ali na voljo, ki so bistveni.

$ 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 

Tako kot tukaj prikazan kratek seznam treh paketov z nameščeno različico (označeno z i ) in njihovo nadgradljivo različico (označeno z p ).

Če želite najti vse pakete, ki ponujajo storitev 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

Tako kot tukaj navajamo vse pakete, ki predlagajo paket "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 

Zaključek

V večini primerov je sintaksa Aptitude skoraj enaka sintaksi apt-get, da bi imeli uporabniki apt-get manj bolečin pri selitvi na Aptitude, vendar je poleg tega v Aptitude vključenih veliko zmogljivih funkcij zaradi česar je izbrana. Razen teh razlik, ki smo jih poudarili, če med temi dvema skrbnikoma paketov najdete še kakšno zanimivo razliko, jih v komentarjih omenite.