Vraag Hoe een enkel pakket upgraden met apt-get?


Hoe kan ik een enkel pakket bijwerken? Voor zover man apt-get zegt apt-get upgrade neemt geen pakket / lijst met pakketten als parameter:

upgrade

upgrade wordt gebruikt om de nieuwste versies van alle pakketten te installeren   momenteel geïnstalleerd op het systeem van de bronnen die zijn opgesomd in    /etc/apt/sources.list. Pakketten die momenteel met nieuw zijn geïnstalleerd   beschikbare versies worden opgehaald en geüpgraded; in geen geval   zijn momenteel geïnstalleerde pakketten verwijderd of pakketten nog niet   geïnstalleerd opgehaald en geïnstalleerd. Nieuwe versies van momenteel geïnstalleerd   pakketten die niet kunnen worden bijgewerkt zonder de installatiestatus te wijzigen   van een ander pakket zal worden overgelaten aan hun huidige versie. Een update   moet eerst worden uitgevoerd, zodat apt-get weet dat nieuwe versies van   pakketten zijn beschikbaar.


714
2018-05-20 16:36


oorsprong




antwoorden:


Je moet het gewoon doen apt-get install --only-upgrade <packagename>. Hiermee wordt alleen dat ene pakket geüpgraded en alleen als het is geïnstalleerd.

Als u het pakket wilt installeren als het niet bestaat, of u kunt het upgraden als dit het geval is, kunt u het weglaten --only-upgrade.


901
2018-05-20 16:41



@Raphink: uw opmerking over de upgrade klopt, maar installeren wordt beschouwd als een equivalent voor het upgraden van één pakket; install is followed **by one** or more packages desired for installation or upgrading , Als u een beter antwoord heeft, kunt u de vraag beantwoorden. Het zou geweldig zijn. - Binarylife
apt-get install --only-upgrade <packagename> zal geen nieuwe pakketten installeren - taneli
Zal de install commando-upgrade ook de afhankelijkheden van dat ene pakket indien nodig? - Pino
@Pino Het zal, het is logisch om dit te doen. Wat als de versie waarnaar u een upgrade uitvoert, afhankelijk is van een nieuwere versie van een ander pakket? Je bent afgespannen als je beide niet upgradet. Dit is waarom installis de juiste opdracht hiervoor, ook al lijkt het contra-intuïtief. - Matt Dodge
Verwijdert dit de markering "auto"? Soms wanneer u bibliotheken specifiek installeert, wordt het pakket gemarkeerd als handmatig geïnstalleerd. Ik vind het om deze reden niet leuk om 'installaties' in bibliotheken uit te voeren. - isaaclw


Om een ​​enkel pakket bij te werken met behulp van de CLI:

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

b.v. 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



Ik krijg een foutmelding met deze opdracht: E: Sense only is not understood, try true or false. - Michael
Voor degenen die de fout van de vorige commentator tegenkomen, zie mijn antwoord hieronder. - golem
downvoted omdat het geen nieuwe informatie uit eerdere antwoorden heeft toegevoegd - gokul_uf
Je zou moeten passen --only-upgrade naar install subopdracht, niet rechtstreeks naar apt-get, dan hoef je niet toe te voegen true. - Ruslan


Er zijn twee mogelijke manieren om te bedenken:

  1. sudo apt-get install nameofpackage

    Hiermee wordt het pakket geüpgraded, zelfs als dit al is geïnstalleerd:

    ~$ 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. Gebruik makend vanSynaptic Package Manager: Klik met de rechtermuisknop → Markeren voor upgrade:

    enter image description here

    Notitie: Soms vraagt ​​het om extra pakketten of afhankelijkheden, het is normaal.


48
2018-05-20 16:39



Ja, het zou moeten, en sudo apt-get install whatever moet zelf upgraden. - Binarylife
upgrade neemt geen pakketargument. - ℝaphink
Goed, bedankt, het upgradet alle pakketten. - Binarylife


In mijn ervaring met Ubuntu 12.04 LTS, zal het gebruik van de onderstaande opdracht het pakket niet upgraden bij gebruik van een afzonderlijke PPA -

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

Op dezelfde manier wilde ik de upgradeopdracht niet uitvoeren, die alle pakketten op mijn server zou upgraden -

sudo apt-get dist-upgrade

Ik heb bijvoorbeeld PHP 5.3 geïnstalleerd en de ondrej PPA aan mijn apt.sources toegevoegd met behulp van -

sudo add-apt-repository ppa:ondrej/php5

Als ik ren

sudo apt-get install php5

het zal PHP 5.3 gewoon opnieuw installeren.

Ik moet eerst bepalen met welk versienummer ik moet upgraden, met

sudo apt-cache policy php5

Dit zal alle beschikbare versienummers vermelden. U moet het versienummer vinden waarnaar u wilt upgraden en vervolgens de hele tekenreeks kopiëren waarnaar wordt verwezen. De reeks voor PHP 5.5 op Ubuntu is bijvoorbeeld "5.5.16 + dfsg-1 + deb.sury.org ~ precise + 2".

Nu kunt u de opdracht apt-get install uitvoeren met het specifieke versienummer en voila!

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

Ik heb dit alleen toegevoegd omdat ik deze informatie nergens anders kon vinden!


22
2017-09-18 16:14





Op Ubuntu 9.04 Jaunty,

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

opbrengsten:

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

Het bevel

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

werkte in mijn geval.


15
2018-04-13 18:21



Je zou moeten passen --only-upgrade naar install subopdracht, niet rechtstreeks naar apt-get, dan hoef je niet toe te voegen true. - Ruslan


Voor een opdrachtregeloplossing die het pakket niet installeert als dit nog niet bestaat:

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

Dit kan gemakkelijk worden omgezet in een script, bijvoorbeeld:

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