¿Cómo puedo actualizar un solo paquete? Por lo que dice man apt-get
apt-get upgrade
no toma un paquete/lista de paquetes como parámetro:
upgrade
upgrade se utiliza para instalar las versiones más nuevas de todos los paquetes actualmente instalados en el sistema desde las fuentes enumeradas en
/etc/apt/sources.list
. Los paquetes actualmente instalados con nuevas versiones disponibles son recuperados y actualizados; bajo ninguna circunstancia se eliminan los paquetes actualmente instalados, o se recuperan los paquetes que aún no están instalados se recuperan e instalan. Las nuevas versiones de los paquetes actualmente instalados que no pueden actualizarse sin cambiar el estado de instalación de otro paquete se dejarán en su versión actual. Una actualización debe realizarse primero para que apt-get sepa que las nuevas versiones de los paquetes están disponibles.
Sólo tiene que hacer apt-get install --only-upgrade <nombredelpaquete>
. Esto actualizará sólo ese único paquete, y sólo si está instalado.
Si desea instalar el paquete si no existe, o actualizarlo si existe, puede omitir --only-upgrade
.
Se me ocurren dos formas posibles:
sudo apt-get install nombredelpaquete
Esto actualizará el paquete incluso si ya está instalado:
~$ sudo apt-get install emesene
Leyendo las listas de paquetes... Hecho
Construyendo el árbol de dependencias
Leyendo información de estado... Hecho
Se actualizarán los siguientes paquetes:
emesene
1 actualizado, 0 nuevos instalados, 0 para eliminar y 5 no actualizados.
Se necesitan 1.486 kB de archivos.
Tras esta operación, se liberarán 696 kB de espacio en disco.
Get:1 http://il.archive.ubuntu.com/ubuntu/ natty-updates/universe emesene all 2.11.4+dfsg-0ubuntu1 [1,486 kB]
Synaptic Package Manager
: Click derecho→Mark for upgrade:Nota: A veces puede pedir paquetes adicionales o dependencias, es normal.
Para una solución de línea de comandos que no instala el paquete si no existe ya:
dpkg -s <package> 2>/dev/null | grep -q Status.*installed && sudo apt-get install <package>
Esto se puede convertir fácilmente en un script, por ejemplo
actualizar-paquete.sh:
#!/bin/bash
[[ -z $1 ]] && { echo "Usage: $(basename $0) package"; exit 1; }
if dpkg -s "$1" 2>/dev/null | grep -q Status.*installed; then
echo "Attempting to upgrade $1"
sudo apt-get install "$1"
else
echo "Package $1 is not installed"
fi