IMPORTANT: Per accedir als fitxer de subversion: http://acacha.org/svn (sense password). Poc a poc s'aniran migrant els enllaços. Encara però funciona el subversion de la farga però no se sap fins quan... (usuari: prova i la paraula de pas 123456)

Objectius del tema

102.4. Utilitzar els gestors de paquets tipus Debian
Objective.jpg
  • Objectiu: Els candidats han de ser capaços de gestionar els paquets de programari utilitzant les eines per paquets de Debian.
  • Pes: 3
060317 Icon - Theory of Knowledge v01 pdc.jpg

Àrees Clau de Coneixement:

Icon list.jpg

La següent és una llista parcial de fitxers, termes i utilitats utilitzades:

Text-editor.svg

Apunts: LPI 102.4. Utilitzar els gestors de paquets tipus Debian

Paquets de programari

Conceptes

Un paquet és un conjunt de fitxers que es troben en un únic fitxer. El motiu d'agrupar-los és que el funcionament
de cadascun d'aquests fitxers complementa o requereix d'uns altres. No és el mateix empaquetar que comprimir.

El repositori de paquets de Debian és molt extens.

La majoria de paquets tenen dues fonts:

  • Paquet binari: està fet en llenguatge màquina, pensat per executar-se en una màquina molt concreta. Aquests paquets contenen aplicacions binàries sense el seu codi font. El paquet inclou els fitxers executables.
  • Paquet font: aquests paquets inclouen el codi font. Cada paquet font té un paquet binari equivalent.
  • Dependència: les llibreries comunes (.dll en Windows) són paquets que s'instal·len prèviament a un altre paquet que en requereix la instal·lació i depèn d'aquests.
  • Gestor de paquets: aplicació que gestiona els paquets. Hi ha gestors que són per línia de comandes o gestors gràfics. La seva tasca és instal·lar i eliminar paquets.
  • Dipòsit (repository): és un lloc on es guarden paquets. Pot ser un CD, un USB, un disc dur o poden estar a internet, que és d'on ens descarreguem els paquets normalment.
  • Paquet virtual (tonto o dummy): són paquets que per ells sols no fan res. La seva tasca és la de buscar dependències per instal·lar un paquet, normalment en la seva última versió. El seu inconvenient és que si eliminem els paquets que instal·la el paquet "tonto", el que fem és eliminar solament el paquet "tonto".
  • Tasques: són paquets especials, agrupacions de paquets que instal·lats de forma conjunta proveeixen una funcionalitat comuna. Es poden gestionar les tasques amb l'eina tasksel.

Tipus de paquets

  • .rpm: és el format que utilitzen els paquets en distribucions Linux de la família Red Hat.
  • .deb: és el format que utilitzen els paquets en distribucions Linux de la família Debian.
  • .slp: és el format de paquets Stampede.
  • .tgz: és el format de paquet utilitzat a la distribució Linux Slackware.
  • .pkg: és el format de paquet utilitzat a la distribució Unix Solaris.

Paquets Debian

Propietats:

  • La seva extensió és .deb. L'extensió és orientativa, es pot eliminar i el paquet continua sent un paquet debian.
  • Els paquets debian incorporen un sistema de configuració (debconf).
  • La única eina que gestiona els paquets en debian és dpkg. Sovint s'utilitza mitjançant el front-end apt.

Característiques:

  • Nom del fitxer:
<nom_del_paquet>_<numero_de_versio>-<numero_de_revisio_debian>.deb
  • Exemple:
    • Nom del paquet: apache2.2-common
    • Nom del fitxer: apache2.2-common_2.2.3-3.2build1_i386.deb

Per instal·lar el paquet escrivim:

$sudo apt-get install apache2

Podem trobar el paquet a la carpeta /var/cache/apt/archives

Comprovació de que l'arxiu "control" d'un paquet i la pestanya "comú" de les propietats d'aquest paquet al Synaptic són iguals:

  • Arxiu "control":
Package: amor
Source: kdetoys
Version: 4:4.6.5-0ubuntu1
Architecture: i386
Maintainer: Kubuntu Developers <[email protected]>
Installed-Size: 2156
Depends: kdebase-runtime, libc6 (>= 2.4), libkdecore5 (>= 4:4.5.80), libkdeui5 (>= 4:4.3.4), libqt4-dbus (>= 4:4.5.3), libqtcore4 (>= 4:4.7.0~beta1), libqtgui4 (>= 4:4.5.3), libstdc++6 (>= 4.1.1), libx11-6, libxext6
Recommends: kde-window-manager
Suggests: khelpcenter
Section: games
Priority: optional
Homepage: http://www.kde.org/
Description: desktop companion
 AMOR, or Amusing Misuse Of Resources, displays an animated character who
 wanders about the screen, doing tricks and giving the occasional hint.
 .
 This package is part of the KDE toys module.
Original-Maintainer: Debian Qt/KDE Maintainers <[email protected]>
  • Pestanya "comú":

Synaptic amor joel.png

Scripts de manteniment

  • preinst: S'executa abans d'extreure els fitxers del paquet al sistema.
  • postinst: S'executa després d'extreure els fitxers del sistema.
  • prerm: S'executa abans d'esborrar els fitxers del sistema.
  • postrm: S'executa després d'esborrar els fitxers del sistema.

Creació fitxer deb joel.png

Debconf

  • És l'encarregat de configurar els paquets debian.
  • Proporciona de diferents interfícies de comunicació amb l'usuari.
  • Les interfícies es creen fàcilment mitjançant plantilles.
  • Hi ha diferents tipus de qüestions (seleccionables, preguntes si/no, camps de text, etc...)
  • Tenen suport per a múltiples idiomes (suporten fitxers po)

Pràctica: Purgar un paquet

Pràctica: Purgar un paquet Debian

Relacions entre paquets

Hi ha diferents relacions entre paquets:

  • El paquet A depèn del paquet B: Implica que és absolutament necessari que el paquet B estigui instal·lat abans de poder instal·lar A. També pot ser que A depengui d'una versió especifica de B.
  • El paquet A recomana B: B no és necessari però el desenvolupador de A creu que la majoria d'usuaris d'A trobaran útil B.
  • El paquet A suggereix B: El paquet A suggereix el B perquè B conté funcionalitats relacionades amb A (que sovint milloren la seva funcionalitat).
  • El paquet A entra en conflicte amb el paquet B: El paquet A no pot operar al sistema si existeix B. Sovint això passa perquè tots dos proporcionen el mateix fitxer.
  • El paquet A reemplaça B: Al instal·lar A s'esborren els fitxers de B i en alguns casos es sobreescriuen.
  • El paquet A proveeix de B: Quan tots els fitxers i funcionalitats de B han d'estar incorporades a A.

Importància d'un paquet

Els paquets debian poden tenir diferents nivells d'importància, que són els següents:

  • Required: Paquets imprescindibles per al correcte funcionament del sistema. Inclou totes les eines necessàries per reparar els defectes d'un sistema. Sense aquests paquets el sistema estarà trencat i no es podrà utilitzar dpkg per arreglar-lo. Els sistemes que només tenen paquets requerits no són utilitzables, però tenen les suficients funcionalitats per permetre que l'administrador del sistema pugui iniciar la màquina i instal·lar més programari.
  • Important: Paquets que s'haurien de trobar en tot sistema. Aquests paquets no inclouen Emacs o X11 o TeX ni cap altre "gran" aplicació. Aquests paquets només constitueixen la infraestructura bàsica.
  • Standard: Els paquets Standard, són aquells mínims que s'haurien de trobar a tota màquina. Hi ha les eines bàsiques per navegar per la web (w3m), enviar correus electrònics (mutt) o descarregar fitxers o servidors FTP. Aquests paquets (i els de prioritat superior) són els que s'instal·len per defecte. No inclou moltes aplicacions importants.
  • Optional: Paquets que possiblement molta gent voldrà instal·lar però que no són imprescindibles pel sistema. Aquí trobem paquets tant importants com X11.
  • Extra: Paquets que entren en conflicte amb altres de major prioritat però que en certes condicions els usuaris poden preferir.

Una instal·lació per defecte de Debian instal·la tots els paquets de prioritat estàndard o inferior.

Dipòsits

Dipòsits a Debian

Els repositoris són pàgines d'internet on estan emmagatzemats els paquets que ens baixem a l'ordinador. Aquests repositoris estan dividits en diferents seccions:

  • Main: La distribuciço Debian oficial és el que està contingut en aquesta secció. És software lliure.
  • Seccions amb llicència restrictiva:
    • Contrib: Paquets amb llicència lliure però que depenen de programari que no és lliure.
    • Non-Free: Paquets que tenen alguna condició en la llicència que restringeix l'ús o la redistribució del programari.
    • Non-US/Main: Paquets lliures però que no es poden redistribuir des d'un servidor dels EUA.
    • Non-US/Non-Free: No lliures i no es poden distribuir des dels EUA.
  • Versions de Debian: Debian té una política de llançament de versions segons l'estat (maduresa) de la versió. Les diferents versions reben el nom de protagonistes de Toy Story.
    • stable: La distribució stable conté la última distribució llançada oficialment. Recomanada per a producció. Nom codi squeeze.
    • testing: Conté paquets que no han estat encara acceptats a una distribució stable, però que estan a la cua per a fer-ho. Té versions més recents de programari. Nom codi wheezy.
    • unstable: El desenvolupament actiu de Debian té lloc a la distribució inestable. Nom codi sid.

Dipòsits a Ubuntu

  • Tipus de components segons si Ubuntu en dóna suport:
    • main: Aplicacions lliures i plenament suportades per l'equip d'Ubuntu. Aplicacions populars.
    • restricted: Programari d'ús comú (drivers) que no és Programari Lliure. Suportat per l'equip d'Ubuntu tot i que no tenen el codi font (només poden reportar els errors).
    • universe: Aplicacions lliures no suportades per Ubuntu però que formen part de l'univers d'aplicacions Linux. No donen suport explícit.
    • multiverse: Programari Linux no lliure. Sense suport.
  • Tipus d'actualitzacions. Ubuntu té una nova versió cada 6 mesos, estigui com estigui el seu desenvolupament, i van sortint actualitzacions:
    • Security: Actualitzacions de seguretat importants,
    • Updates: Actualitzacions recomanades.
    • Proposed: Actualitzacions disponibles abans del seu alliberament a la primera versió.
    • Backports: Són les versions més actuals d'un programa. Actualitzacions no suportades.

Paquets synaptic joel.png

Actualitzacions synaptic joel.png

Gestors de paquets Debian

dpkg

  • dpkg (Debian Package) és l'aplicació encarregada de gestionar els paquets Debian.
  • És una eina de baix nivell. Normalment com a usuaris utilitzarem altres eines a nivell més alt (com apt-get o aptitude) Amb l'eina dpkg, l'usuari ha de baixar el paquet abans d'instal·lar-lo, en canvi amb apt-get la mateixa eina busca el paquet i l'instal·la.
  • La sintaxi és:
$ dpkg [options] [action] [package-files|package-name]

Accions dpkg:

  • dpkg -l | --list package-name-pattern : Llista els paquets que compleixen amb un determinat patró.
$ dpkg -l
ii  xul-ext-ubufox 0.9.3-0ubuntu0 Ubuntu-specific configuration defaults and a
ii  xz-utils       5.0.0-2        XZ-format compression utilities
ii  yelp           3.0.0-0ubuntu2 Help browser for GNOME
ii  yelp-xsl       3.0.0-0ubuntu1 a collection of documentation utilities for 
ii  zeitgeist      0.7.1-1        event logging framework
ii  zeitgeist-core 0.7.1-1        event logging framework - engine
ii  zeitgeist-data 0.7.0-0ubuntu1 event logging framework - passive logging da
ii  zeitgeist-exte 0.0.7-0ubuntu1 Extensions for zeitgeist engine - fts extens
ii  zenity         2.32.1-0ubuntu Display graphical dialog boxes from shell sc
ii  zip            3.0-3build1    Archiver for .zip files
ii  zlib1g         1:1.2.3.4.dfsg compression library - runtime
$ dpkg -l | wc
  1764   15832  223519
(línies) (paraules) (caràcters)
$ dpkg -l | grep openoffice
ii  openoffice.org-hyphenation            0.6                                        Hyphenation patterns for OpenOffice.org
  • dpkg -s | --status package-name : mostra l'estatus actual d'un paquet i la metainformació del paquet.
$ dpkg -s hello
Package: hello
Status: install ok installed
Priority: optional
Section: devel
Installed-Size: 96
Maintainer: Ubuntu Developers <[email protected]>
Architecture: i386
Version: 2.6-1
Depends: libc6 (>= 2.4), dpkg (>= 1.15.4) | install-info
Description: The classic greeting, and a good example
 The GNU hello program produces a familiar, friendly greeting.  It
 allows non-programmers to use a classic computer science tool which
 would otherwise be unavailable to them.
 .
 Seriously, though: this is an example of how to do a Debian package.
 It is the Debian version of the GNU Project's `hello world' program
 (which is itself an example for the GNU Project).
Original-Maintainer: Santiago Vila <[email protected]>
Homepage: http://www.gnu.org/software/hello/
  • dpkg -L | --listfiles package : Mostra la llista de fitxers instal·lats
$ dpkg -L hello
/.
/usr
/usr/share
/usr/share/doc
/usr/share/doc/hello
/usr/share/doc/hello/NEWS
/usr/share/doc/hello/copyright
/usr/share/doc/hello/changelog.gz
/usr/share/doc/hello/changelog.Debian.gz
/usr/share/info
/usr/share/info/hello.info.gz
/usr/share/man
/usr/share/man/man1
/usr/share/man/man1/hello.1.gz
/usr/bin
/usr/bin/hello
  • dpkg -S | --search filename-search-pattern : Busca un fitxer concret dins dels paquets instal·lats
$ man dpkg-query
$ dpkg -S hello
language-pack-kde-ca-base: /usr/share/locale-langpack/ca/LC_MESSAGES/katehelloworld.mo
python-uno: /usr/share/doc/uno-libs3/demo/hello_world_comp.py
language-pack-en-base: /usr/share/locale-langpack/[email protected]/LC_MESSAGES/hello.mo
hello: /usr/share/doc/hello/changelog.gz
language-pack-en-base: /usr/share/locale-langpack/en_AU/LC_MESSAGES/hello-debhelper.mo
hello: /usr/share/doc/hello/NEWS
{...}
  • dpkg -p | --print-avail package : Mostra detalls sobre un paquet instal·lat.
$ dpkg -p hello
Package: hello
Priority: optional
Section: devel
Installed-Size: 96
Maintainer: Ubuntu Developers <[email protected]>
Architecture: i386
Version: 2.6-1
Depends: libc6 (>= 2.4), dpkg (>= 1.15.4) | install-info
Size: 34540
Description: The classic greeting, and a good example
 The GNU hello program produces a familiar, friendly greeting.  It
 allows non-programmers to use a classic computer science tool which
 would otherwise be unavailable to them.
 .
 Seriously, though: this is an example of how to do a Debian package.
 It is the Debian version of the GNU Project's `hello world' program
 (which is itself an example for the GNU Project).
Original-Maintainer: Santiago Vila <[email protected]>
Homepage: http://www.gnu.org/software/hello/
  • dpkg -I | --info package-name: Mostra informació sobre un paquet desinstal·lat.


Accions que modifiquen el sistema. Cal ser superusuari.

  • dpkg -i | --install package-file: Instal·la un paquet a partir d'un fitxer .deb
  • dpkg --configure package-name: Torna a configurar un paquet ja instal·la. Executa l'script de post-instal·lació.
  • dpkg -r | --remove package_name: Elimina un paquet, però deixa els fitxers de configuració de sistema.
  • dpkg -P | --purge package_name: Elimina un paquet incloent els fitxers de configuració.
  • dpkg -C | --audit: busca fitxers instal·lats parcialment al sistema i suggereix que fer amb ells.

Pràctica: Instal·lar manualment un paquet

Pràctica: Instal·lar manualment un paquet Debian

apt

Significa "Advanced Packaging Tool" i s'utilitza per a la gestió de paquets em sistemes Debian GNU/Linux o derivats. L'eina apt simplifica molt la feina de l'administració de paquets en sistemes UNIX, perquè automatitza el procés d'obtenció, instal·lació i configuració de programari.

L'apt és un front-end de dpkg. Actualment ja hi ha versions modificades d'apt per treballar amb paquets rpm. A diferència de dpkg, apt instal·la les dependències dels paquets. No existeix un programa apt en si mateix, sinó que APT és una biblioteca de funcions C++ que s'empra per diversos programes de Línia de comandes per a distribuir paquets.

aptitude

Synaptic

Update-manager

software-center

Ordres

dpkg

dpkg-reconfigure

Aquesta ordre torna a configurar un paquet ja instal·lat en el sistema. Té les següents opcions:

  • ftype, --frontend=type: S'utilitza per seleccionar el frontend a utilitzar.
  • -pvalue, --priority=value: Especifica el llindar mínim de prioritat. Totes les opcions de configuració igual o per sobre d'aquest llindar seran mostrades.
  • --default-priority: Utilitzar la prioritat per defecte.
  • -a, --all: Configurar tots els paquets del sistema que utilitzen debconf.
  • -u, --unseen-only: Només mostra les qüestions que no han esta contestades prèviament.
  • --force: Força un dpkg-reconfigure inclús si el paquet està en un estat inconsistent o trencat.
  • --no-reload: No torna a carregar les plantilles.

apt-get

Amb l'apt-get podem fer diverses accions:

  • Sincronitzar la base de dades de paquets:
    • Opció update. Serveix per actualitzar la base de dades. S'utilitza la comanda:
$ sudo apt-get update
    • La base de dades de paquets (package cache) es local i no es sincronitza automàticament amb els dipòsits. La base de dades es pot gestionar amb apt-cache.
    • Cada cop que fem un canvi als repositoris, o volem comprovar si tenim les últimes versions dels paquets als repositoris hem d'executar abans un update.
    • S'ha d'executar regularment i sinó tenim paquets com l'update-manager que comprova periòdicament si tenim actualització.
  • Instal·lar un paquet:
    • Per instal·lar un paquet s'utilitza la comanda següent:
$ sudo apt-get install [nom paquet]
    • L'eina suporta autocompletar en les opcions i en els noms de paquets.
    • Es pot simular la instal·lació amb la comanda:
$ sudo apt-get --simulate install [nom paquets]
    • Altres opcions:

• -d: Només descarrega el paquet. • -f: Força la instal·lació encara que falli el test d'integritat. • -y: Respon si a totes les preguntes.

  • Eliminar un paquet:
    • La següent opció no elimina els fitxers de configuració:
$ sudo apt-get remove [nom paquet]
    • La següent opciuEliminar completament (purge):
$ sudo apt-get remove –purge [nom paquet]
    • És important saber que a l'esborrar un paquet també es poden eliminar paquets els quals depenien del paquet esborrat.
    • La opció autoremove esborra paquets del sistema que ja no s'utilitzen.
  • Actualitzar la versió dels paquets:
    • La opció upgrade actualitza paquets instal·lats en el sistema dels quals es disposa d'una nova versió al repositori. La comanda és la següent:
$ sudo apt-get upgrade
    • La opció dist-upgrade s'utilitza per actualitzar paquets a una nova versió del sistema. Instal·la paquets mantinguts.
  • Esborrar paquets descarregats:
    • Per esborrar paquets descarregats utilitzem la següent comanda:
$ sudo apt-get clean

apt-cache

  • apt-cache és l'eina que permet manipular la memòria cau (cache) dels paquets Debian. L'ordre només serveix per proporcionar informació sobre la base de dades de paquets Debian (també coneguda com package cache).
  • Buscar paquets:
$ apt-cache search [nom paquet]
  • Veure les dependències dels paquets:
$ apt-cache depends [nom paquet]
  • Visualitzar la informació d'un paquet:
$ apt-cache show [nom paquet]
  • Veure informació detallada dels paquets:
$ apt-cache showpkg package
  • Veure estadístiques de la base de dades de paquets:
$ sudo apt-cache stats
  • Veure els noms dels paquets:
$ apt-cache pkgnames
  • Veure el número de paquets:
$ apt-cache pkgnames || wc -l
  • Veure les dependències no satisfetes:
$ sudo apt-cache unmet
  • Veure informació detallada d'un paquet:
$ apt-cache showpkg [nom paquet]

aptitude

  • Accepta les mateixes opcions que apt-get.
  • L'única diferència és que esborra les dependències a l'esborrar un paquet (no necessita l'ordre clean).
  • S'inicia amb la comanda:
$ sudo aptitude

Aptitude joel1.png

  • Per instal·lar un paquet:
    • Localitzem el paquet en la categoria «Paquets no instal·lats», usant les tecles del cursor del teclat i la tecla INTRO.
    • Seleccionem el paquet que desitgem instal·lar i premem la tecla +. El paquet es posarà en verd.
    • Premem la tecla g i es presentarà un resum de les accions que es van a realitzar.
    • Premem g altra vegada, i començarà la descàrrega i posterior instal·lació del paquet.

Conversió de paquets

Per convertir paquets, utilitzem l'eina Alien.

  • Convertim el paquet "package.rpm" a format deb en el paquet "package.deb"
$ alien --to-deb package.rpm
  • Convertim el paquet "package.deb" a format rpm en el paquet "package.rpm"
$ alien --to-rpm package.deb
  • Podem fer conversions múltiples:
$ alien --to-deb --to-rpm --to-tgz --to-slp foo.deb bar.rpm baz.tgz

Vegeu també

Enllaços externs