¿Cómo actualizar un solo paquete usando apt-get?

¿Cómo actualizo un solo paquete? En la medida en que man apt-get decir apt-get upgrade no toma un paquete / lista de paquetes como parámetro:

actualización

la actualización se utiliza para instalar las versiones más recientes de todos los paquetes instalados actualmente en el sistema desde las fuentes enumeradas en /etc/apt/sources.list. Los paquetes instalados actualmente con nuevas versiones disponibles se recuperan y actualizan; bajo ninguna circunstancia se eliminan los paquetes instalados actualmente, o se recuperan e instalan los paquetes que no están ya instalados. Las nuevas versiones de los paquetes instalados actualmente que no se pueden actualizar sin cambiar el estado de instalación de otro paquete se dejarán en su versión actual. Primero se debe realizar una actualización para que apt-get sepa que hay nuevas versiones de paquetes disponibles.

Solo tienes que hacer apt-get install --only-upgrade <packagename>. Esto actualizará solo ese paquete, y solo si está instalado.

Si desea instalar el paquete si no existe, o actualizarlo si lo hace, puede omitir --only-upgrade.

Para actualizar un solo paquete mediante la CLI:

sudo apt-get install --only-upgrade <packagename>

p. ej., sudo apt-get install --only-upgrade ack

Reading package lists... DoneBuilding dependency tree       Reading state information... DoneSkipping **ack**, it is not installed and only upgrades are requested.0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

Hay dos formas posibles en las que puedo pensar:

  1. sudo apt-get install nameofpackage

    Esto actualizará el paquete incluso si ya está instalado:

    ~$ sudo apt-get install emeseneReading package lists... DoneBuilding dependency tree       Reading state information... DoneThe following packages will be upgraded:  emesene1 upgraded, 0 newly installed, 0 to remove and 5 not upgraded.Need to get 1,486 kB of archives.After this operation, 696 kB disk space will be freed.Get:1 http://il.archive.ubuntu.com/ubuntu/ natty-updates/universe emesene all 2.11.4+dfsg-0ubuntu1 [1,486 kB]
  2. UtilizarSynaptic Package Manager: Haga clic con el botón derecho→Marcar para actualizar:

    Nota: A veces puede pedir paquetes o dependencias adicionales, es normal.

En mi experiencia en Ubuntu 12.04 LTS, usar el siguiente comando no actualizará el paquete si usa un PPA separado -

sudo apt-get --only-upgrade install <packagename>

De manera similar, no quería ejecutar el comando de actualización, que actualizaría todos los paquetes en mi servidor -

sudo apt-get dist-upgrade

Por ejemplo, tengo PHP 5.3 instalado y he agregado el PPA de ondrej a mi apt.fuentes que utilizan -

sudo add-apt-repository ppa:ondrej/php5

Si corro

sudo apt-get install php5

simplemente reinstalará PHP 5.3.

Primero, tengo que determinar el número de versión al que actualizar, usando

sudo apt-cache policy php5

Esto mostrará una lista de todos los números de versión disponibles. Debe encontrar el número de versión al que desea actualizar y luego copiar toda la cadena que hace referencia a él. Por ejemplo, la cadena para PHP 5.5 en Ubuntu es "5.5.16 + dfsg-1+deb.sury.org - "+2".

Ahora, puede ejecutar el comando apt-get install con el número de versión específico, y listo.

sudo apt-get install php5=5.5.16+dfsg-1+deb.sury.org~precise+2

Solo agregué esto porque no pude encontrar esta información en ningún otro lugar.

En Ubuntu 9.04 Jaunty,

apt-get --only-upgrade install <package>

rendimiento:

E: Sense only is not understood, try true or false.

Comando

apt-get --only-upgrade true install <package>

funcionó en mi caso.

Para una solución de línea de comandos que no instala el paquete si aún no existe:

dpkg -s <package> 2>/dev/null | grep -q Status.*installed && sudo apt-get install <package>

Esto se puede convertir fácilmente en un script, p. ej.:

upgrade-package.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

Para actualizar un solo paquete en Ubuntu 18.04 LTS:

sudo apt update && sudo apt install --only-upgrade <packagename>

Para actualizar varios paquetes:

sudo apt update && sudo apt install --only-upgrade <package1> <package2> <package3>