Frage Wie aktualisiert man ein einzelnes Paket mit apt-get?


Wie aktualisiere ich ein einzelnes Paket? So weit wie man apt-get sagt apt-get upgrade nimmt kein Paket / eine Liste von Paketen als Parameter an:

Aktualisierung

Mit dem Upgrade werden die neuesten Versionen aller Pakete installiert   Derzeit installiert auf dem System von den Quellen in aufgeführt    /etc/apt/sources.list. Aktuell installierte Pakete mit neuen   verfügbare Versionen werden abgerufen und aktualisiert; auf keinen Fall   sind derzeit installierte Pakete entfernt, oder Pakete nicht bereits   installiert, abgerufen und installiert. Neue Versionen von derzeit installiert   Pakete, die nicht aktualisiert werden können, ohne den Installationsstatus zu ändern   eines anderen Pakets werden in ihrer aktuellen Version belassen. Ein Update   muss zuerst ausgeführt werden, damit apt-get die neuen Versionen von   Pakete sind verfügbar.


714
2018-05-20 16:36


Ursprung




Antworten:


Du musst es nur tun apt-get install --only-upgrade <packagename>. Dadurch wird nur dieses einzelne Paket aktualisiert, und nur wenn es installiert ist.

Wenn Sie das Paket installieren möchten, wenn es nicht vorhanden ist, oder wenn Sie es aktualisieren möchten, können Sie es auslassen --only-upgrade.


901
2018-05-20 16:41



@Raphink: Ihr Kommentar zu dem Upgrade ist richtig, aber die Installation wird als gleichwertig mit dem Upgrade eines Pakets betrachtet; install is followed **by one** or more packages desired for installation or upgrading Wenn Sie eine bessere Antwort haben, können Sie die Frage beantworten. Es wäre großartig. - Binarylife
apt-get install --only-upgrade <packagename> wird keine neuen Pakete installieren - taneli
Werden die install Befehl upgrade auch die Abhängigkeiten des einzelnen Pakets bei Bedarf? - Pino
@ Pino Es wird, macht es Sinn, dies zu tun. Was ist, wenn die Version, auf die Sie aktualisieren, von einer neueren Version eines anderen Pakets abhängt? Sie werden abgespritzt, wenn Sie beide nicht aktualisieren. Deshalb installist dafür das richtige Kommando, auch wenn es nicht intuitiv scheint. - Matt Dodge
Entfernt das die "Auto" -Markierung? Wenn Sie Bibliotheken speziell installieren, wird das Paket manchmal als manuell installiert markiert. Aus diesem Grund laufe ich nicht gerne 'install' auf Bibliotheken. - isaaclw


Um ein einzelnes Paket mithilfe der CLI zu aktualisieren:

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

z.B., sudo apt-get install --only-upgrade ack

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

116
2017-10-15 11:22



Ich bekomme einen Fehler mit diesem Befehl: E: Sense only is not understood, try true or false. - Michael
Für diejenigen, die auf den Fehler des vorherigen Kommentators stoßen meine Antwort unten. - golem
downvoted, da neue Informationen aus früheren Antworten nicht hinzugefügt wurden - gokul_uf
Du solltest passen --only-upgrade zu install Unterbefehl, nicht direkt an apt-get, dann musst du nicht anhängen true. - Ruslan


Es gibt zwei Möglichkeiten, die ich mir vorstellen kann:

  1. sudo apt-get install nameofpackage

    Dadurch wird das Paket aktualisiert, auch wenn es bereits installiert ist:

    ~$ sudo apt-get install emesene
    Reading package lists... Done
    Building dependency tree       
    Reading state information... Done
    The following packages will be upgraded:
      emesene
    1 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. VerwendenSynaptic Package Manager: Rechtsklick → Für Upgrade markieren:

    enter image description here

    Hinweis: Manchmal fragt es nach zusätzlichen Paketen oder Abhängigkeiten, das ist normal.


48
2018-05-20 16:39



Ja, sollte es, und sudo apt-get install whatever sollte selbst aktualisieren. - Binarylife
upgrade nimmt kein Paketargument. - ℝaphink
Richtig, danke, es aktualisiert alle Pakete. - Binarylife


Nach meiner Erfahrung mit Ubuntu 12.04 LTS wird das Paket bei Verwendung des folgenden Befehls nicht aktualisiert, wenn ein separates PPA verwendet wird.

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

Gleichermaßen wollte ich den Upgrade-Befehl nicht ausführen, der alle Pakete auf meinem Server aktualisieren würde -

sudo apt-get dist-upgrade

Zum Beispiel habe ich PHP 5.3 installiert und habe den ondrej PPA zu meinen apt.sources hinzugefügt mit -

sudo add-apt-repository ppa:ondrej/php5

Wenn ich renne

sudo apt-get install php5

Es wird nur PHP 5.3 neu installieren.

Ich muss zuerst die Versionsnummer bestimmen, auf die ich aktualisieren möchte

sudo apt-cache policy php5

Dadurch werden alle verfügbaren Versionsnummern aufgelistet. Sie sollten die Versionsnummer finden, auf die Sie aktualisieren möchten, und dann die gesamte Zeichenfolge kopieren, die darauf verweist. Zum Beispiel ist die Zeichenfolge für PHP 5.5 auf Ubuntu "5.5.16 + dfsg-1 + deb.sury.org ~ precise + 2".

Jetzt können Sie den Befehl apt-get install mit der spezifischen Versionsnummer ausführen und voila!

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

Ich habe das nur hinzugefügt, weil ich diese Informationen nirgendwo sonst finden konnte!


22
2017-09-18 16:14





Auf Ubuntu 9.04 Jaunty,

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

Erträge:

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

Der Befehl

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

arbeitete in meinem Fall.


15
2018-04-13 18:21



Du solltest passen --only-upgrade zu install Unterbefehl, nicht direkt an apt-get, dann musst du nicht anhängen true. - Ruslan


Für eine Befehlszeilenlösung, die das Paket nicht installiert, wenn es nicht bereits vorhanden ist:

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

Dies kann leicht zu einem Skript gemacht werden, z.B.

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

9
2018-05-22 07:58