Gestió de paquets a Debian
Introducció
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.
L’eina de paqueteria de Debian (dpkg)
Debian Package és la unitat essencial per instal·lar, configurar, mantenir i eliminar paquets en sistemes basats en Debian.
Instal·lar i actualitzar paquets
Per instal·lar o actualitzar un paquet amb dpkg, farem:
$ sudo dpkg -i PACKAGENAME
Si el paquet està instal·lat, s’actualitzarà, i si el paquet no està instal·lat, s’instal·larà.
Manejament de dependències
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.
Eliminar paquets
Per eliminar paquets, utilitzarem el paràmetre -r:
$ 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.
Obtenir informació de paquets
Per obtenir informació sobre un paquet .deb (versió, arquitectura, mantenidor,…) utilitzarem el paràmetre -I:
$ sudo dpkg -I google-chrome-stable_current_amd64.deb
(...)
Llistar paquets instal·lats i el seu contingut
Per llistar else paquets instal·lats, farem dpkg –get-selections. Per llistar cada arxiu instal·lat, farem dpkg -L PACKAGENAME.
Esbrinar quin paquet posseeix un arxiu específic
Per això, utilitzarem dpkg-query amb el paràmetre -S i la ruta de l’arxiu:
$ sudo dpkg-query -S /usr/bin/unrar-nonfree
Reconfigurar paquets instal·lats
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.
Eina de paqueteria avançada (apt)
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.
Actualització dels índexos de paquets
Abans d’instal·lar o actualitzar software amb APT, és recomenable actualitzar l’índex de paquets. Per això, farem:
$ sudo apt-get update
Instal·lar i eliminar paquets
Per instal·lar un paquet, farem:
$ sudo apt-get install PACKAGENAME
Per eliminar un paquet, farem:
$ sudo apt-get remove PACKAGENAME
Si volem eliminar un paquet amb els arxius de configuració, afegirem –purge a la comanda.
Reparar dependències trencades
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:
$ sudo apt-get install -f
Intentarà arreglar els paquets trencats instal·lant les dependències que falten.
Actualitzar paquets
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.
La caché local
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.
Buscar paquets
Per buscar paquets, utilitzarem apt-cache search patró. Per obtenir informació d’un paquet, farem apt-cache show PACKAGENAME.
Es poden utilitzar expressions regulars en el patró de cerca.
La llista de fonts
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.
El directori /etc/apt/sources/list.d
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.
Llistar el contingut de paquets i cerca d’arxius
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:
$ sudo apt-get install apt-file
I actualitzarem la caché del paquet utiltizada per apt-file:
$ 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.