Administración de paquetes en Ubuntu

Los paquetes contienen generalmente todos los archivos necesarios para implementar un conjunto de comandos relacionados o características. Existen dos tipos de paquetes Ubuntu:

  • Paquetes binarios, que contienen ejecutables, archivos de configuración, páginas man/info, información sobre derechos de autor y así como otra información, conocida como metadatos; esta incluye información del paquete, scripts que serán ejecutados, la lista de dependencias y conflictos o sugerencias. Estos paquetes se distribuyen en un formato de archivo específico de Debian; que se distinguen por tener a .deb como extensión de archivo. Los paquetes binarios se pueden desempaquetar usando la utilidad de Debian dpkg.
  • Paquetes fuentes, que consisten en un archivos que contienen el código fuente original sin modificar en formato tar comprimido con gzip y, generalmente.

La instalación de software mediante el sistema de paquetes utiliza dependencias que fueron señaladas por las personas a cargo de los paquetes. Estas dependencias están documentadas en el archivo de control asociado a cada paquete. Por ejemplo, el paquete que contiene el compilador C GNU (gcc) depende del paquete binutils que incluye el enlazador y ensamblador. Si un usuario intenta instalar gcc sin haber previamente instalado binutils, el sistema de administración de paquetes (dpkg) mostrará un mensaje de error diciendo que necesita también a binutils y abortará la instalación de gcc

Un “paquete” Ubuntu contine los archivos ejecutables, bibliotecas y la documentación asociada con un programa particular o con un conjunto de programas relacionados. Normalmente, un archivo Ubuntu tiene la extensión de archivo .deb.

Si nunca has visto un fichero de paquete de Ubuntu previamente, puedes entrar en la carpeta /var/cache/apt/archives y haz un listado de su contenido:

$ cd /var/cache/apt/archives/
 
$ ls
 
acroread_9.1.3-1jaunty1_i386.deb
amarok_2%3a2.0.2mysql5.1.30-0ubuntu3_i386.deb
amarok-common_2%3a2.0.2mysql5.1.30-0ubuntu3_all.deb
app-install-data-partner_11.9.04.4_all.deb
calendar-google-provider_0.9+nobinonly-0ubuntu2_i386.deb
calendar-timezones_0.9+nobinonly-0ubuntu2_i386.deb
curl_7.18.2-8ubuntu4.1_i386.deb
dia_0.96.1-7.1_i386.deb
dia-common_0.96.1-7.1_all.deb
dia-gnome_0.96.1-7.1_i386.deb
dia-libs_0.96.1-7.1_i386.deb
dnsmasq-base_2.47-3ubuntu0.1_i386.deb
...

Si nos fijamos vemos que los nombres de los paquetes Debian/Ubuntu siguen la siguiente convención:

     npaquete_version-revision_arquitectura.deb

Donde generalmente:

  • npaquete es el nombre del paquete
  • version es el número de versión del paquete (cada vez que los mantenedores del mismo le añaden modificaciones o mejoras incrementan el número de la versión)
  • revision es el número de revisión (de Ubuntu/Debian)
  • arquitectura es la arquitectura para la que fue compilado el paquete.
El número de revisión es asignado por el desarrollador Ubuntu. Un cambio en el número de revisión generalmente indica que a cambiado algún aspecto del empaquetado.

Por supuesto, los archivos se pueden fácilmente cambiar de nombre. Podemos averiguar qué paquete esta realmente contenido en un nombre de archivo loquesea ejecutando el siguiente comando:

$ dpkg --info npaquete_version-revision_arquitectura.deb o dpkg -s npaquete

Ejemplo:

 dpkg --info dia_0.96.1-7.1_i386.deb 
Obtendríamos el mismo resultado ejecutando dpkg -s dia
 paquete debian nuevo, versión 2.0.
 tamaño 191654 bytes: archivo de control= 1256 bytes.
     964 bytes,    16 líneas     control              
     369 bytes,     6 líneas     md5sums              
     552 bytes,    20 líneas  *  postinst             #!/bin/sh
     293 bytes,     8 líneas  *  postrm               #!/bin/sh
     106 bytes,     8 líneas  *  prerm                #!/bin/sh
 Package: dia
 Version: 0.96.1-7.1
 Architecture: i386
 Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
 Original-Maintainer: Debian Dia Team <pkg-dia-team@lists.alioth.debian.org>
 Installed-Size: 548
 Depends: libart-2.0-2 (>= 2.3.18), libatk1.0-0 (>= 1.20.0), libc6 (>= 2.4), libcairo2 (>= 1.2.4), 
libfontconfig1 (>= 2.4.0), libfreetype6 (>= 2.3.5), libglib2.0-0 (>= 2.16.0), libgtk2.0-0 (>= 2.14.1),
...
 Recommends: gsfonts-x11
 Section: graphics
 Priority: optional
 Homepage: http://live.gnome.org/Dia
 Description: Diagram editor
  Dia is an editor for diagrams, graphs, charts etc. There is support for UML
  static structure diagrams (class diagrams), Entity-Relationship diagrams,
  network diagrams and much more. Diagrams can be exported to postscript and
  many other formats.

El sistema de paquetes Ubuntu maneja declaraciones de dependencia que se utilizan para expresar que un paquete necesita de la instalación de otro para funcionar. Los tipos de relación que pueden existir entre los paquetes son:

  • El Paquete A Depende del Paquete B si B debe instalarse sí o sí para poder ejecutar A. En algunos casos A Depende no sólo de B, sino de una versión específica de B. En este caso, la dependencia de versión constituye un límite inferior, es decir, A dependerá de cualquier versión de B más reciente que la versión especificada.
  • El Paquete A Recomienda al Paquete B si el encargado del mismo considera que la mayoría de los usuarios no querrán a A sin tener también la funcionalidad proporcionada por B.
  • El Paquete A Sugiere al Paquete B si B contiene archivos que están relacionados y mejoran la funcionalidad de A. La misma relación se expresa diciendo que el paquete B Mejora el paquete A.
  • El Paquete A Está en conflicto con el Paquete B cuando A no funciona si se instala B en el sistema.
  • El Paquete A Reemplaza el Paquete B cuando los archivos instalados por B se eliminan o se sobreescriben por los archivos de A.
  • El Paquete A Proporciona el Paquete B cuando todos los archivos y funcionalidad de B están incorporados en A.

Ejemplo: El paquete de software brasero provee una aplicación que permite grabar cds y dvds. Si vemos la relación que tiene con otros paquetes:

$ dpkg -s brasero 
 
Package: brasero
Status: install ok installed
....
Replaces: bonfire (<= 0.4.4-1)
Depends: libatk1.0-0 (>= 1.20.0), libbeagle1 (>= 0.3.5), libbrasero-media0 (>= 2.26.1-0ubuntu1), 
libc6 (>= 2.7),...genisoimage, gstreamer0.10-plugins-base (>= 0.10.0)
Recommends: hal (>= 0.5), gstreamer0.10-plugins-good, gnome-mount
Suggests: gnome-icon-theme, gstreamer0.10-fluendo-mp3, gstreamer0.10-plugins-bad, vcdimager
Conflicts: bonfire (<= 0.4.4-1), nautilus-cd-burner
Description: CD/DVD burning application for GNOME

Vemos que:

  • Reemplaza a una versión anterior del programa que se llamaba bonfire, por lo que además entra en conflicto con él.
  • Depende de una serie de librerías, entre ellas la librería estandar de C, libc6.
  • Recomienda hal, que permite trabajar de forma sencilla con el hardware conectado a nuestro sistema, entre otras cosas detecta cuando hemos introducido un CD o DVD en la bandeja.
  • Sugiere, por ejemplo, vcdimage, que permite rippear y decodificar CDs en formato VCD.
  • Está en conflicto con la utilidad que provee por defecto el explorador de archivos de Gnome (nautilus) para grabar CDs.
La utilidad aptitude tiene un mayor control sobre los paquetes considerados como Recomendados y Sugeridos que apt-get, el cual simplemente obtiene todos los paquetes considerados como Dependientes y deja todos los paquetes considerados como Recomendados y Sugeridos.

La manipulación directa de ficheros de paquetes se realiza con el comando dpkg. Gracias a la existencia de programas como el Centro de software de Ubuntu, synaptic, aptitude o apt-get, sólo es necesario usar dpkg cuando nos encontramos con paquetes de Ubuntu sueltos, esto es, que no forman parte de un repositorio estructurado en la red o de un CD–ROM.

El comando

# dpkg -i paquete.deb

Instalará el fichero de paquete indicado.

En caso de que se produzcan problemas de dependencias (falta un paquete del que depende), el paquete no será configurado, pero será desempaquetado. En este caso deberemos instalar también los paquetes necesarios para resolver las dependencias (con apt -f install se suele solucionar)
Al instalar un paquete de está forma hemos de especificar la ruta completa hasta el fichero .deb que contiene el paquete.
$ sudo dpkg -i test_1.2.3ubuntu2_i386.deb
Es necesario advertir que se debe ser cuidadoso con los paquetes instalados directamente con dpkg. En general no instalaremos paquetes siguiendo este procedimiento, aunque puede ser imprescindible en algún caso puntual, como por ejemplo algún driver de dispositivo que no se distribuye a través de repositorios o algún software propietario.

Si queremos comprobar si un paquete está instalado podemos hacerlo utilizando la opción -l:

$ dpkg -l vim
 
Desired=Unknown/Install/Remove/Purge/Hold
| Estado=No/Instalado/Config-files/Desempaquetado/Fallo-config/Medio-inst/espera-disparo/pendiente-disparo
|/ Err?=(ninguno)/Retenido/Requiere-reinst/X=ambos problemas (Estado,Err: mayúsc.=malo)
||/ Nombre         Versión       Descripción
+++-==============-==============-============================================
ii  vim            2:7.2.079-1ubu Vi IMproved - enhanced vi editor
  • La primera i indica que el estado deseado para ese paquete es Instalado, y la segunda i indica que el estado actual es Instalado también.

Para desinstalar paquetes con dpkg se emplea:

# dpkg --remove paquete

o bien

# dpkg --purge paquete

si se quiere además borrar los ficheros de configuración. También se puede usar -P.

  • En este caso no se especifica la ruta en la que se encuentra el paquete, sino simplemente el nombre del mismo.

La opción -L muestra todos los archivos que instala en el sistema un paquete en concreto.

$ dpkg -L hwdata
/.
/usr
/usr/share
/usr/share/doc
/usr/share/doc/hwdata
/usr/share/doc/hwdata/copyright
/usr/share/doc/hwdata/changelog.Debian.gz
/usr/share/hwdata
/usr/share/hwdata/MonitorsDB
/usr/share/hwdata/pci.ids
/usr/share/hwdata/upgradelist
/usr/share/hwdata/usb.ids
/usr/share/hwdata/videodrivers

Si no sabemos que paquete instaló un determinado archivo en nuestro sistema podemos averigüarlo con la opción -S de dpkg:

$ dpkg -S /etc/default/useradd 
passwd: /etc/default/useradd

En este ejemplo el fichero /etc/default/useradd es proveido por el paquete passwd.

Si un archivo es instalado o modificado por más de un paquete dpkg -S mostrará todos los paquetes en cuestión.

Advanced Packaging Tool, (APT), es un sistema de gestión de paquetes que simplifica en gran medida la instalación y eliminación de programas en los sistemas GNU/Linux. Y apt-get es la utilidad para usar desde la línea de comandos que hace de interfaz entre el usuario y APT.

APT es capaz de:

  • manejar automáticamente las dependencias entre paquetes
  • hacerse cargo de las configuraciones de los paquetes
  • encontrar los paquetes por sí mismo y
  • actualizar el sistema con versiones nuevas de programas.

APT, por si mismo no instala los paquetes, se encarga de descargarlos, resolver dependencias, mantener actualizada la base de datos de paquetes y de otras funciones, pero cuando se va a instalar un paquete transfiere el control a dpkg. Todas estas tareas las hace de forma transparente (el usuario no se da cuenta) al usuario.

Como parte de funcionamiento de APT se necesita un fichero donde se localicen las fuentes. Una fuente o repositorio, es el lugar donde se encuentran los paquetes. Una fuente puede ser:

  • Un CD/DVD.
  • Un servidor HTTP.
  • Un servidor FTP.
  • Un directorio en el sistema de ficheros local.

El fichero en el que se especifican las fuentes disponibles es /etc/apt/sources.list

Normalmente el formato del fichero /etc/apt/sources.list incluye líneas del tipo:

deb http://site.org/debian distribución sección1 sección2
deb-src http://site.org/debian distribución sección1 sección2

Ejemplos:

deb http://es.archive.ubuntu.com/ubuntu/ jaunty multiverse
deb-src http://archive.canonical.com/ubuntu jaunty partner
  • deb indica que el repositorio contiene paquetes compilados o binarios.
  • deb-src indica que en el repositorio obtendremos paquetes en código fuente.
  • http://es.archive.ubuntu.com/ubuntu es la url para acceder al repositorio.
  • En un repositorio puede haber paquetes de diferentes versiones de Ubuntu, jaunty indica la versión en concreto de la que vamos a descargar paquetes.
  • En cada versión de una distribución podemos encontrar diferentes componentes de paquetes, clasificados en función de la licencia que contienen y de si reciben soporte oficial o no. multiverse, por ejemplo, contiene los paquetes sin soporte debido a que no cumplen los requisitos de software libre. Más información en http://es.wikipedia.org/wiki/Ubuntu#Organizaci.C3.B3n_de_paquetes

Si queremos ver el contenido del fichero sources.list para ver todas las fuentes de paquetes disponibles en nuestro sistema podemos ejecutar:

$ cat /etc/apt/sources.list
# deb cdrom:[Ubuntu 9.04 _Jaunty Jackalope_ - Release i386 (20090420.1)]/ jaunty main restricted
# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
# newer versions of the distribution.
 
deb http://es.archive.ubuntu.com/ubuntu/ jaunty main restricted
deb-src http://es.archive.ubuntu.com/ubuntu/ jaunty main restricted
 
## Major bug fix updates produced after the final release of the
## distribution.
deb http://es.archive.ubuntu.com/ubuntu/ jaunty-updates main restricted
deb-src http://es.archive.ubuntu.com/ubuntu/ jaunty-updates main restricted
 
## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team. Also, please note that software in universe WILL NOT receive any
## review or updates from the Ubuntu security team.
deb http://es.archive.ubuntu.com/ubuntu/ jaunty universe
deb-src http://es.archive.ubuntu.com/ubuntu/ jaunty universe
deb http://es.archive.ubuntu.com/ubuntu/ jaunty-updates universe
deb-src http://es.archive.ubuntu.com/ubuntu/ jaunty-updates universe
 
## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu 
## team, and may not be under a free licence. Please satisfy yourself as to 
## your rights to use the software. Also, please note that software in 
## multiverse WILL NOT receive any review or updates from the Ubuntu
## security team.
deb http://es.archive.ubuntu.com/ubuntu/ jaunty multiverse
deb-src http://es.archive.ubuntu.com/ubuntu/ jaunty multiverse
deb http://es.archive.ubuntu.com/ubuntu/ jaunty-updates multiverse
deb-src http://es.archive.ubuntu.com/ubuntu/ jaunty-updates multiverse
 
## Uncomment the following two lines to add software from the 'backports'
## repository.
## N.B. software from this repository may not have been tested as
## extensively as that contained in the main release, although it includes
## newer versions of some applications which may provide useful features.
## Also, please note that software in backports WILL NOT receive any review
## or updates from the Ubuntu security team.
# deb http://es.archive.ubuntu.com/ubuntu/ jaunty-backports main restricted universe multiverse
# deb-src http://es.archive.ubuntu.com/ubuntu/ jaunty-backports main restricted universe multiverse
 
## Uncomment the following two lines to add software from Canonical's
## 'partner' repository.
## This software is not part of Ubuntu, but is offered by Canonical and the
## respective vendors as a service to Ubuntu users.
deb http://archive.canonical.com/ubuntu jaunty partner
# deb-src http://archive.canonical.com/ubuntu jaunty partner
 
deb http://security.ubuntu.com/ubuntu jaunty-security main restricted
deb-src http://security.ubuntu.com/ubuntu jaunty-security main restricted
deb http://security.ubuntu.com/ubuntu jaunty-security  universe
deb-src http://security.ubuntu.com/ubuntu jaunty-security universe
deb http://security.ubuntu.com/ubuntu jaunty-security multiverse
deb-src http://security.ubuntu.com/ubuntu jaunty-security multiverse

El sistema de paquetes utiliza una base de datos para llevar un control de los paquetes instalados, no instalados y cuáles están disponibles para instalar.

Para actualizar la lista se utiliza el comando apt update. Este comando descargará la lista completa de paquetes que contienen las fuentes indicadas en el fichero sources.list.

Si ejecutamos:

 sudo apt update
[sudo] password for usuario: 
Obj:1 http://archive.ubuntu.com/ubuntu bionic InRelease
Des:2 http://archive.ubuntu.com/ubuntu bionic-security InRelease [83,2 kB]
Des:3 http://archive.ubuntu.com/ubuntu bionic-updates InRelease [88,7 kB]
Descargados 172 kB en 2s (108 kB/s)
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias       
Leyendo la información de estado... Hecho
  • Vemos que se conecta a cada uno de los repositorios y se descarga la lista de paquetes disponibles para cada uno de los componentes incluidos en el fichero de fuentes
Es conveniente ejecutar apt update antes de instalar cualquier paquete, para asegurarnos que el software que vamos a instalar coincide con el que realmente está almacenado en la fuente.

Si tenemos la lista de paquetes disponibles actualizada, para instalar un paquete basta escribir:

$ sudo apt install nombre_paquete

Este comando se conectará a la fuente y descargará el paquete, comprobará las dependencias descargando además todos los paquetes necesarios, los descomprimirá e instalará y configurará el software.

Ejemplo:

$ sudo apt-get install tree
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias       
Leyendo la información de estado... Hecho
Se instalarán los siguientes paquetes NUEVOS:
  tree
0 actualizados, 1 se instalarán, 0 para eliminar y 9 no actualizados.
Necesito descargar 30,1kB de archivos.
Se utilizarán 98,3kB de espacio de disco adicional después de esta operación.
Des:1 http://es.archive.ubuntu.com bionic/universe tree 1.5.2.1-1 [30,1kB]
Descargados 30,1kB en 0s (37,7kB/s)
Seleccionando el paquete tree previamente no seleccionado.
(Leyendo la base de datos ... 
184145 ficheros y directorios instalados actualmente.)
Desempaquetando tree (de .../tree_1.5.2.1-1_i386.deb) ...
Procesando disparadores para man-db ...
Configurando tree (1.5.2.1-1) ...

Si sólo queremos que se descargue el paquete y no se instale utilizamos la opción -d:

$ sudo apt -d install n_paquete

El paquete estará disponible en /var/cache/apt/archives

Si vamos a dejar de utilizar un paquete podemos desinstalarlo con:

$ sudo apt remove nombre_paquete

Con el parámetro purge se borrarán también los archivos de configuración de los paquetes que vamos a desinstalar.

Ejemplo:

$ sudo apt purge tree
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias       
Leyendo la información de estado... Hecho
Los siguientes paquetes se ELIMINARÁN:
  tree*
0 actualizados, 0 se instalarán, 1 para eliminar y 9 no actualizados.
Se liberarán 98,3kB después de esta operación.
¿Desea continuar [S/n]? 
(Leyendo la base de datos ...  
184150 ficheros y directorios instalados actualmente.)
Desinstalando tree ...
Procesando disparadores para man-db ...

Para actualizar todos los paquetes a sus versiones más recientes disponibles en las fuentes utilizaremos apt-get con el comando upgrade.

$ sudo apt upgrade

Puede ocurrir que al actualizar con el parámetro upgrade aparezca el siguiente mensaje de error:

The following packages have been kept back:
  • Esto significa que por alguna razón algunos paquetes no han podido ser actualizados y se han conservado sus versiones anteriores debido a cambio de dependencias en el paquete, conflictos entre paquetes…

En ese caso debemos actualizar con dist-upgrade:

$ sudo apt dist-upgrade

Cuando instalamos paquetes con APT, éste descarga los archivos necesarios de la fuente y los deposita en en el directorio /var/cache/apt/archives.

Con el tiempo este directorio puede crecer y ocupar mucho espacio. Para liberar dicho espacio utilizaremos el parámetro clean:

$ sudo apt clean

Para limpiar solamente paquetes que no podrán ser instalados de nuevo porque no están disponibles en los repositorios por haber sido actualizados, se puede usar el comando:

$ sudo apt autoclean

Para eliminar software que ya no es necesario en el sistema

$ sudo apt autoremove

Si para instalar un paquete necesito saber su nombre, podemos utilizar el comando apt con el parámetro search.

Por ejemplo, si quiero instalar algún programa para gestionar el ipod en Ubuntu, tendría que escribir:

$ apt search ipod
kipi-plugins - image manipulation/handling plugins for KIPI aware programs
libgpod-common - archivos comunes para libgpod
libgpod-dev - archivos de desarrollo para libgpod
libgpod-doc - documentación para libgpod
libgpod-nogtk-dev - archivos de desarrollo para libgpod (versión sin soporte de arte)
libgpod4 - biblioteca para leer y escribir canciones y grafismo en un iPod
libgpod4-nogtk - biblioteca para leer y escribir canciones para un iPod
python-gpod - Uniones Python para libgpod
rhythmbox - reproductor y organizador de música para GNOME
rhythmbox-dbg - Símbolos de depuración de rhythmbox
gpixpod - Organize photos on your iPod, freely!
gpodder - A free podcast aggregator written in PyGTK
ical2sqlite - iPod Touch & iPhone Calendar syncing utility
ipod - tool for retrieving informations from iPods
ipod-convenience - iPod Touch & iPhone sync setup
monodoc-ipod-manual - compiled XML documentation for ipod-sharp
mythexport - Export MythTV recording to portable media players
podsleuth - Tool to discover detailed information about Apple iPods
sabnzbdplus-theme-iphone - iphone interface templates for the SABnzbd+ binary newsgrabber
tripod - iPod photo uploader
banshee - Media Management and Playback application
exaile - reproductor de audio, similar a Amarok, pero escrito en GTK+
gnupod-tools - herramientas de consola para la familia iPod de reproductores de música portables
gtkpod - gestione canciones y listas de reproducción en un iPod de Apple
hipo - Herramienta de gestión para el iPod
hpodder - Herramienta para escanear y descargar podcasts (obtenedor de podcasts)
ipodslave - kio-slave para ipods
ipodslave-dev - Archivos de desarrollo para ipodslave kio-slave
libipod-cil - Biblioteca CLI para acceder a iPods
libipoddevice-dev - Biblioteca para conseguir información de iPods
libipoddevice0 - Biblioteca para conseguir información de iPods
libipodui-cil - Biblioteca CLI para acceder a iPods (ayudantes de IGU)
monodoc-banshee-manual - Media Management and Playback application (developer documentation)
gtkpod-aac - gestione canciones y listas de reproducción en un iPod de Apple
evolution-plugins-experimental - experimental plugins for Evolution
  • Vemos que muestra una lista de paquetes y una breve descripción de los mismos.

Para obtener información de un paquete en concreto utilizaremos el parámetro show:

Ejemplo:

$ apt show hipo
Package: hipo
Priority: optional
Section: universe/sound
Installed-Size: 1484
Maintainer: Ubuntu MOTU Developers <ubuntu-motu@lists.ubuntu.com>
Original-Maintainer: Arthur Loiret <arthur.loiret@gmail.com>
Architecture: all
Version: 0.6.1-2ubuntu2
Depends: mono-runtime (>= 1.1.8.1), libglade2.0-cil (>= 2.12.7), libglib2.0-cil (>= 2.12.7), libgnome2.24-cil (>= 2.24.0), libgtk2.0-cil (>= 2.12.7), libmono-corlib2.0-cil (>= 1.2.2.1), libmono-posix2.0-cil (>= 1.0), libmono-system2.0-cil (>= 2.0), libndesk-dbus-glib1.0-cil (>= 0.4.0), libndesk-dbus1.0-cil (>= 0.6.0), libtaglib2.0-cil (>= 2.0.3.0), gnome-icon-theme, podsleuth (>= 0.6.1)
Filename: pool/universe/h/hipo/hipo_0.6.1-2ubuntu2_all.deb
Size: 703046
MD5sum: e9d182261bc8e753eb4938fe4cd6bfce
SHA1: 67d793d659cb0aceb1232ca318f3a43604b14d73
SHA256: 7ddcfed1f030272b0e8d1ec342a58670ac49ef56b32302e83843390d44648fc8
Description-es: Herramienta de gestión para el iPod
 Hipo es una aplicación que le permite gestionar los datos en su iPod,
 Hipo está escrito en C# usando Mono, GTK#, la biblioteca ipod-sharp y
 para editar etiquetas usa taglib-sharp.
 .
 Hipo NO es un software para reproducir música, para eso puede usar
 Banshee, Rhythmbox o Muine.
Homepage: http://www.gnome.org/projects/hipo
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Origin: Ubuntu

Para obtener las dependencias completas usamos la opción depends:

$ apt depends hipo
hipo
  Depende: mono-runtime
  Depende: libglade2.0-cil
  Depende: libglib2.0-cil
  Depende: libgnome2.24-cil
  Depende: libgtk2.0-cil
  Depende: libmono-corlib2.0-cil
  Depende: libmono-posix2.0-cil
  Depende: libmono-system2.0-cil
  Depende: libndesk-dbus-glib1.0-cil
  Depende: libndesk-dbus1.0-cil
  Depende: libtaglib2.0-cil
  Depende: gnome-icon-theme
  Depende: podsleuth