Hvad er APT og Aptitude? og hvad er den virkelige forskel mellem dem?


Aptitude og apt-get er to af de populære værktøjer, der håndterer pakkehåndtering. Begge er i stand til at håndtere alle former for aktiviteter på pakker inklusive installation, fjernelse, søgning osv. Men der er stadig forskelle mellem begge værktøjerne, der får brugerne til at foretrække hinanden. Hvad er de forskelle, der gør, at disse to værktøjer kan betragtes separat, er omfanget af denne artikel.

Hvad er Apt

Apt eller Advanced Packaging Tool er en gratis og open source-software, der håndfuldt håndterer installation og fjernelse af software. Oprindeligt blev det designet til Debians .deb -pakker, men det er blevet gjort kompatibelt med RPM Package Manager.

Apt er hele kommandolinjen uden GUI. Hver gang der påberåbes fra kommandolinjen sammen med angivelse af navnet på pakken, der skal installeres, finder den den pakke i konfigureret liste over kilder, der er specificeret i '/etc/apt/sources.list' sammen med listen over afhængigheder for den pakke og sorterer dem og installerer dem automatisk sammen med den aktuelle pakke, hvorved brugeren ikke kan bekymre sig om at installere afhængigheder.

Det er meget fleksibelt, så brugeren let kan styre forskellige konfigurationer, f.eks .: tilføje enhver ny kilde til at søge efter pakker, apt-pinning dvs. markere enhver pakke, der ikke er tilgængelig under systemopgradering, hvilket gør den nuværende version til den endelige version installeret, "smart" opgradering, dvs. at opgradere de vigtigste pakker og efterlade de mindst vigtige.

Hvad er Aptitude?

Aptitude er front-end til avanceret emballeringsværktøj, der tilføjer en brugergrænseflade til funktionaliteten, hvorved en bruger interaktivt kan søge efter en pakke og installere eller fjerne den. Oprindeligt oprettet til Debain udvider Aptitude også sin funktionalitet til RPM-baserede distributioner.

Dens brugergrænseflade er baseret på ncurses-biblioteket, som tilføjer forskellige elementer til det, der ofte ses i GUI'er. En af dens højdepunkter er, at den kan efterligne de fleste af apt-get's kommandolinjeargumenter.

I alt er Aptitude en pakkehåndtering på højere niveau, der abstrakterer detaljer på lavt niveau og kan fungere i både tekstbaseret interaktiv UI-tilstand og endda i ikke-interaktiv kommandolinjemodus.

Hvis du vil kende brugen af APT og Aptitude med eksempler fra den virkelige verden, skal 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

Hvad er forskellen mellem APT og Aptitude?

Bortset fra at hovedforskellen er, at Aptitude er en pakkehåndterer på højt niveau, mens APT er pakkehåndtering på lavere niveau, som kan bruges af andre pakkehåndtere på højere niveau, er andre hovedhøjdepunkter, der adskiller disse to pakkehåndtere:

  1. Aptitude har større funktionalitet end apt-get og integrerer apt-get og dets andre varianter, herunder apt-mark og apt-cache.

Mens apt-get håndterer al pakkeinstallation, opgradering, systemopgradering, rensning af pakke, løsning af afhængigheder osv., Håndterer Aptitude mange flere ting end apt, inklusive funktionerne i apt-mark og apt-cache, dvs. søger efter en pakke i liste over installerede pakker, der markerer en pakke, der skal installeres automatisk eller manuelt, og holder en pakke, der gør den utilgængelig til opgradering og så videre.

  1. Mens apt-get mangler brugergrænseflade, har Aptitude kun en tekst og interaktiv brugergrænseflade

Apt-get er et lavere niveau pakkehåndtering er kun begrænset til kommandolinjen, mens Aptitude er et højere niveau værktøj har en standard interaktiv grænseflade til kun tekst sammen med mulighed for kommandolinjedrift ved at indtaste nødvendige kommandoer.

  1. Aptitude har en bedre pakkehåndtering end apt-get

I mange situationer, der involverer installation, fjernelse og konfliktløsning for pakker, viser Aptitude sig værd i stedet for apt-get. Nogle af situationerne inkluderer:

1. Mens en eventuel installeret pakke fjernes, fjerner Aptitude automatisk ubrugte pakker, mens apt-get vil have brug for brugeren til eksplicit at angive dette ved enten at tilføje en ekstra indstilling til '—auto-remove' eller ved at angive 'apt-get autoremove' .4

2. For at undersøge nærmere, hvorfor visse handlinger bliver blokeret, eller hvorfor eller hvorfor-ikke en bestemt handling skal foretages, tilbyder Aptitude hvorfor og 'hvorfor-ikke' kommandoer.

Ligesom: Aptitude kan finde årsagen til at installere en bestemt pakke ved at kigge på listen over installerede pakker og kontrollere, om nogen af deres foreslåede pakker har en afhængighed eller nogen af deres afhængigheder antyder den pakke 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øgte det efter årsagen til at installere en pakke med navnet yaws-wiki for at være, at det er foreslået af en afhængighed (yaws) , der giver en virtuel pakke ( httpd-cgi) på hvilken pakke (dwww) har afhængighed, og pakke (dwww) foreslås af en af de installerede pakker med navnet doc-base .

Denne funktion mangler i apt-get.

3. Mens apt-get sandsynligvis vil uddø i tilfælde af modstridende handlinger vedrørende installation eller fjernelse af pakke med en besked, kan Aptitude foreslå mulige foranstaltninger til at fjerne denne konflikt.

Aptitude giver en kraftig søgning, som kan bruges til at søge i næsten enhver pakke, ikke kun på systemet, men også på hele arkivet.

Mens apt-get har brug for en anden apt-variant, dvs. apt-cache for at søge efter en pakke, giver Aptitude meget lettere og effektiv måde at søge efter en pakke, der enten er installeret eller findes i lageret, men som endnu ikke skal installeres.

$ 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øger som standard både apt-cache og aptitude efter en pakke på hele listen over pakker i lageret, men output af aptitude viser, om pakken er installeret på systemet eller ej ved at give et flag pr. Pakke, som her er p , der angiver, at pakken er til stede, men ikke er installeret, og i , som indikerer, at pakken er installeret, mens apt-cache bare viser pakken og dens en-line detaljer uden at fortælle, om pakken er installeret eller ikke.

1. Søgning efter en pakke i lageret med python2.7 i pakkens navn 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 angiver ~ n navn og ~ d angiver beskrivelse. En anden form for samme kommando er:

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

  1. ~ i eller? installed() : Søger kun efter en pakke på listen over installerede pakker.
  2. ~ U eller ~ kan opgraderes : Viser alle pakker, der kan opgraderes med deres nyeste tilgængelige versioner.
  3. ~ E eller? Essential() : Disse pakker er enten installerede eller tilgængelige, som er vigtige.

$ 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 med 3 pakker med installeret version (angivet med i ) og deres nuværende version, der kan opgraderes (angivet med p ).

For at finde alle pakker, der leverer smtp-service:

$ 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

Ligesom her viser vi alle pakker, der foreslår en '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 

Konklusion

I de fleste tilfælde holdes syntaks for Aptitude næsten det samme som for apt-get, for at få brugere af apt-get til at have mindre smerte ved at migrere til Aptitude, men ud over dette er mange kraftfulde funktioner integreret i Aptitude der gør det til den der skal vælges. Bortset fra disse forskelle, som vi fremhævede, skal du nævne dem i dine kommentarer, hvis du finder andre interessante forskelle mellem disse to pakkeforvaltere.