6.2. aptitude
, apt-get
en apt
Commando's
APT is een enorm project, wiens originele plannen een grafische interface bevatte. Het is gebaseerd op een bibliotheek welke het kern programma bevat en apt-get
is de eerste front-end — gebaseerd op de commando-regel — welke was ontwikkeld binnen het project. apt
is een tweede commando-regel front-end aangeboden door APT welke sommige ontwerp fouten van apt-get
overwint.
Talloze andere grafische interfaces verschenen toen als externe projecten: synaptic
, aptitude
(welke zowel een tekst interface als een grafische bevat — zelfs indien nog niet kompleet), wajig
, etc. De meest aanbevolen interface, apt
, is diegene die we zullen gebruiken in de gegeven voorbeelden in deze sectie. Merk op op dat apt-get
en aptitude
een zeer gelijkaardige commando-regel syntaxis hebben. Wanneer er grote verschillen zijn tussen apt
, apt-get
en aptitude
worden deze verschillen gedetailleerd.
Voor ieder werk met APT moet de lijst met beschikbare pakketten ge-updatet worden; dit kan dan simpelweg gedaan worden door apt update
. Afhankelijk van de snelheid van de verbinding, de bewerking kan een tijdje duren omdat het bestaat uit het downloaden van een aantal Packages
/Sources
/Translation-language-code
bestanden, welke geleidelijk groter en groter worden terwijl Debian ontwikkeld wordt (ten minste 10MB gegevens voor de main
sectie). Natuurlijk vereist het installeren vanaf een CD-Rom set geen downloads — in dit geval is de bewerking heel snel.
6.2.2. Installeren en Verwijderen
Met APT kunnen pakketten aan het systeem toegevoegd of verwijderd worden, respectievelijk met apt install pakket
en apt remove pakket
.In beide gevallen zal APT automatisch de nodige afhankelijkheden welke afhangen van het pakket dat geïnstalleerd of verwijderd wordt, installeren of verwijderen. Het apt purge pakket
commando impliceert een volledige verwijdering — de configuratiebestanden worden ook gewist.
Als het
sources.list
bestand verschillende distributies vermeld, is het mogelijk om de versie van het te installeren pakket te geven. Een specifiek versie nummer kan gevraagd worden met
apt install pakket=versie
, maar de distributie van oorsprong aangeven (
Stable,
Testing of
Unstable) — met
apt install pakket/distributie
— heeft meestal de voorkeur. Met dit commando is het mogelijk om terug te gaan naar een oudere versie van een pakket (als je bijvoorbeeld weet dat het goed werkt), onder voorwaarde dat het nog steeds beschikbaar is op een van de bronnen gerefereerd door het
sources.list
bestand. Anders kan het
snapshot.debian.org
archief een uitkomst bieden (zie marge
VERDER GAAN Oude pakket versies: snapshot.debian.org
).
Voorbeeld 6.3. Installatie van de Onstabiele versie van spamassassin
#
apt install spamassassin/unstable
6.2.3. Systeem Opwaarderen
Regelmatig opwaarderen is aanbevolen, omdat ze de laatste beveiligings-updates bevatten. Om te opwaarderen, gebruikt je apt upgrade
, apt-get upgrade
of aptitude safe-upgrade
(natuurlijk na apt update
). Dit commando zoekt naar geïnstalleerde pakketten die opgewaardeerd kunnen worden zonder enig pakket te verwijderen. Met andere woorden, het doel is om de minst ingrijpende opwaardering te verzekeren. apt-get
is iets minder veeleisend dan aptitude
of apt
omdat het zal weigeren om pakketten te installeren die niet op voorhand geïnstalleerd waren.
apt
zal in het algemeen de meest recente versie nummer selecteren (behalve voor pakketten van Experimenteel en stable-backports, welke standaard genegeerd worden ongeacht hun versie nummer). Als je Testing of Unstable in jou sources.list
gespecificeerd hebt zal apt upgrade
de meeste van jouw Stabiele systeem naar Testen of Onstabiel omschakelen, wat je misschien niet bedoeld zou hebben.
Om apt
te vertellen om een specifieke distributie te gebruiken tijdens het zoeken naar opgewaardeerde pakketten, moet je de -t
of --targer-release
optie gebruiken, gevolgd door de naam van de distributie die je wilt (bijvoorbeeld: apt -t stable upgrade
. Om te voorkomen dat je deze optie ieder keer moet specificeren wanneer je apt
gebruikt, kun je APT::Default-Release "stable";
toevoegen aan het /etc/apt/apt.conf.d/local
bestand.
Voor belangrijkere opwaarderingen, zoals de verandering van een grote Debian versie naar de volgende, moet je het commando apt full-upgrade
gebruiken. Met deze instructie, zal apt
de opwaardering volledig uitvoeren ook als het bepaalde verouwderde pakketten moet verwijderen of nieuwe afhankelijkheden moet installeren. Dit is ook het commando gebruikt door gebruikers die dagelijks werken met Debian Onstabiel vrijgave en haar evolutie dag-na-dag volgen. Het is zo gemakkelijk dat het amper uitleg nodig heeft: de reputatie van APT is grotendeels gebaseerd op deze functionaliteit.
In tegenstelling tot apt
en aptitude
, kent apt-get
het commando full-upgrade
niet. Je zouw in de plaats apt-get dist-upgrade
(”distribution upgrade”) moeten gebruiken. Het historische en goed-gekende commando dat apt
en aptitude
ook accepteren voor het gemak van de gebruikers die dit gewoon zijn.
6.2.4. Configuratie Opties
Naast de reeds genoemde configuratie elementen, is het mogelijk om bepaalde aspecten van APT te configureren door richtlijnen toe te voegen in een bestand van de /etc/apt.conf/d/
directory. Onthoud bijvoorbeeld dat het mogelijk is voor APT om dpkg
te vertellen om bestands-conflicten te negeren door DPkg::options {"--force-overwrite"; }
te specificeren.
Als het web enkel bereikt kan worden door een proxy, voeg een regel als
Acquire::http::proxy "http://yourproxy:3128"
toe. Voor een FTP Proxy schrijf
Acquire::ftp::proxy "ftp://yourproxy"
. Om meer configuratie opties te ontdekken lees de
apt.conf(5) manual pagina met het
man apt.conf
commando (voor details over manual pagina's, zie
Paragraaf 7.1.1, “Handleiding Pagina's”).
6.2.5. Pakket Prioriteiten Beheren
Een van de belangrijkste aspecten in de configuratie van APT is het beheren van de prioriteiten verbonden aan iedere pakket bron. Bijvoorbeeld, je wilt een distributie uitbreiden met een of twee nieuwere pakken van Testen, Onstabiel of Experimenteel. Het is mogelijk om een prioriteit te verbinden aan ieder beschikbaar pakket (hetzelfde pakket kan meerdere prioriteiten hebben, afhankelijk van de versie van de distributie in welke het wordt aangeboden). Deze prioriteiten zullen het gedrag van APT beïnvloeden: het zal, voor ieder pakket, de versie nemen met de hoogste prioriteit (behalve als deze versie ouder is dan de geïnstalleerde versie en als de prioriteit minder is dan 1000).
APT definieert een aantal standaard prioriteiten. Ieder geïnstalleerde pakket versie heeft een prioriteit van 100. Een niet geïnstalleerde versie heeft een standaard prioriteit van 500, maar het kan springen naar 900 als het deel uitmaakt van de doel vrijgave (gedefinieerd met de -t
commando-regel optie of de APT::Default-Release
configuratie richtlijn).
Je kunt de prioriteiten aanpassen door ingaven toe te voegen in het /etc/apt/peferences
bestand met de namen van de betreffende pakketten, hun versie, hun origine en hin nieuwe prioriteit.
APT zal nooit een oudere versie van een pakket installeren (d.w.z. een pakket wiens versie nummer lager is dan deze van het huidig geïnstalleerde pakket) behalve als de prioriteit hoger is dan 1000. APT zal altijd het programma met de hoogste prioriteit, welke deze beperking volgt, installeren). Als twee pakketten dezelfde prioriteit hebben maar verschillen in hun inhoudt, zal APT de versie installeren die niet geïnstalleerd is (deze regel is gemaakt voor het geval van een pakket update zonder het oplopen van het versie nummer, wat meestal verijst is).
In meer concrete zin zal, een pakket met prioriteit lager dan 0 nooit geïnstalleerd worden. Een pakket met prioriteit tussen 0 en 100 zal enkel geïnstalleerd worden als er geen andere versie van het pakket al geïnstalleerd is. Met een prioriteit tussen 100 en 500 zal het pakket enkel geïnstalleerd worden als er geen nieuwere versie geïnstalleerd is, of beschikbaar in een andere distributie. Een pakket met prioriteit tussen 501 en 990 zal enkel geïnstalleerd worden als er geen nieuwere versie geïnstalleerd is of beschikbaar in de doel distributie. Met een prioriteit tussen 990 en 1000 zal het pakket geïnstalleerd worden, behalve als de geïnstalleerde versie nieuwer is. Een prioriteit groter dan 1000 zal altijd leiden tot een installatie van het pakket, zelfs als het APT dwingt om terug te gaan naar een oudere versie.
Wanneer APT /etc/apt/preferences
controleert, zal het eerst rekening houden met de meest specifieke ingaven (vaak deze die bepaald pakket specificeren), dan de meest algemene (bijvoobeeld inclusief all de pakketten van een distributie). Als er meerdere algemene bronnen bestaan, wordt de eerste match gebruikt. De beschikbare selectie criteria bestaan uit, de naam van het pakket en de naam van de bron die het levert -. Iedere pakket-bron wordt geïdentificeerd door de informatie in een Release
bestand dat APT samen met de Packages>
bestanden gedownload. Het specificeert de oorsprong (meestal “Debian” voor de pakketten van officiële spiegels, maar het kan ook de naam van er persoon of organisatie zijn, voor bewaarplaatsen van derden-. Het geeft ook de naam van de distributie aan (meestal Stable, Testing, Unstable of Experimental voor de standaard distributies aangeboden door Debian) Samen met haar versie (bijvoorbeeld 8 voor Debian Jessie).Laten we eens kijken naar de syntaxis door een realistischer casusonderzoek van dit mechanisme.
Laten we ervan uit gaan dat je enkel pakketten van de stabiele vrijgave van Debian wilt gebruiken. Deze aangeboden in andere versies zouden niet geïnstalleerd moeten worden, tenzij specifiek gevraagd. Je zou de volgende ingave in het /etc/apt/preferences
bestand kunnen zetten:
a=stable
definieert de naam van de geselecteerde distributie. o=Debian
limiteert het bereik tot pakketten waarvan de oorsprong “Debian” is.
Laten we er nu vanuit gaan dat je een server hebt met enkele lokale programma's die afhangen van versie 5.14 van Perl en dat je wilt verzekeren dat upgrades geen andere versie ervan zullen installeren. Je kan deze ingave gebruiken:
De referentie documentatie voor deze configuratie is beschikbaar in de manual page apt_preferences(5), welke je kunt weergeven met man apt_preferences
.
6.2.6. Werken met Verschillende Distributies
apt
is zo'n geweldig gereedschap, het is verleidelijk om pakketten te kiezen die van andere distributies komen. Bijvoorbeeld, na een Stabiel systeem geïnstalleerd te gebben, wil je misschien een software pakket uit Testen probren of Onstabiel zonder ver van de originele staat af te wijken.
Zelfs als je occasioneel problemen tegenkomt tijdens het mixen van pakketten van verschillende distributies, beheert
apt
dergelijk gelijktijdig bestaande pakketten zeer goed en beperkt de risico's zeer effectief. De beste manier om verder te gaan is al de gebruikte distributies invoeren in
/etc/apt/sources.list
(sommige mensen plaatsen er altijd alle drie de distributies, maar onthoudt dat
Onstabiel gereserveerd is voor ervaren gebruikers) en jouw referentie distributie definiëren met de
APT::Default-Release
parameter (zie
Paragraaf 6.2.3, “Systeem Opwaarderen”).
Laten we ervan uit gaan dat Stable jouw referentie distributie is maar dat Testing en Unstable ook in jouw sources.list
bestand staan. In dat geval kun je apt install pakket/testing
gebruiken om een pakket van Testen te installeren. Als de installatie faalt door een onvoldane afhankelijkheid, lossen we deze afhankelijkheid op binnen Testen door de -t testing
parameter toe te voegen. Het zelfde geldt natuurlijk voor Onstabiel.
In deze situatie worden upgrades (
upgrade
en
full-upgrade
) gedaan vinnen
Stabiel behalve voor pakketten die reeds ge-upgrade zijn naar een andere distributie: Deze zullen de updates beschikbaar in de andere distributie volgen. We zullen dit gedrag, met de hulp van de standaard prioriteit ingesteld door APT, hieronder uitleggen. Twijfel niet om
apt-cache policy
te gebruiken (zie marge
TIP apt-cache policy
) om de gegeven prioriteiten te controleren.
Alles draait om het feit dat APT enkel pakketten van hogere of gelijke versie dan de geïnstalleerde versie overweegt (ervan uit gaande dat /etc/apt/preferences
niet gebruikt wordt om priotiteiten hoger dan 1000 voor bepaalde pakketten te forceren).
Laten we aannemen dat je versie 1 van een eerste pakket van Stabiel geïnstalleerd hebt en dat versie 2 en 3 respectievelijk in Testen en Onstabiel beschikbaar zijn. De geïnstalleerde versie heeft een prioriteit van 100 maar de beschikbare versie in Stabiel (hetzelfde) heeft een prioriteit van 990 (omdat het onderdeel is van de doel vrijgave). Pakketten in Testen en Onstabiel hebben een prioriteit van 500 (de standaard prioriteit van een niet-geïnstalleerde versie). De winnaar is dus versie 1 met een prioriteit van 900. Het pakket “blijft in Stabiel”.
Laten we het voorbeeld nemen van een ander pakket wiens versie 2 geïnstalleerd is van Testen. Versie 1 is beschikbaar in Stabiel en versie 3 in Onstabiel. Versie 1 (met prioriteit 900 — dus lager dan 1000) wordt genegeerd omdat het van een lagere versie is dan de geïnstalleerde versie. Dit laat enkel versie 2 en 3 over, beiden met prioriteit 500. geconfronteerd met dit alternatief, selecteert APT de nieuweste versie, diegene van Onstabiel.Als je niet wilt dat een pakket van Testen migreert naar Onstabiel, moet je een prioriteit lager dan 500 (490 bijvoorbeeld) toewijzen aan pakketten komende van Onstabiel. Je kunt /etc/apt/preferences
hiervoor aanpassen :
Package: *
Pin: release a=unstable
Pin-Priority: 490
6.2.7. Volgen van Automatisch Geïnstalleerde Pakketten
Een van de essentiële functionaliteiten van apt
is het volgen van pakketten geïnstalleerd enkel door afhankelijkheden. Deze pakketten worden “automatisch” genoemd, en omvatten vaak bibliotheken.
Met deze informatie kan de pakket beheerder, wanneer pakketen verwijderd worden, een lijst van automatische pakketten die niet langer nodig zijn berekenen (omdat er geen “handmatig geïnstalleerde” pakken van afhangen). apt-get autoremove
zal deze pakketten verwijderen. aptitude
en apt
hebben dit commando niet: de eerste omdat het ze automatische verwijderd zodra ze geïdentificeerd zijn, en de laatste waarschijnlijk omdat de gebruiker zo'n commando niet manueel zou moeten uitvoeren. In ieder geval, geven de gereedschappen een duidelijk bericht weer met een lijst van de betrokken pakketten.
Het is een goede gewoonte om ieder pakket dat je niet rechtstreeks nodig hebt te markeren als automatisch zodat ze automatisch verwijderd worden als ze niet meer nodig zijn.
apt-mark auto pakket
zal het gegeven pakket markeren als automatisch, waar
apt-mark manual pakket
het tegenovergestelde doet.
aptitude markauto
en
aptitude unmarkauto
werken op dezelfde manier, hoewel ze meer functies bieden voor het gelijktijdig markeren van meerdere pakketten (zie
Paragraaf 6.4.1, “aptitude
”). De console-gebaseerde interactieve interface van
aptitude
maakt het ook gemakkelijk om de “automatisch vlag” van meerdere pakketten te bekijken.
Men kan zich afvragen waarom een automatisch geïnstalleerd pakket aanwezig is op het systeem. Om deze informatie te krijgen vanaf de commando regel, kun je aptitude why pakket
(apt
en apt-get
hebben geen gelijkaardig commando) gebruiken:
$
aptitude why python-debian
i aptitude Recommends apt-xapian-index
i A apt-xapian-index Vereist python-debian (>= 0.1.15)