Mikä on APT ja Aptitude? ja mitä eroa niillä on?


Aptitude ja apt-get ovat kaksi suosittua paketinhallintatyökalua. Molemmat pystyvät käsittelemään kaikenlaisia paketteja koskevia toimintoja, mukaan lukien asennus, poisto, haku jne. Mutta silti molempien työkalujen välillä on eroja, joiden vuoksi käyttäjät suosivat toista. Mitkä ovat ne erot, joiden vuoksi näitä kahta työkalua on tarkasteltava erikseen, kuuluu tämän artikkelin soveltamisalaan.

Mikä on Apt

Apt tai Advanced Packaging Tool on ilmainen ja avoimen lähdekoodin ohjelmisto, joka hoitaa ohjelmiston asennuksen ja poistamisen sulavasti. Alun perin se suunniteltiin Debianin .deb-paketeille, mutta se on tehty yhteensopivaksi RPM Package Managerin kanssa.

Apt on koko komentorivi ilman graafista käyttöliittymää. Aina kun se kutsutaan komentoriviltä ja määritetään asennettavan paketin nimi, se löytää paketin määritetystä lähdeluettelosta, joka on määritetty kohdassa '/etc/apt/sources.list' sekä riippuvuusluettelo. kyseiselle paketille ja lajittelee ne ja asentaa ne automaattisesti nykyisen paketin mukana, jolloin käyttäjän ei tarvitse huolehtia riippuvuuksien asentamisesta.

Se on erittäin joustava, joten käyttäjä voi hallita helposti erilaisia määrityksiä, kuten: minkä tahansa uuden lähteen lisääminen pakettien etsimiseen, apt-pinning eli minkä tahansa paketin merkitseminen pois käytöstä järjestelmän päivityksen aikana, jolloin sen nykyinen versio on sen viimeinen asennettu versio, "älykäs" päivitys eli tärkeimpien pakettien päivittäminen ja vähiten tärkeimpien pakettien jättäminen.

Mikä on Aptitude?

Aptitude on edistyneen pakkaustyökalun käyttöliittymä, joka lisää toimintoon käyttöliittymän, jolloin käyttäjä voi etsiä pakettia interaktiivisesti ja asentaa tai poistaa sen. Alun perin Debainille luotu Aptitude laajentaa toiminnallisuutensa myös RPM-pohjaisiin jakeluihin.

Sen käyttöliittymä perustuu ncurses-kirjastoon, joka lisää siihen erilaisia graafisissa käyttöliittymissä yleisesti nähtyjä elementtejä. Yksi sen kohokohdista on, että se voi emuloida useimpia apt-getin komentoriviargumentteja.

Kaiken kaikkiaan Aptitude on ylemmän tason paketinhallinta, joka tiivistää matalan tason yksityiskohdat ja voi toimia sekä tekstipohjaisessa interaktiivisessa käyttöliittymätilassa että jopa komentorivin ei-interaktiivisessa tilassa.

Jos haluat tietää APT:n ja Aptituden käytöstä tosimaailman esimerkein, sinun tulee siirtyä seuraaviin artikkeleihin.

  1. Opi 25 hyödyllistä esimerkkiä APT-GET:stä ja APT-CACHEsta
  2. Opi Linux-pakettien hallinta Aptituden ja Dpkg:n avulla

Mitä eroa APT:llä ja Aptitudella on?

Sen lisäksi, että tärkein ero on se, että Aptitude on korkean tason paketinhallinta, kun taas APT on alemman tason paketinhallinta, jota muut ylemmän tason paketinhallintaohjelmat voivat käyttää kohokohdat, jotka erottavat nämä kaksi paketinhallintaa, ovat:

  1. Aptitude on toiminnaltaan laajempi kuin apt-get, ja se yhdistää apt-getin ja sen muiden muunnelmien toimintoja, mukaan lukien apt-mark ja apt -välimuisti.

Vaikka apt-get hoitaa kaiken paketin asennuksen, päivityksen, järjestelmän päivityksen, paketin tyhjennyksen, riippuvuuksien ratkaisemisen jne., Aptitude käsittelee paljon enemmän asioita kuin apt, mukaan lukien apt-markin toiminnot. ja apt-cache eli paketin etsiminen asennettujen pakettien luettelosta, paketin merkitseminen automaattisesti tai manuaalisesti asennettavaksi, paketin pitäminen hallussa, jolloin se ei ole käytettävissä päivitystä varten ja niin edelleen.

  1. Vaikka apt-getistä puuttuu käyttöliittymä, Aptitudessa on vain teksti ja interaktiivinen käyttöliittymä

Apt-get, joka on alemman tason paketinhallinta, on rajoitettu vain komentoriville, kun taas Aptitude on korkeamman tason työkalu, ja siinä on oletusarvoinen vain teksti -interaktiivinen käyttöliittymä sekä mahdollisuus komentorivitoimintoon kirjoittamalla pakollinen. komentoja.

  1. Aptitudella on parempi paketinhallinta kuin apt-getillä

Monissa tilanteissa, joihin liittyy pakettien asennus, poistaminen ja konfliktien ratkaiseminen, Aptitude osoittaa arvonsa apt-getin sijaan. Joitakin tilanteita ovat mm.

1. Kun poistat minkä tahansa asennetun paketin, Aptitude poistaa automaattisesti käyttämättömät paketit, kun taas apt-get edellyttää, että käyttäjä määrittää tämän erikseen joko lisäämällä lisävaihtoehto '—auto-remove' tai määrittämällä 'apt-get autoremove'.4

2. Aptitude tarjoaa "miksi" ja " tutkiakseen tarkemmin, miksi tietty toiminta estetään tai miksi tai miksi ei pitäisi tehdä tiettyä toimintoa. miksi-ei'-komentoja.

Tykkää: Aptitude voi löytää syyn tietyn paketin asentamiseen katsomalla asennettujen pakettien luetteloa ja tarkistamalla, onko jollain sen ehdottamilla paketeilla riippuvuuksia tai jokin niiden riippuvuuksista viittaa siihen, että paketti tai niin edelleen .

$ 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

Kuten täällä, se etsi syytä asentaa paketti nimeltä 'yaws-wiki', koska sen ehdottaa riippuvuus (yaws), joka tarjoaa virtuaalisen paketin (httpd-cgi) josta paketista (dwww) on riippuvainen ja pakettia (dwww) ehdottaa jokin asennetuista paketeista nimeltä ' doc-base'.

Tämä ominaisuus puuttuu apt-getistä.

3. Vaikka apt-get todennäköisesti sammuisi, jos viestin sisältävän paketin asennus tai poistaminen tapahtuu ristiriitaisesti, Aptitude voi ehdottaa mahdolliset toimenpiteet konfliktin poistamiseksi.

Aptitude tarjoaa tehokkaan haun, jota voidaan käyttää lähes mistä tahansa paketista, ei vain järjestelmästä, vaan myös koko arkistosta.

Siinä missä apt-get tarvitsee toisen aptin muunnelman, eli apt-cache:n paketin etsimiseen, Aptitude tarjoaa paljon helpomman ja tehokkaamman tavan etsiä pakettia, joka on joko asennettu tai olemassa. arkistossa, mutta vielä asentamatta.

Paketin etsiminen apt-cache vs Aptitude avulla

$ 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

Tässä oletuksena sekä apt-cache että aptitude etsivät pakettia kokonaisesta arkistossa olevien pakettien luettelosta, mutta aptituden tulos näyttää onko paketti asennettu järjestelmään vai ei antamalla pakettikohtaista lippua, joka tässä on 'p', joka osoittaa, että paketti on olemassa, mutta sitä ei ole asennettu, ja 'i', joka osoittaa, että paketti on asennettu, kun taas apt -cache vain luettelee paketin ja sen yksiriviset tiedot kertomatta onko paketti asennettu vai ei.

Joitakin muita esimerkkejä laajennetusta pakettihausta Aptitudella

1. Haetaan pakettia arkistosta, jonka nimessä on 'python2.7' ja kuvauksessa '2.7'.

$ 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

Tässä '~n' tarkoittaa nimeä ja '~d' kuvausta. Saman komennon toinen muoto on:

aptitude search '?name(python2.7) ?description(2.7)'
Jotkut muut liput sisältävät:
  1. ~i tai ?installed(): Paketin etsiminen vain asennettujen pakettien luettelosta.
  2. ~U tai ~Päivitettävä: Luetteloi kaikki paketit, jotka ovat päivitettävissä uusimmilla saatavilla olevilla versioilla.
  3. ~E tai ?Essential(): Paketit joko asennettuna tai saatavilla, jotka ovat välttämättömiä.
$ 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 

Kuten tässä näkyvä lyhyt luettelo kolmesta paketista, joissa on asennettu versio (merkitty kirjaimella 'i') ja päivitettävä versio (merkitty kirjaimella 'p').

2. Etsi kaikki paketit, jotka tarjoavat tietyn palvelun

Löydät kaikki paketit, joissa on smtp-palvelu:

$ 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. Etsi kaikki paketit, jotka ehdottavat tiettyä pakettia

Kuten tässä, luettelemme kaikki paketit, jotka ehdottavat pakettia '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 

Johtopäätös

Joten useimmissa tapauksissa Aptituden syntaksi säilytetään lähes samana kuin apt-get, jotta apt-getin käyttäjillä olisi vähemmän kipua siirtyessään Aptitudeen. , mutta tämän lisäksi Aptitudeen on integroitu monia tehokkaita ominaisuuksia, jotka tekevät siitä valittavan. Näiden korostamiemme erojen lisäksi, jos löydät muita mielenkiintoisia eroja näiden kahden paketinhallinnan välillä, mainitse ne kommenteissasi.