Gestió de paquets a Debian

En els inicis de Linux, el software es distribuïa amb arxius comprimits, els quals s’havien de descomprimir i compilar al client.

Les limitacions d’això es van fer evidents a mesura que el software creixia i era més complex, i la realitzar la compilació també era un problema pel client ja que requeria potència i temps.

Per abordar aquest problema, es va començar a intentar estandaritzar una manera de distribuir els paquets de software i van aparèixer els administradors de paquets.

A Debian, les eines de paqueteria més populars són dpkg i apt, que són els que aprendrem en el post d’avui.

Debian Package és la unitat essencial per instal·lar, configurar, mantenir i eliminar paquets en sistemes basats en Debian.

Per instal·lar o actualitzar un paquet amb dpkg, farem:

bash

$ sudo dpkg -i PACKAGENAME

Si el paquet està instal·lat, s’actualitzarà, i si el paquet no està instal·lat, s’instal·larà.

Sovint un paquet depèn d’un altre per funcionar correctament. Si volem instal·lar un paquet, dpkg primer revisarà si tenim les dependències al sistema i, si no les tenim, no podrà instal·lar-lo. En aquest cas dpkg llistarà els paquets que falten, tot i que no pot resoldre les dependències per si sol.

Per eliminar paquets, utilitzarem el paràmetre -r:

bash

$ sudo dpkg -r unrar
(Reading database ... 269630 files and directories currently installed.)
Removing unrar (1:5.6.6-2) ...
Processing triggers for man-db (2.8.5-2) ...

En aquesta operació també es verifiquen les dependències. Un paquet no es pot eliminar si hi ha paquets que depenen d’ell, i si s’intenta, donarà un missatge d’error.

Per eliminar tot el relacionat amb el paquet, com arxius de configuració, podem utilitzar el paràmetre -P (purgar) en comptes de -r.

Per forçar la instal·lació o eliminació de paquets amb dpkg, podem utilitzar el paràmetre –force, tot i que no eś recomenable.

Per obtenir informació sobre un paquet .deb (versió, arquitectura, mantenidor,…) utilitzarem el paràmetre -I:

bash

$ sudo dpkg -I google-chrome-stable_current_amd64.deb
(...)

Per llistar else paquets instal·lats, farem dpkg –get-selections. Per llistar cada arxiu instal·lat, farem dpkg -L PACKAGENAME.

Per això, utilitzarem dpkg-query amb el paràmetre -S i la ruta de l’arxiu:

bash

$ sudo dpkg-query -S /usr/bin/unrar-nonfree

Al instal·lar un paquet, hi ha un pas de configuració (post-install), on s’executa un script per configurar el necessari perquè el software s’executi. Per reconfigurar el post-install, farem dpkg-reconfigure PACKAGENAME.

Advanced Packaging Tool (APT) és un sistema d’administració de paquets.

És una “interfície” que optimitza i amplia les capacitats de dpkg.

Treballa conjuntament amb els repositoris de software que contenen els paquets disponibles per instal·lar.

Les distribucions Linux tenen els seus repositoris, i alguns desenvolupadors o grups d’usuaris també poden mantenir-ne altres.

Les principals utilitats d’apt són:

  • apt-get: S’utilitza per descarregar, instal·lar, actualitzar o eliminar paquets.

  • apt-cache: S’utilitza per realitzar operacions (com cerques) a l’índex de paquets.

  • apt-file: S’utilitza per buscar arxius dins els paquets.

A més, hi ha apt que combina les opcions més utilitzades d’apt-get i apt-cache.

Abans d’instal·lar o actualitzar software amb APT, és recomenable actualitzar l’índex de paquets. Per això, farem:

bash

$ sudo apt-get update

Per instal·lar un paquet, farem:

bash

$ sudo apt-get install PACKAGENAME

Per eliminar un paquet, farem:

bash

$ sudo apt-get remove PACKAGENAME

Si volem eliminar un paquet amb els arxius de configuració, afegirem –purge a la comanda.

Es poden tenir “dependències trencades” en un sistema, ja sigui per instal·lar paquets manualment o per errors d’apt. Per resoldre això, podem fer:

bash

$ sudo apt-get install -f

Intentarà arreglar els paquets trencats instal·lant les dependències que falten.

Per actualitzar paquets amb APT, primer actualitzarem l’índex (apt-get update). Un cop actualitzat, farem apt-get upgrade per actualitzar els paquets. Per actualitzar-ne només un, farem apt-get upgrade PACKAGENAME.

Quan instal·lem o actualitzem un paquet, l’arxiu .deb es descarrega en un directori de caché local (per defecte /var/cache/apt/archives/partial) abans d’instal·lar el paquet.

A mesura que instal·lem i actualitzem paquets, aquest directori es va engrandint. Per buidar-lo, podem fer apt-get clean.

Per buscar paquets, utilitzarem apt-cache search patró. Per obtenir informació d’un paquet, farem apt-cache show PACKAGENAME.

nil

Es poden utilitzar expressions regulars en el patró de cerca.

APT utilitza una llista de fonts per saber d’on obtenir paquets. Aquesta llista és dins sources.list, dins /etc/apt. La seva sintaxi és tipus d’arxiu, URL, distro i component/s:

  • Tipus d’arxiu

    Segons si el repositori conté binaris (deb) o codi font (deb-src).

  • URL

    URL del repositori

  • Distro

    Nom de la distro per la que es proporcionen els paquets.

  • Components

    Cada component representa un conjunt de paquets. Poden ser diferents segons la distribució Linux.

Per afegir un nou repositori, es pot afegir la línia corresponent al final de sources.list i recarregar l’índex amb apt-get update.

Dins el directori /etc/apt/sources/list.d es poden agregar arxius amb repositoris adicionals sense haver de modificar l’arxiu principal.

Els arxius que afegirem aqui seran amb la sintaxi descrita abans i amb extensió .list.

apt-file es pot utilitzar per llistar el contingut d’un paquet o trobar un paquet que conté un arxiu. Si la utilitat no està instal·lada, farem:

bash

$ sudo apt-get install apt-file

I actualitzarem la caché del paquet utiltizada per apt-file:

bash

$ sudo apt-file update

Per enumerar el contingut d’un paquet, utilitzarem el paràmetre list, i per buscar un arxiu en tots els paquets, utiltizarem el paràmetre search.

La cerca amb search retornarà el paquet que proporciona l’arxiu.