Zoeken op website

Wat is APT en Aptitude? en wat is het echte verschil tussen hen?


Aptitude en apt-get zijn twee van de populaire tools die pakketbeheer verzorgen. Beide zijn in staat om allerlei soorten activiteiten op pakketten uit te voeren, inclusief installatie, verwijdering, zoeken enz. Maar er zijn nog steeds verschillen tussen beide tools, waardoor gebruikers de ene boven de andere verkiezen. Wat zijn de verschillen waardoor deze twee tools afzonderlijk moeten worden beschouwd, dat is de reikwijdte van dit artikel.

Wat is apt

Apt of Advanced Packaging Tool is gratis en open source software die de installatie en verwijdering van software op een elegante manier afhandelt. Aanvankelijk was het ontworpen voor de .deb-pakketten van Debian, maar het is compatibel gemaakt met RPM Package Manager.

Apt is een volledige opdrachtregel zonder GUI. Elke keer dat het vanaf de opdrachtregel wordt aangeroepen en daarbij de naam van het te installeren pakket specificeert, vindt het dat pakket in de geconfigureerde lijst met bronnen gespecificeerd in '/etc/apt/sources.list', samen met de lijst met afhankelijkheden voor dat pakket en sorteert ze en installeert ze automatisch samen met het huidige pakket, zodat de gebruiker zich geen zorgen hoeft te maken over het installeren van afhankelijkheden.

Het is zeer flexibel waardoor de gebruiker verschillende configuraties gemakkelijk kan beheren, zoals: het toevoegen van een nieuwe bron om naar pakketten te zoeken, apt-pinning, d.w.z. het markeren van elk pakket dat niet beschikbaar is tijdens de systeemupgradatie, waardoor de huidige versie de definitieve geïnstalleerde versie wordt, “slimme” upgrade, d.w.z. het upgraden van de belangrijkste pakketten en het behouden van de minst belangrijke.

Wat is geschiktheid?

Aptitude is een front-end naar een geavanceerde verpakkingstool die een gebruikersinterface aan de functionaliteit toevoegt, waardoor een gebruiker interactief naar een pakket kan zoeken en het kan installeren of verwijderen. Aptitude werd oorspronkelijk ontwikkeld voor Debain en breidt zijn functionaliteit ook uit naar op RPM gebaseerde distributies.

De gebruikersinterface is gebaseerd op de ncurses bibliotheek, die er verschillende elementen aan toevoegt die vaak voorkomen in GUI's. Een van de hoogtepunten is dat het de meeste opdrachtregelargumenten van apt-get kan emuleren.

In totaal is Aptitude een pakketbeheerder van een hoger niveau die details op laag niveau abstraheert, en kan werken in zowel op tekst gebaseerde interactieve UI-modus als zelfs in de niet-interactieve modus van de opdrachtregel.

Als je het gebruik van APT en Aptitude wilt leren kennen met voorbeelden uit de echte wereld, ga dan naar de volgende artikelen.

  1. Leer 25 nuttige voorbeelden over APT-GET en APT-CACHE
  2. Leer Linux-pakketbeheer met Aptitude en Dpkg

Wat zijn de verschillen tussen APT en Aptitude?

Afgezien van het belangrijkste verschil is dat Aptitude een pakketbeheerder op hoog niveau is, terwijl APT een pakketbeheerder op een lager niveau is, die gebruikt kan worden door andere pakketbeheerders op een hoger niveau, andere belangrijke hoogtepunten die deze twee pakketbeheerders scheiden zijn:

  1. Aptitude is uitgebreider in functionaliteit dan apt-get en integreert functionaliteiten van apt-get en zijn andere varianten, waaronder apt-mark en apt -cache.

Terwijl apt-get alle pakketinstallaties, upgrades, systeemupgradaties, het opschonen van pakketten, het oplossen van afhankelijkheden etc. afhandelt, handelt Aptitude veel meer zaken af dan apt, inclusief functionaliteiten van apt-mark en apt-cache, d.w.z. zoeken naar een pakket in de lijst met geïnstalleerde pakketten, het markeren van een pakket om automatisch of handmatig te worden geïnstalleerd, het vasthouden van een pakket waardoor het niet beschikbaar is voor upgrade, enzovoort.

  1. Hoewel apt-get geen gebruikersinterface heeft, heeft Aptitude een interactieve gebruikersinterface die alleen uit tekst bestaat

Apt-get is een pakketbeheerder op een lager niveau en is alleen beperkt tot de opdrachtregel, terwijl Aptitude een tool op een hoger niveau is en een standaard interactieve interface heeft die alleen uit tekst bestaat, samen met de optie voor bediening via de opdrachtregel door de vereiste invoer in te voeren opdrachten.

  1. Aptitude heeft een beter pakketbeheer dan apt-get

In veel situaties waarbij pakketten geïnstalleerd, verwijderd en opgelost worden, bewijst Aptitude zijn waarde in plaats van apt-get. Enkele van de situaties zijn onder meer:

1. Terwijl een geïnstalleerd pakket wordt verwijderd, zal Aptitude automatisch ongebruikte pakketten verwijderen, terwijl apt-get de gebruiker nodig heeft om dit expliciet te specificeren door ofwel extra optie '—auto-remove' of het specificeren van 'apt-get autoremove'.4

2. Om verder te onderzoeken waarom bepaalde actie wordt geblokkeerd of waarom wel of niet een bepaalde actie moet worden ondernomen, biedt Aptitude 'why' en ' waarom-niet' commando's.

Vind ik leuk: Aptitude kan de reden vinden om een bepaald pakket te installeren door in de lijst met geïnstalleerde pakketten te kijken en te controleren of een van hun voorgestelde pakketten afhankelijkheden heeft of dat een van hun afhankelijkheden suggereert dat dat pakket of iets dergelijks is .

$ 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

Zoals hier werd gezocht naar de reden om een pakket met de naam 'yaws-wiki' te installeren, namelijk dat dit wordt gesuggereerd door een afhankelijkheid (yaws) die een virtueel pakket (httpd-cgi) waarvan pakket (dwww) afhankelijk is en pakket (dwww) wordt voorgesteld door een van de geïnstalleerde pakketten met de naam ' doc-base'.

Deze functie ontbreekt in apt-get.

3. Hoewel apt-get waarschijnlijk zou verdwijnen in geval van conflicterende actie met betrekking tot de installatie of verwijdering van een pakket met een bericht, kan Aptitude voorstellen mogelijke maatregelen om dat conflict op te heffen.

Aptitude biedt een krachtige zoekfunctie die kan worden gebruikt om vrijwel elk pakket te doorzoeken, niet alleen op het systeem maar ook op de gehele repository.

Terwijl apt-get een andere variant van apt nodig heeft, d.w.z. apt-cache om naar een pakket te zoeken, biedt Aptitude een veel eenvoudigere en efficiëntere manier om naar een pakket te zoeken dat geïnstalleerd of aanwezig is in de repository, maar moet nog worden geïnstalleerd.

Een pakket zoeken met apt-cache versus 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

Hier zoeken zowel apt-cache als aptitude standaard naar een pakket in de hele lijst met pakketten in de repository, maar de uitvoer van aptitude laat zien of het pakket op het systeem is geïnstalleerd of niet door een vlag per pakket te geven, namelijk 'p', wat aangeeft dat het pakket aanwezig is maar niet is geïnstalleerd, en 'i' wat aangeeft dat het pakket is geïnstalleerd, terwijl apt -cache vermeldt alleen het pakket en de details ervan in één regel, zonder te vertellen of het pakket geïnstalleerd is of niet.

Enkele andere voorbeelden van geavanceerd zoeken naar pakketten met Aptitude

1. Zoeken naar een pakket in de repository met 'python2.7' in de naam van het pakket en '2.7' in de beschrijving ervan.

$ 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

Hier geeft '~n' de naam aan en '~d' de beschrijving. Een andere vorm van hetzelfde commando is:

aptitude search '?name(python2.7) ?description(2.7)'
Enkele andere vlaggen zijn onder meer:
  1. ~i of ?installed(): Er wordt alleen naar een pakket gezocht in de lijst met geïnstalleerde pakketten.
  2. ~U of ~Upgradable: Geeft een overzicht van alle pakketten die kunnen worden geüpgraded met hun nieuwste beschikbare versies.
  3. ~E of ?Essential(): De pakketten die geïnstalleerd of beschikbaar zijn en die essentieel zijn.
$ 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 

Zoals een korte lijst hier getoond van 3 pakketten met geïnstalleerde versie (aangegeven met 'i') en hun opwaardeerbare versie aanwezig (aangegeven met 'p').

2. Het vinden van alle pakketten die een bepaalde dienst leveren

Om alle pakketten te vinden die de smtp-service bieden:

$ 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. Het vinden van alle pakketten die een bepaald pakket voorstellen

Zoals hier vermelden we alle pakketten die een ‘gcc’ pakket voorstellen.

$ 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 

Conclusie

Dus in de meeste gevallen wordt de syntaxis van Aptitude vrijwel hetzelfde gehouden als die van apt-get, zodat gebruikers van apt-get minder moeite hebben bij het migreren naar Aptitude , maar daarnaast zijn er veel krachtige functies geïntegreerd in Aptitude waardoor dit de juiste keuze is. Als u, afgezien van deze verschillen die we hebben benadrukt, nog andere interessante verschillen tussen deze twee pakketbeheerders tegenkomt, vermeld deze dan in uw opmerkingen.