Product SiteDocumentation Site

6.2. Les comandes aptitude, apt-get, i apt

APT és un gran projecte, els plans originals del qual incloïen una interfície gràfica. Es basa en una biblioteca que conté l'aplicació principal, i apt-get fou el primer frontal — basat en la línia d'ordres — que es va desenvolupar dins del projecte. apt és un segon frontal basat en la línia d'ordres proporcionat per APT i que supera alguns errors de disseny d'apt-get.
Both tools are built on top of the same library and are thus very close, but the default behavior of apt has been improved for interactive use and to actually do what most users expect. The APT developers reserve the right to change the public interface of this tool to further improve it. Conversely, the public interface of apt-get is well defined and will not change in any backwards incompatible way. It is thus the tool that you want to use when you need to script package installation requests.
Nombroses altres interfícies gràfiques van aparèixer com a projectes externs: synaptic, aptitude (que inclou tant una interfície de mode de text com una gràfica — tot i que encara no està completa), wajig, etc. La interfície més recomanada, apt, és la que utilitzarem en els exemples donats en aquesta secció. Tingueu en compte, però, que apt-get i aptitude tenen una sintaxi molt similar a la línia d'ordres. Quan hi hagi grans diferències entre aquestes tres ordres, aquestes seran detallades.

6.2.1. Inicialització

For any work with APT, the list of available packages needs to be updated; this can be done simply through apt update. Depending on the speed of your connection and configuration, the operation can take a while, since it involves downloading a certain number of (usually compressed) files (Packages, Sources, Translation-language-code), which have gradually become bigger and bigger as Debian has developed (at least 10-16 MB of data for the main section). Of course, installing from a CD-ROM/DVD set does not require any downloading — in this case, the operation is very fast.

6.2.2. Instal·lació i eliminació

Amb APT, els paquets es poden afegir o eliminar del sistema, respectivament, amb apt install paquet i apt remove paquet. En tots dos casos, APT instal·larà automàticament les dependències necessàries o suprimirà els paquets que depenen del paquet que s'està eliminant. L'ordre apt purge paquet implica la desinstal·lació completa eliminant també els fitxers de configuració.
Si el fitxer sources.list menciona diverses distribucions, és possible especificar la versió del paquet a instal·lar. Es pot sol·licitar un número de versió específic amb apt install paquet=versió, però indicant la seva distribució d'origen (Stable, Testing o Unstable) — amb apt install paquet/distribució — usualment es l'opció preferida. Amb aquesta ordre, és possible tornar a una versió més antiga d'un paquet (si, per exemple, sabeu que funciona bé), sempre que estigui disponible en una de les fonts referenciades pel fitxer sources.list. En cas contrari, l'arxiu snapshot.debian.org pot sortir al rescat (vegeu la barra lateral GOING FURTHER Old package versions: snapshot.debian.org and archive.debian.org).

Exemple 6.4. Instal·lació de la versió a Unstable d'spamassassin

# apt install spamassassin/unstable
Si el paquet a instal·lar us ha estat proporcionat en forma d'un simple fitxer .deb sense cap dipòsit de paquets associat, encara és possible utilitzar APT per instal·lar-lo juntament amb les seves dependències (sempre que les dependències estiguin disponibles als repositoris configurats) amb una ordre simple: apt install ./camí-al-paquet.deb. El ./ del davant és important per deixar clar que estem referint-nos a un nom de fitxer i no al nom d'un paquet disponible en un dels repositoris.

6.2.3. Actualització del sistema

Es recomanen actualitzacions regulars, perquè inclouen les últimes actualitzacions de seguretat. Per actualitzar, utilitzeu apt update, apt-get update o aptitude safe-upgrade (per descomptat després d'apt update). Aquesta ordre cerca els paquets instal·lats que es poden actualitzar sense eliminar cap paquet. En altres paraules, l'objectiu és garantir la millora menys intervencionista possible. apt-get és una mica més exigent que aptitude o apt perquè es negarà a instal·lar els paquets que no estiguessin instal·lats prèviament.
apt normalment triarà el número de versió més recent (excepte pels paquets de Experimental i stable-backports, que són per defecte ignorats independentment del número de versió). Si teniu especificats Testing o Unstable al sources.list, apt upgrade canviarà bona part del vostre sistema Stable per Testing o Unstable, que pot no ser el que preteneu.
Per a dir-li a apt que utilitzi una distribució específica quan cerqui paquets actualitzats heu d'utilitzar l'opció -t o --target-release, seguida del nom de la distribució que voleu (per exemple, apt -t stable upgrade). Per evitar especificar aquesta opció cada vegada que utilitzeu apt, podeu afegir APT::Default-Release "stable"; al fitxer /etc/apt/apt.conf.d/local.
Per a actualitzacions més importants, com ara el canvi d'una versió major de Debian a la següent, heu d'utilitzar apt full-upgrade. Amb aquesta instrucció, apt completarà l'actualització fins i tot si ha d'eliminar alguns paquets obsolets o instal·lar noves dependències. Aquesta és també l'ordre utilitzada pels usuaris que treballen diàriament amb la versió de Debian Unstable i segueixen la seva evolució dia a dia. És tan senzill que a penes necessita explicació: la reputació d'APT es basa en aquesta gran funcionalitat.
A diferència d'apt i d'aptitude, apt-get no reconeix l'ordre full-upgrade. En lloc d'això, hauríeu d'utilitzar apt-get dist-upgrade ('actualització de la distribució'), l'ordre històrica i ben coneguda que apt i aptitude també accepten per a la comoditat dels usuaris que s'hi han acostumat.
Els resultats d'aquestes operacions queden registrats a /var/log/apt/history.log i /log/apt/term.log, mentre que dpkg manté el seu registre en un fitxer anomenat /var/log/dpkg.log.

6.2.4. Opcions de configuració

A més dels elements de configuració ja esmentats, és possible configurar certs aspectes d'APT afegint directives en un fitxer del directori /etc/apt/apt.conf.d/ o a /etc/apt/apt.conf. Recordeu, per exemple, que és possible que APT li digui a dpkg que ignori els errors de conflicte de fitxers especificant DPkg::options { "--force-overwrite"; }.
If the Web can only be accessed through a proxy, add a line like Acquire::http::proxy "http://yourproxy:3128". For an FTP proxy, write Acquire::ftp::proxy "ftp://yourproxy". To discover more configuration options, read the apt.conf(5) manual page (for details on manual pages, see Secció 7.1.1, «Pàgines de manual»).

6.2.5. Gestió de les prioritats dels paquets

Un dels aspectes més importants en la configuració de APT és la gestió de les prioritats associades a cada font de paquets. Per exemple, és possible que vulgueu ampliar una distribució amb un o dos paquets més nous de Testing, Unstable o Experimental. És possible assignar una prioritat a cada paquet disponible (el mateix paquet pot tenir diverses prioritats depenent de la seva versió o la distribució que el proveeix). Aquestes prioritats influiran en el comportament d'APT: per a cada paquet, sempre seleccionarà la versió amb la prioritat més alta (excepte si aquesta versió és més antiga que la instal·lada i si la seva prioritat és inferior a 1000).
APT defineix diverses prioritats per defecte. Cada versió de paquet instal·lat té una prioritat de 100. Una versió no instal·lada té una prioritat de 500 per defecte, però pot saltar a 990 si forma part de la versió de destinació (definida amb l'opció -t de línia d'ordres o amb la directiva de configuració APT::Default-Release).
Podeu modificar les prioritats afegint entrades en un fitxer a /etc/apt/preferences.d/ o al fitxer /etc/apt/preferences amb els noms dels paquets afectats, la seva versió, el seu origen i la seva nova prioritat.
APT will never install an older version of a package (that is, a package whose version number is lower than the one of the currently installed package) except if its priority is higher than 1000 (or it is explicitly requested by the user, see Secció 6.2.2, «Instal·lació i eliminació»). APT will always install the highest priority package which follows this constraint. If two packages have the same priority, APT installs the newest one (whose version number is the highest). If two packages of same version have the same priority but differ in their content, APT installs the version that is not installed (this rule has been created to cover the case of a package update without the increment of the revision number, which is usually required).
En termes més concrets, un paquet la prioritat del qual és
< 0
no s'instal·larà mai,
1..99
només s'instal·larà si no hi ha cap altra versió del paquet ja instal·lada,
100..499
només s'instal·larà si no hi ha cap altra versió més nova instal·lada o disponible en una altra distribució,
500....989
només s'instal·larà si no hi ha cap versió més nova instal·lada o disponible a la distribució de destinació,
990..1000
s'instal·larà excepte si la versió instal·lada és més nova,
> 1000
sempre s'instal·larà, fins i tot si obliga a APT a rebaixar-lo a una versió més antiga.
When APT checks /etc/apt/preferences and /etc/apt/preferences.d/, it first takes into account the most specific entries (often those specifying the concerned package), then the more generic ones (including, for example, all the packages of a distribution). If several generic entries exist, the first match is used. The available selection criteria include the package's name and the source providing it. Every package source is identified by the information contained in a Release file that APT downloads together with the Packages files. It specifies the origin (usually “Debian” for the packages of official mirrors, but it can also be a person's or an organization's name for third-party repositories). It also gives the name of the distribution (usually Stable, Testing, Unstable or Experimental for the standard distributions provided by Debian) together with its version (for example, 11 for Debian Bullseye). Let's have a look at its syntax through some realistic case studies of this mechanism.
Suposem que només voleu utilitzar paquets de la versió estable de Debian. Aquells que es proporcionen en altres versions no s'haurien d'instal·lar excepte si es demana explícitament. Podeu escriure les següents entrades al fitxer /etc/apt/preferences:
Package: *
Pin: release a=stable
Pin-Priority: 900

Package: *
Pin: release o=Debian
Pin-Priority: -10
a=estable defineix el nom de la distribució seleccionada. o=Debian limita l'abast als paquets l'origen dels quals és “Debian”.
Let's now assume that you have a server with several local programs depending on the version 5.28 of Perl and that you want to ensure that upgrades will not install another version of it. You could use this entry:
Package: perl
Pin: version 5.28*
Pin-Priority: 1001
To gain a better understanding of the mechanisms of priority and distribution or repository properties to pin do not hesitate to execute apt-cache policy to display the default priority associated with each package source, or apt-cache policy package to display the default priority for each available version and source of a package as explained in Secció 6.3.1, «The apt-cache policy Command».
La documentació de referència per als fitxers /etc/apt/preferences i /etc/apt/preferences.d/ està disponible a la pàgina manual apt.preferences(5), que podeu visualitzar amb man apt.preferences.

6.2.6. Treballar amb diverses distribucions

Sent apt una eina tan meravellosa, és temptador triar paquets procedents d'altres distribucions. Per exemple, després d'haver instal·lat un sistema Stable, és possible que vulgueu provar un paquet de programari disponible a Testing or Unstable sense separar-se massa de l'estat inicial del sistema.
Fins i tot encara que a vegades es sorgeixin problemes quan es barregen paquets de diferents distribucions, apt gestiona molt bé aquesta coexistència i limita els riscos de forma molt efectiva. La millor manera de procedir és llistar totes les distribucions usades a /etc/apt/sources.list (algunes persones sempre posen les tres distribucions, però recordeu que Unstable està reservat per a usuaris experimentats) i definir la vostra distribució de referència amb el paràmetre APT::Default-Release (vegeu Secció 6.2.3, «Actualització del sistema»).
Suposem que Stable és la vostra distribució de referència, però que Testing i Unstable també apareixen al vostre fitxer sources.list. En aquest cas, podeu utilitzar apt install paquet/testing per instal·lar un paquet de Testing. Si la instal·lació falla a causa d'algunes dependències insatisfactibles, possibiliteu resoldre aquestes dependències amb Testing afegint el paràmetre -t testing. El mateix s'aplica, òbviament, a Unstable.
In this situation, upgrades (upgrade and full-upgrade) are done within Stable except for packages already upgraded to another distribution: those will follow updates available in the other distributions. We will explain this behavior with the help of the default priorities set by APT below. Do not hesitate to use apt-cache policy (Secció 6.3.1, «The apt-cache policy Command») to verify the given priorities.
Tot es centra en el fet que APT només considera paquets de versió més alta o igual que la instal·lada (assumint que /etc/apt/preferences no s'ha utilitzat per forçar prioritats superiors a 1000 per a alguns paquets).
Suposem que heu instal·lat la versió 1 d'un primer paquet des de Stable i que la versió 2 i 3 estan disponibles respectivament a Testing i Unstable. La versió instal·lada té una prioritat de 100, però la versió disponible a Stable (la mateixa) té una prioritat de 990 (perquè forma part de la versió de destinació). Els paquets Testing i Unstable tenen una prioritat de 500 (la prioritat predeterminada d'una versió no instal·lada). La guanyadora és, per tant, la versió 1 amb una prioritat de 990. El paquet “roman a Stable”.
Let's take the example of another package whose version 2 has been installed from Testing. Version 1 is available in Stable and version 3 in Unstable. Version 1 (of priority 990 — thus lower than 1000) is discarded because it is lower than the installed version. This only leaves version 2 and 3, both of priority 500. Faced with this alternative, APT selects the newest version, the one from Unstable. If you don't want a package installed from Testing to migrate to the version in Unstable, you have to assign a priority lower than 500 (490 for example) to packages coming from Unstable. You can modify /etc/apt/preferences to this effect:
Package: *
Pin: release a=unstable
Pin-Priority: 490

6.2.7. Seguiment dels paquets instal·lats automàticament

Una de les funcionalitats essencials de l'apt és el seguiment dels paquets instal·lats només a través de dependències. Aquests paquets s'anomenen “automàtics” i sovint inclouen biblioteques.
Amb aquesta informació, quan s'eliminen els paquets, els gestors de paquets poden computar una llista de paquets automàtics que ja no són necessaris (perquè no hi ha paquets “manualment instal·lats” que en depenguin). apt-get autoremove o apt autoremove es desfarà d'aquests paquets. L'aptitude no té aquesta ordre perquè les elimina automàticament tan aviat com s'identifiquen. En tots els casos, les eines mostren un missatge clar llistant els paquets afectats.
És un bon costum marcar com a automàtic qualsevol paquet que no necessiteu directament perquè sigui eliminat automàticament quan ja no sigui necessari. apt-mark auto paquet marcarà el paquet indicat com a automàtic, mentre que apt-mark paquet fa el contrari. aptitude markauto i aptitude unmarkauto funcionen de la mateixa manera, tot i que ofereixen més característiques per marcar molts paquets alhora (vegeu Secció 6.5.1, «aptitude»). La interfície interactiva basada en la consola d'aptitude també fa que sigui fàcil revisar la “marca automàtica” en molts paquets.
Potser algú vol saber per què hi ha un paquet instal·lat automàticament al sistema. Per obtenir aquesta informació des de la línia d'ordres podeu utilitzar aptitude why paquet (apt i apt-get no tenen cap característica similar):
$ aptitude why python3-debian
i   aptitude         Suggests apt-xapian-index
p   apt-xapian-index Depends  python3-debian (>= 0.1.14)

6.2.8. APT Patterns

Patterns allow you to specify complex search queries to select the packages you want to install or show. They were first implemented for aptitude (see Secció 6.5, «Interfícies: aptitude, synaptic»), but now APT can also make use of them.
For example, we can use apt list ?automatic to list all the packages automatically installed. To find packages automatically installed no longer depended upon by manually installed packages the pattern ?garbage can be used.
Logic patterns can be combined with other packages to form more complex expressions. For instance, we could use a pattern like ?and(PATTERN, PATTERN). See apt-patterns(7) and glob(7) for all the patterns you can use and the complex expressions you can create with them.