Cargando



Como usar apt-get: Gestor de paquetes en Ubuntu, LinuxMint, Debian

Hablaremos de cómo gestionar nuestros paquetes usando el comando apt-get usado en distribuciones con paquetería deb, cubriremos la mayoría de sus opciones; install, remove, update y search. Además cubriremos un poco su variante apt-cache.


oct 19 2015 20:59
Intermedio
oct 20 2015 09:28

linux-aptget.jpg


¿Qué es apt-get?

El comando apt-get es una herramienta muy poderosa que viene por defecto en distribuciones como Debian, LinuxMint, Ubuntu se encarga de gestionar la librería de paquetes y como tal de instalar, eliminar, actualizar y buscar los paquetes para el sistema operativo desde la línea de comandos.

¿Qué es apt-cache?

Es un derivado de apt-get su principal función es buscar los paquetes que deseamos instalar utilizando el cache luego de actualizar nuestro repositorio. Pero no solo podemos buscar para instalar, podemos verificar que paquetes están instalados o información del paquete como la versión instalada o si existe una actualización disponible. Se incluye al igual que apt-get en muchas distribuciones con paquetería deb.

¿Cómo mostrar la lista de Paquete?


Podemos listar todos los paquetes disponibles para el sistema (Es una lista muy larga).
apt-cache pkgnames
esseract-ocr-epo
pipenightdreams
mumudvb
tbb-examples
libsvm-java
libmrpt-hmtslam0.9
libboost-timer1.50-dev
kcm-touchpad
g++-4.5-multilib
...

¿Cómo filtrar las búsquedas por nombre?


Para buscar un paquete mostrando una descripción breve sin necesidad de instalarlo usamos el comando apt-cache en conjunto con la opción search. Listara todos los paquetes que concuerden con tu búsqueda por ejemplo si queremos instalar un servidor FTP necesitamos el paquete vsftpd.
apt-cache search vsftpd
Pero en caso que solo queramos el nombre sin descripción usamos
apt-cache pkgnames vsftpd

¿Obtener más información del Paquete?


Si queremos obtener más información del paquete como su versión o tamaño en KB usamos
apt-cache show netcat
Package: netcat
Priority: optional
Section: universe/net
Installed-Size: 30
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Ruben Molina <rmolina@udea.edu.co>
Architecture: all
Version: 1.10-40
Depends: netcat-traditional (>= 1.10-39)
Filename: pool/universe/n/netcat/netcat_1.10-40_all.deb
Size: 3340
MD5sum: 37c303f02b260481fa4fc9fb8b2c1004
SHA1: 0371a3950d6967480985aa014fbb6fb898bcea3a
SHA256: eeecb4c93f03f455d2c3f57b0a1e83b54dbeced0918ae563784e86a37bcc16c9
Description-en: TCP/IP swiss army knife -- transitional package
This is a "dummy" package that depends on lenny's default version of
netcat, to ease upgrades. It may be safely removed.
Description-md5: 1353f8c1d079348417c2180319bdde09
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Origin: Ubuntu

Verificar las dependencias necesarias para los Paquetes


En ese caso usamos showpkg y listara todas las dependencias necesarias para que funcione correctamente estén instaladas o no.
apt-cache showpkg vsftpd
Package: vsftpd
Versions:
2.3.5-3ubuntu1 (/var/lib/apt/lists/in.archive.ubuntu.com_ubuntu_dists_quantal_main_binary-i386_Packages)
Description Language:
				 File: /var/lib/apt/lists/in.archive.ubuntu.com_ubuntu_dists_quantal_main_binary-i386_Packages
				  MD5: 81386f72ac91a5ea48f8db0b023f3f9b
Description Language: en
				 File: /var/lib/apt/lists/in.archive.ubuntu.com_ubuntu_dists_quantal_main_i18n_Translation-en
				  MD5: 81386f72ac91a5ea48f8db0b023f3f9b

Reverse Depends:
  ubumirror,vsftpd
  harden-servers,vsftpd
Dependencies:
2.3.5-3ubuntu1 - debconf (18 0.5) debconf-2.0 (0 (null)) upstart-job (0 (null)) libc6 (2 2.15) libcap2 (2 2.10) libpam0g (2 0.99.7.1) libssl1.0.0 (2 1.0.0) libwrap0 (2 7.6-4~) adduser (0 (null)) libpam-modules (0 (null)) netbase (0 (null)) logrotate (0 (null)) ftp-server (0 (null)) ftp-server (0 (null))
Provides:
2.3.5-3ubuntu1 - ftp-server
En La seccion dependencies se listaran en caso de tenerlas nos dira la version de lo contrario dira null.

Verificar estadísticas del Cache


Sabemos que el comando apt-cache depende del cache que tengamos cargado, es útil saber que tenemos en nuestro cache para eso usamos stats.
apt-cache stats
Total package names: 51868 (1,037 k)
Total package structures: 51868 (2,490 k)
  Normal packages: 39505
  Pure virtual packages: 602
  Single virtual packages: 3819
  Mixed virtual packages: 1052
  Missing: 6890
Total distinct versions: 43015 (2,753 k)
Total distinct descriptions: 81048 (1,945 k)
Total dependencies: 252299 (7,064 k)
Total ver/file relations: 45567 (729 k)
Total Desc/File relations: 81048 (1,297 k)
Total Provides mappings: 8228 (165 k)
Total globbed strings: 286 (3,518 )
Total dependency version space: 1,145 k
Total slack space: 62.6 k
Total space accounted for: 13.3 M
Vemos el espacio ocupado y la cantidad de paquetes disponibles filtrados por completos o mixtos.

Actualizar el Sistema de Paquetes


Al usar update sincronizamos nuestra lista de paquetes con los del repositorio oficial asi si una nueva versión de ssh está disponible el podremos actualizarla.
sudo apt-get update
Ign http://security.ubuntu.com quantal-security InRelease					 
Get:1 http://security.ubuntu.com quantal-security Release.gpg [933 B]		 
Get:2 http://security.ubuntu.com quantal-security Release [49.6 kB]		   
Ign http://in.archive.ubuntu.com quantal InRelease							
Ign http://in.archive.ubuntu.com quantal-updates InRelease					
Get:3 http://repo.varnish-cache.org precise InRelease [13.7 kB]			   
Ign http://in.archive.ubuntu.com quantal-backports InRelease				  
Hit http://in.archive.ubuntu.com quantal Release.gpg						  
Get:4 http://security.ubuntu.com quantal-security/main Sources [34.8 kB]	  
Get:5 http://in.archive.ubuntu.com quantal-updates Release.gpg [933 B]   
...

Actualizar el Sistema Operativo con la última versión de los Paquetes.


SI con apt-update actualizamos la lista de paquetes disponibles con apt-get upgrade instalamos todas las actualizaciones que estén disponible al sistema.
apt-get upgrade
Reading package lists... Done
Building dependency tree	  
Reading state information... Done
The following packages have been kept back:
  linux-headers-generic linux-image-generic wine1.5 wine1.5-i386
The following packages will be upgraded:
  activity-log-manager-common activity-log-manager-control-center adium-theme-ubuntu alacarte
  alsa-base app-install-data-partner appmenu-gtk appmenu-gtk3 apport apport-gtk apt
  apt-transport-https apt-utils aptdaemon aptdaemon-data at-spi2-core bamfdaemon base-files bind9-host
   ...

Es recomendable usar los 2 comandos en conjunto actualizamos la lista y los paquetes usando
sudo apt-get update && sudo apt-get upgrade

Actualizar el Sistema e instalar nuevos paquetes de ser necesario.


Cuando usamos upgrade se instala las nuevas versiones de los paquetes y sus dependencias, en algunos casos un paquete que requiera de una nueva dependencia no se instalara, En este caso usamos dist-upgrade para actualizar e instalar nuevas dependencias de ser necesario cuidado con esta opción en un ambiente de producción.
sudo apt-get dist-upgrade

¿Cómo instalar o Actualizar un Paquete en Específico?


Con esto evitamos actualizar todo el sistema y nos ahorramos un poco de ancho de banda por si solo queremos instalar un solo paquete.
sudo apt-get install netcat
Reading package lists... Done
Building dependency tree	  
Reading state information... Done
The following extra packages will be installed:
  netcat-traditional
The following NEW packages will be installed:
  netcat netcat-traditional
0 upgraded, 2 newly installed, 0 to remove and 328 not upgraded.
Need to get 67.1 kB of archives.
After this operation, 186 kB of additional disk space will be used.
Do you want to continue [Y/n]? y
Get:1 http://in.archive.ubuntu.com/ubuntu/ quantal/universe netcat-traditional i386 1.10-40 [63.8 kB]
Get:2 http://in.archive.ubuntu.com/ubuntu/ quantal/universe netcat all 1.10-40 [3,340 B]
Fetched 67.1 kB in 1s (37.5 kB/s)
Selecting previously unselected package netcat-traditional.
(Reading database ... 216118 files and directories currently installed.)
Unpacking netcat-traditional (from .../netcat-traditional_1.10-40_i386.deb) ...
Selecting previously unselected package netcat.
Unpacking netcat (from .../netcat_1.10-40_all.deb) ...
Processing triggers for man-db ...
Setting up netcat-traditional (1.10-40) ...
Setting up netcat (1.10-40) ...

Instalar varios paquetes de manera simultanea


Debemos seguir usando apt-get install pero usando de argumento los paquetes a instalar.
sudo apt-get install nethogs goaccess
Reading package lists... Done
Building dependency tree	  
Reading state information... Done
goaccess is already the newest version.
nethogs is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 328 not upgraded.

Instalar paquetes usando un Wildcard


Usando las expresiones regulares podremos instalar varios paquetes que contengan la misma palabra por ejemplo *ssh* instala cliente, servidor y los añadidos.
sudo apt-get install '*ssh*'

Instalar Paquetes sin Actualizar.


Usando la opción –no-upgrade instalaremos la versión base del paquete pero no su actualización.
sudo apt-get install packageName --no-upgrade
Reading package lists... Done
Building dependency tree	  
Reading state information... Done
Skipping vsftpd, it is already installed and upgrade is not set.
0 upgraded, 0 newly installed, 0 to remove and 328 not upgraded.
Actualizar un Paquete solo si está instalado.
Usamos  –only-upgrade para actualizar un paquete solo si está instalado de lo contrario no lo instala muy útil en scripts.
sudo apt-get install packageName --only-upgrade
Reading package lists... Done
Building dependency tree	  
Reading state information... Done
vsftpd is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 328 not upgraded.

Actualizar un Paquete solo si está instalado.


Usamos –only-upgrade para actualizar un paquete solo si está instalado de lo contrario no lo instala muy útil en scripts.
sudo apt-get install packageName --only-upgrade
Reading package lists... Done
Building dependency tree	  
Reading state information... Done
vsftpd is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 328 not upgraded.

Instalar Versión especifica de un Paquete


Podemos incluso instalar una versión especifica de algún paquete, es una práctica común por ejemplo para java o NGINX.
sudo apt-get install vsftpd=2.3.5-3ubuntu1
Reading package lists... Done
Building dependency tree	  
Reading state information... Done
vsftpd is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 328 not upgraded.

Elimina un Paquete pero sin tocar su configuración


Podemos eliminarlo pero manteniendo todos sus archivos de configuración en caso que necesitemos instalarlo en un futuro.
sudo apt-get remove vsftpd
Reading package lists... Done
Building dependency tree	  
Reading state information... Done
The following packages will be REMOVED:
  vsftpd
0 upgraded, 0 newly installed, 1 to remove and 328 not upgraded.
After this operation, 364 kB disk space will be freed.
Do you want to continue [Y/n]? y
(Reading database ... 216156 files and directories currently installed.)
Removing vsftpd ...
vsftpd stop/waiting
Processing triggers for ureadahead ...
Processing triggers for man-db ...

Eliminar un Paquete Completamente


Para eliminar un paquete con todos sus archivos y dependencias usamos la opción purge.
sudo apt-get purge vsftpd
Reading package lists... Done
Building dependency tree	  
Reading state information... Done
The following packages will be REMOVED:
  vsftpd*
0 upgraded, 0 newly installed, 1 to remove and 328 not upgraded.
After this operation, 0 B of additional disk space will be used.
Do you want to continue [Y/n]? y
(Reading database ... 216107 files and directories currently installed.)
Removing vsftpd ...
Purging configuration files for vsftpd ...
Processing triggers for ureadahead ...
Podemos combinarlo con remove siempre recomienda esta opción para hacer limpiezas.
sudo apt-get remove --purge vsftpd
Reading package lists... Done
Building dependency tree	  
Reading state information... Done
The following packages will be REMOVED:
  vsftpd*
0 upgraded, 0 newly installed, 1 to remove and 328 not upgraded.
After this operation, 364 kB disk space will be freed.
Do you want to continue [Y/n]? y
(Reading database ... 216156 files and directories currently installed.)
Removing vsftpd ...
vsftpd stop/waiting
Purging configuration files for vsftpd ...
Processing triggers for ureadahead ...
Processing triggers for man-db ...

Limpiar el gestor el paquete para liberar espacio en disco


Cuando descargamos un paquete el archivo .deb queda almacenado como cache podemos eliminar todos esos paquetes con la opción clean.
sudo apt-get clean

¿Cómo descargar el Source Code de un Paquete?


En algunos casos no podemos instalar desde el deb y necesitamos instalarlo compilando directamente podemos hacerlo usando –download-only source
sudo apt-get --download-only source vsftpd
Reading package lists... Done
Building dependency tree	  
Reading state information... Done
Need to get 220 kB of source archives.
Get:1 http://in.archive.ubuntu.com/ubuntu/ quantal/main vsftpd 2.3.5-3ubuntu1 (dsc) [1,883 B]
Get:2 http://in.archive.ubuntu.com/ubuntu/ quantal/main vsftpd 2.3.5-3ubuntu1 (tar) [188 kB]
Get:3 http://in.archive.ubuntu.com/ubuntu/ quantal/main vsftpd 2.3.5-3ubuntu1 (diff) [30.5 kB]
Fetched 220 kB in 4s (49.1 kB/s)
Download complete and in download only mode
En caso de querer descargar y compilar desde el mismo apt-get usamos
sudo apt-get --compile source goaccess
Reading package lists... Done
Building dependency tree	  
Reading state information... Done
Need to get 130 kB of source archives.
Get:1 http://in.archive.ubuntu.com/ubuntu/ quantal/universe goaccess 1:0.5-1 (dsc) [1,120 B]
Get:2 http://in.archive.ubuntu.com/ubuntu/ quantal/universe goaccess 1:0.5-1 (tar) [127 kB]
Get:3 http://in.archive.ubuntu.com/ubuntu/ quantal/universe goaccess 1:0.5-1 (diff) [2,075 B]
Fetched 130 kB in 1s (68.0 kB/s)
gpgv: Signature made Tuesday 26 June 2012 09:38:24 AM IST using DSA key ID A9FD4821
gpgv: Can't check signature: public key not found
dpkg-source: warning: failed to verify signature on ./goaccess_0.5-1.dsc
dpkg-source: info: extracting goaccess in goaccess-0.5
dpkg-source: info: unpacking goaccess_0.5.orig.tar.gz
dpkg-source: info: unpacking goaccess_0.5-1.debian.tar.gz
dpkg-buildpackage: source package goaccess
dpkg-buildpackage: source version 1:0.5-1
dpkg-buildpackage: source changed by Chris Taylor <ctaylor@debian.org>
dpkg-buildpackage: host architecture i386
dpkg-source --before-build goaccess-0.5
dpkg-checkbuilddeps: Unmet build dependencies: debhelper (>= 9) autotools-dev libncurses5-dev libglib2.0-dev libgeoip-dev autoconf
dpkg-buildpackage: warning: build dependencies/conflicts unsatisfied; aborting
dpkg-buildpackage: warning: (Use -d flag to override.)
...

¿Cómo puedo descargar un Paquete sin instalarlo?


Muchas veces queremos armar un REPO local para distribuirlos a otros clientes de manera local y ahorrar ancho de banda esta opción es muy útil.
sudo apt-get download nethogs
Get:1 Downloading nethogs 0.8.0-1 [27.1 kB]
Fetched 27.1 kB in 3s (7,506 B/s)

¿Como Verificar Dependencias Rotas?


Este comando es muy si necesitamos compilar pero nos faltan las librerías con esto podremos verificar e instalar las faltantes.
sudo apt-get check
Reading package lists... Done
Building dependency tree	  
Reading state information... Done
Conclusiones

Hemos hablado de las opciones más útiles con apt-get y apt-cache faltan algunas que pueden verse usando man apt-get, man apt-cache. No es necesario aprenderlos de memoria pero es bueno tener esta lista a la mano. Si dejo algún comando por fuera o tienes una sugerencia no dudes en dejarla en los comentarios.

¿Te ayudó este Tutorial?


2 Comentarios

Ya la he dejado en favoritos, has puesto las opciones de apt-get que son mas esenciales y mas usados entre los de sistemas. gracias como siempre Jonathan.

Otro que lo guarda a favoritos

No esperes más y entra en Solvetic
Deja tus comentarios y aprovecha las ventajas de la cuenta de usuario ¡Únete!

X