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


Aptitude i apt-get su dva popularna alata za upravljanje paketima. Oba su sposobna za rukovanje 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 razmatraju odvojeno je predmet ovog članka.

Šta je Apt

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

Apt je cijela komandna linija bez GUI. Kad god se pozove iz komandne linije zajedno sa navođenjem imena paketa za instaliranje, on pronalazi taj paket u konfigurisanoj listi izvora navedenih u '/etc/apt/sources.list' zajedno sa listom zavisnosti za taj paket i sortira ih i automatski ih instalira zajedno sa trenutnim paketom tako da korisnik ne brine o instalaciji zavisnosti.

Veoma je fleksibilan omogućavajući korisniku da lako kontrolira različite konfiguracije, kao što su: dodavanje bilo kojeg novog izvora za traženje paketa, apt-pinning, tj. označavanje bilo kojeg paketa nedostupnog tokom nadogradnje sistema, čime njegova trenutna verzija bude konačna instalirana verzija, “pametna” nadogradnja, tj. nadogradnja najvažnijih paketa i ostavljanje onih najmanje važnih.

Šta je Aptitude?

Aptitude je front-end za napredni alat za pakovanje koji dodaje korisničko sučelje funkcionalnosti, omogućavajući korisniku da interaktivno traži paket i instalira ili ukloni. Prvobitno kreiran za Debain, Aptitude proširuje svoju funkcionalnost i na RPM bazirane distribucije.

Njegov korisnički interfejs je baziran na biblioteci ncurses koja mu dodaje različite elemente koji se obično vide u GUI. Jedan od njegovih vrhunaca je da može emulirati većinu argumenata komandne linije apt-get.

Sve u svemu, Aptitude je menadžer paketa višeg nivoa koji apstrahuje detalje niskog nivoa i može raditi iu tekstualnom interaktivnom UI modu, pa čak iu neinteraktivnom načinu komandne linije.

Ako želite znati upotrebu APT-a i Aptitude sa primjerima iz stvarnog svijeta, trebali biste prijeći na sljedeće članke.

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

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

Osim što je glavna razlika u tome što je Aptitude menadžer paketa visokog nivoa dok je APT menadžer paketa nižeg nivoa koji mogu koristiti drugi menadžeri paketa višeg nivoa, drugi glavni naglasci koji razdvajaju ova dva paket menadžera su:

  1. Aptitude je veći u funkcionalnosti od apt-get i integriše funkcionalnosti apt-get i njegovih drugih varijanti uključujući apt-mark i apt -cache.

Dok apt-get obrađuje svu instalaciju paketa, nadogradnju, nadogradnju sistema, čišćenje paketa, rješavanje zavisnosti itd., Aptitude obrađuje mnogo više stvari od apt-a, uključujući funkcionalnosti apt-marka i apt-cache, tj. traženje paketa na listi instaliranih paketa, označavanje paketa da se automatski ili ručno instalira, zadržavanje paketa što ga čini 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 menadžer paketa nižeg nivoa ograničen je samo na komandnu liniju, dok Aptitude kao alat višeg nivoa ima podrazumevano interaktivno sučelje samo za tekst zajedno sa opcijom rada na komandnoj liniji unosom potrebnog komande.

  1. Aptitude ima bolje upravljanje paketima od apt-get

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 će apt-get zahtijevati od korisnika da to eksplicitno navede dodavanjem dodatna opcija '—auto-remove' ili specificiranje 'apt-get autoremove'.4

2. Da bi dalje istražio zašto se određena radnja blokira ili zašto ili zašto-ne treba poduzeti određenu radnju, Aptitude nudi 'zašto' i ' zašto-ne' komande.

Sviđa mi se: Aptitude može pronaći razlog za instaliranje određenog paketa tako što će pogledati listu instaliranih paketa i provjeriti ima li neki od predloženih paketa ovisnosti ili bilo koja 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 što ga predlaže ovisnost (yaws) koja obezbjeđuje virtuelni paket (httpd-cgi) o kojem paketu (dwww) ima ovisnost i paket (dwww) je predložen od strane jednog od instaliranih paketa pod nazivom ' doc-base'.

Ova funkcija nedostaje u apt-get.

3. Dok bi apt-get vjerovatno nestao u slučaju konfliktne radnje u vezi sa instalacijom ili uklanjanjem paketa s porukom, Aptitude može predložiti moguće mjere za otklanjanje tog sukoba.

Aptitude pruža moćnu pretragu koja se može koristiti za pretraživanje gotovo bilo kojeg paketa ne samo na sistemu već i na cijelom spremištu.

Dok je apt-get potrebna druga apt-ova varijanta, tj. apt-cache za traženje paketa, Aptitude pruža mnogo lakši i efikasniji način traženja paketa koji je instaliran ili prisutan u spremištu, ali tek treba biti instaliran.

Pretraživanje paketa koristeći apt-cache vs 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 po defaultu i apt-cache i aptitude traže paket na cijeloj listi paketa u spremištu, ali izlaz aptitude pokazuje da li je paket instaliran na sistemu ili ne davanjem zastavice po paketu koja je ovdje 'p' koja pokazuje da je paket prisutan, ali nije instaliran i 'i' što ukazuje da je paket instaliran, dok apt -cache samo navodi paket i njegove detalje u jednoj liniji bez da kaže da li je paket instaliran ili ne.

Neki drugi primjeri naprednog pretraživanja paketa s Aptitude

1. Traženje paketa u spremištu sa '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 komande je:

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

Kao kratka lista prikazana ovdje od 3 paketa sa instaliranom verzijom (označeno sa 'i') i njihovom nadogradivom verzijom (označeno sa 'p').

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

Da pronađete 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 predlažu određeni paket

Kao ovdje, navodimo sve pakete koji predlažu 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čak

Dakle, u većini slučajeva, sintaksa Aptitude ostaje gotovo ista kao i apt-get, kako bi korisnici apt-get imali manje bolova pri prelasku na Aptitude , ali pored ovoga, mnoge moćne karakteristike su integrirane u Aptitude koje ga čine onom koju treba izabrati. Osim ovih razlika koje smo istakli, ako nađete još neke interesantne razlike između ova dva menadžera paketa, navedite ih u svojim komentarima.