Što je APT i Aptitude? i koja je stvarna razlika između njih?


Aptitude i apt-get dva su popularna alata za upravljanje paketima. Oba su sposobna rukovati svim vrstama aktivnosti na paketima uključujući instalaciju, uklanjanje, pretraživanje itd. Ali ipak postoje razlike između oba alata zbog kojih korisnici preferiraju jedan nad drugim. Koje su te razlike zbog kojih se ova dva alata moraju razmatrati odvojeno, predmet je ovog članka.

Što je Apt

Apt ili Advanced Packaging Tool besplatan je softver otvorenog koda koji elegantno upravlja instalacijom i uklanjanjem softvera. U početku je dizajniran za Debianove .deb pakete, ali je postao kompatibilan s RPM Package Managerom.

Apt cijeli je naredbeni redak bez GUI-ja. Kad god se pozove iz naredbenog retka uz navođenje naziva paketa koji se instalira, pronalazi taj paket na konfiguriranom popisu izvora navedenih u '/etc/apt/sources.list' zajedno s popisom ovisnosti za taj paket i razvrstava ih i automatski ih instalira zajedno s trenutnim paketom, dopuštajući korisniku da ne brine o instaliranju ovisnosti.

Vrlo je fleksibilan što korisniku omogućuje jednostavnu kontrolu različitih konfiguracija, kao što su: dodavanje bilo kojeg novog izvora za traženje paketa, apt-pinning, tj. označavanje bilo kojeg paketa nedostupnim tijekom nadogradnje sustava, čime njegova trenutna verzija postaje konačna instalirana verzija, “pametna” nadogradnja, tj. nadogradnja najvažnijih paketa i izostavljanje onih najmanje važnih.

Što je sposobnost?

Aptitude je prednji dio naprednog alata za pakiranje koji funkcionalnosti dodaje korisničko sučelje, omogućujući korisniku da interaktivno traži paket i instalira ga ili ukloni. U početku stvoren za Debain, Aptitude proširuje svoju funkcionalnost i na distribucije temeljene na RPM-u.

Njegovo korisničko sučelje temelji se na biblioteci ncurses koja mu dodaje razne elemente koji se obično vide u GUI-ju. Jedan od njegovih vrhunaca je da može emulirati većinu argumenata naredbenog retka apt-geta.

Sve u svemu, Aptitude je upravitelj paketa više razine koji apstrahira detalje niske razine i može raditi u tekstualnom interaktivnom UI načinu, pa čak iu neinteraktivnom načinu naredbenog retka.

Ako želite znati korištenje APT-a i Aptitudea s primjerima iz stvarnog svijeta, trebali biste prijeći na sljedeće članke.

  1. Naučite 25 korisnih primjera o APT-GET i APT-CACHE
  2. Naučite upravljanje Linux paketima uz Aptitude i Dpkg

Koje su razlike između APT-a i sposobnosti?

Osim glavne razlike što je Aptitude upravitelj paketa visoke razine, dok je APT upravitelj paketa niže razine koji mogu koristiti drugi upravitelji paketa više razine, drugi glavni naglasci koji razdvajaju ova dva upravitelja paketa su:

  1. Aptitude ima veću funkcionalnost od apt-get i integrira funkcionalnosti apt-geta i njegovih drugih varijanti uključujući apt-mark i apt - predmemorija.

Dok apt-get obrađuje svu instalaciju paketa, nadogradnju, nadogradnju sustava, paket čišćenja, rješavanje ovisnosti itd., Aptitude obrađuje puno više stvari od apt-a, uključujući funkcije apt-mark i apt-cache tj. traženje paketa na popisu instaliranih paketa, označavanje paketa za automatsku ili ručnu instalaciju, zadržavanje paketa čineći ga nedostupnim za nadogradnju i tako dalje.

  1. Dok apt-get nema korisničko sučelje, Aptitude ima samo tekstualno i interaktivno korisničko sučelje

Apt-get kao upravitelj paketa niže razine ograničen je samo na naredbeni redak, dok Aptitude kao alat više razine ima zadano interaktivno sučelje samo s tekstom zajedno s opcijom rada naredbenog retka unosom potrebnog naredbe.

  1. Aptitude ima bolje upravljanje paketima od apt-geta

U mnogim situacijama koje uključuju instalaciju, uklanjanje i rješavanje sukoba za pakete, Aptitude dokazuje svoju vrijednost prije nego apt-get. Neke od situacija uključuju:

1. Prilikom uklanjanja bilo kojeg instaliranog paketa, Aptitude će automatski ukloniti nekorištene pakete, dok apt-get treba da korisnik to eksplicitno navede dodavanjem dodatna opcija '—auto-remove' ili navođenje 'apt-get autoremove'.4

2. Da biste dodatno istražili zašto se određena radnja blokira ili zašto ili zašto ne treba poduzeti određenu radnju, Aptitude nudi 'why' i ' zašto-nenaredbe.

Sviđa mi se: Aptitude vam može pronaći razlog za instaliranje određenog paketa gledajući u popis instaliranih paketa i provjeravajući ima li bilo koji od njihovih predloženih paketa ovisnosti ili neka od njihovih ovisnosti sugerira taj paket ili tako dalje .

$ 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

Kao ovdje, tražio je razlog za instaliranje paketa pod nazivom 'yaws-wiki' da je to predloženo ovisnošću (yaws) koja pruža virtualni paket (httpd-cgi) o kojem paket (dwww) ima ovisnost i paket (dwww) predlaže jedan od instaliranih paketa pod nazivom ' doc-base'.

Ova značajka nedostaje u apt-getu.

3. Iako bi apt-get vjerojatno nestao u slučaju proturječne radnje u vezi s instalacijom ili uklanjanjem paketa s porukom, Aptitude može predložiti moguće mjere za uklanjanje tog sukoba.

Aptitude pruža snažno pretraživanje koje se može koristiti za pretraživanje gotovo bilo kojeg paketa ne samo u sustavu već iu cijelom repozitoriju.

Dok apt-get treba drugu apt-ovu varijantu, tj. apt-cache za traženje paketa, Aptitude pruža puno lakši i učinkovitiji način traženja paketa koji je ili instaliran ili prisutan u repozitoriju, ali tek treba biti instaliran.

Pretraživanje paketa pomoću apt-cachea u odnosu na 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

Ovdje prema zadanim postavkama i apt-cache i aptitude traže paket na cijelom popisu paketa u repozitoriju, ali izlaz aptitude pokazuje je li paket instaliran na sustavu ili ne davanjem oznake po paketu koja je ovdje 'p' što označava da je paket prisutan, ali nije instaliran i 'i' što označava da je paket instaliran, dok apt -cache samo navodi paket i njegove pojedinosti u jednom retku, ne govoreći je li paket instaliran ili ne.

Neki drugi primjeri naprednog pretraživanja paketa s Aptitudeom

1. Traženje paketa u repozitoriju s 'python2.7' u nazivu paketa i '2.7' u njegovom 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

Ovdje '~n' označava ime, a '~d' označava opis. Drugi oblik iste naredbe je:

aptitude search '?name(python2.7) ?description(2.7)'
Neke druge zastave uključuju:
  1. ~i ili ?installed(): Traženje paketa samo na popisu instaliranih paketa.
  2. ~U ili ~Nadogradiv: Navodi sve pakete koji se mogu nadograditi sa svojim najnovijim dostupnim verzijama.
  3. ~E ili ?Essential(): Ovi paketi su ili instalirani ili dostupni, koji su bitni.
$ 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 

Ovdje prikazani kratki popis od 3 paketa s instaliranom verzijom (označenom s 'i') i njihovom prisutnom verzijom koja se može nadograditi (označenom s 'p').

2. Pronalaženje svih paketa koji pružaju određenu uslugu

Da biste pronašli sve pakete koji pružaju smtp uslugu:

$ 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. Pronalaženje svih paketa koji sugeriraju određeni paket

Kao ovdje, navodimo sve pakete koji predlažu ‘gcc’ paket.

$ 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čak

Dakle, u većini slučajeva sintaksa Aptitude ostaje gotovo ista kao ona apt-get, kako bi korisnici apt-geta imali manje muke pri prelasku na Aptitude , no uz to, u Aptitude su integrirane mnoge snažne značajke koje ga čine onim za odabir. Osim ovih razlika koje smo istaknuli, ako pronađete neke druge zanimljive razlike između ova dva upravitelja paketa, spomenite ih u svojim komentarima.