सवाल Apt-get का उपयोग कर एक पैकेज को अपग्रेड कैसे करें?


मैं एक पैकेज कैसे अपडेट करूं? जहाँ तक man apt-get कहते हैं apt-get upgrade पैरामीटर के रूप में संकुल / पैकेज की सूची नहीं लेता है:

उन्नयन

अपग्रेड का उपयोग सभी पैकेजों के नवीनतम संस्करणों को स्थापित करने के लिए किया जाता है   वर्तमान में स्रोतों से सिस्टम पर स्थापित किया गया है    /etc/apt/sources.list। वर्तमान में नए पैकेज स्थापित हैं   उपलब्ध संस्करणों को पुनर्प्राप्त और उन्नत किया गया है; किसी भी परिस्थिति में नहीं   वर्तमान में संकुल हटाए गए पैकेज हैं, या संकुल पहले से नहीं हैं   स्थापित और स्थापित स्थापित। वर्तमान में स्थापित के नए संस्करण   संकुल जिन्हें अधिष्ठापन स्थिति को बदले बिना अपग्रेड नहीं किया जा सकता है   एक और पैकेज का उनके वर्तमान संस्करण में छोड़ा जाएगा। ताज़ा जानकारी   पहले प्रदर्शन किया जाना चाहिए ताकि apt-get जानता है कि नए संस्करण   पैकेज उपलब्ध हैं।


715
2018-05-20 16:36


मूल




जवाब:


आपको बस करने की ज़रूरत है apt-get install --only-upgrade <packagename>। यह केवल एक ही पैकेज को अपग्रेड करेगा, और केवल तभी स्थापित होगा।

यदि आप पैकेज स्थापित करना चाहते हैं, यदि यह अस्तित्व में नहीं है, या इसे अपग्रेड करते हैं, तो आप बाहर निकल सकते हैं --only-upgrade


903
2018-05-20 16:41



@Raphink: अपग्रेड के बारे में आपकी टिप्पणी सही है, लेकिन इंस्टॉल को एक पैकेज को अपग्रेड करने के बराबर माना जाता है; install is followed **by one** or more packages desired for installation or upgrading , यदि आपके पास बेहतर उत्तर है, तो आप सवाल का जवाब दे सकते हैं। यह बहुत अच्छा होगा। - Binarylife
apt-get install --only-upgrade <packagename> कोई नया पैकेज स्थापित नहीं करेगा - taneli
होगा install यदि आवश्यक हो तो कमांड को उस एकल पैकेज की निर्भरता भी अपग्रेड करें? - Pino
@Pino यह होगा, ऐसा करने के लिए समझ में आता है। क्या होगा यदि आप जिस संस्करण को अपग्रेड कर रहे हैं वह दूसरे पैकेज के नए संस्करण पर निर्भर करता है? यदि आप दोनों को अपग्रेड नहीं करते हैं तो आप को रोक दिया जाता है। इसलिए installइसके लिए सही आदेश है, भले ही यह काउंटर-अंतर्ज्ञानी लगता है। - Matt Dodge
क्या यह "ऑटो" चिह्न को हटा देता है? कभी-कभी जब आप पुस्तकालयों को स्थापित करते हैं तो विशेष रूप से पैकेज मैन्युअल रूप से स्थापित के रूप में चिह्नित किया जाता है। मुझे इस कारण से पुस्तकालयों पर 'इंस्टॉल' चलाने की इच्छा नहीं है। - isaaclw


सीएलआई का उपयोग कर एक पैकेज को अपडेट करने के लिए:

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

उदाहरण के लिए, 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



मुझे इस आदेश के साथ एक त्रुटि मिलती है: E: Sense only is not understood, try true or false. - Michael
उन लोगों के लिए जो पिछले टिप्पणीकार की त्रुटि का सामना करते हैं नीचे मेरा जवाब। - golem
डाउनवॉटेड क्योंकि यह पिछले उत्तरों से नई जानकारी नहीं जोड़ता है - gokul_uf
आपको पास करना चाहिए --only-upgrade सेवा मेरे install उपमहाद्वीप, सीधे नहीं apt-get, तो आपको जोड़ना नहीं होगा true। - Ruslan


मेरे बारे में सोचने के दो संभावित तरीके हैं:

  1. sudo apt-get install nameofpackage

    यह पहले से स्थापित होने पर भी पैकेज को अपग्रेड करेगा:

    ~$ 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. का उपयोग करते हुएSynaptic Package Manager: अपग्रेड के लिए → राइट क्लिक करें:

    enter image description here

    ध्यान दें: कभी-कभी यह अतिरिक्त पैकेज या निर्भरताओं के लिए पूछ सकता है, यह सामान्य है।


48
2018-05-20 16:39



हाँ, यह चाहिए, और sudo apt-get install whatever खुद को अपग्रेड करना चाहिए। - Binarylife
upgrade पैकेज तर्क नहीं लेता है। - ℝaphink
ठीक है, धन्यवाद, यह सभी संकुलों को अपग्रेड करता है। - Binarylife


उबंटू 12.04 एलटीएस पर मेरे अनुभव में, नीचे दिए गए आदेश का उपयोग करके एक अलग पीपीए का उपयोग करते हुए पैकेज को अपग्रेड नहीं किया जाएगा -

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

इसी तरह, मैं अपग्रेड कमांड नहीं चलाऊंगा, जो मेरे सर्वर पर सभी संकुल को अपग्रेड करेगा -

sudo apt-get dist-upgrade

उदाहरण के लिए, मेरे पास PHP 5.3 स्थापित है और मैंने अपने apt.sources का उपयोग कर ऑनड्रेस पीपीए जोड़ा है -

sudo add-apt-repository ppa:ondrej/php5

अगर मैं दौड़ता हूं

sudo apt-get install php5

यह सिर्फ PHP 5.3 को पुनर्स्थापित करेगा।

मुझे पहले, उपयोग करने के लिए अपग्रेड करने के लिए संस्करण संख्या निर्धारित करना है

sudo apt-cache policy php5

यह सभी उपलब्ध संस्करण संख्याओं की सूची देगा। आपको वह संस्करण संख्या मिलनी चाहिए जिसे आप अपग्रेड करना चाहते हैं, और उसके बाद उस संदर्भ को पूर्ण स्ट्रिंग की प्रतिलिपि बनाएँ। उदाहरण के लिए, उबंटू पर PHP 5.5 के लिए स्ट्रिंग "5.5.16 + dfsg-1 + deb.sury.org ~ सटीक + 2" है।

अब, आप विशिष्ट संस्करण संख्या, और voila के साथ apt-get install कमांड चला सकते हैं!

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

मैंने केवल यह जोड़ा क्योंकि मैं कहीं और इस जानकारी को खोजने में असमर्थ था!


22
2017-09-18 16:14





उबंटू 9.04 जौन्टी पर,

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

पैदावार:

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

आदेश

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

मेरे मामले में काम किया।


15
2018-04-13 18:21



आपको पास करना चाहिए --only-upgrade सेवा मेरे install उपमहाद्वीप, सीधे नहीं apt-get, तो आपको जोड़ना नहीं होगा true। - Ruslan


कमांड लाइन समाधान के लिए जो पैकेज को संस्थापित नहीं करता है यदि यह पहले से मौजूद नहीं है:

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

इसे आसानी से एक स्क्रिप्ट में बनाया जा सकता है, उदाहरण:

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