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


826

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

उन्नयन

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

जवाबों:


1026

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

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


88
apt-get install --only-upgrade <packagename>किसी भी नए पैकेज को स्थापित नहीं करेंगे
taneli

9
installयदि आवश्यक हो तो क्या कमांड उस एकल पैकेज की निर्भरता को भी अपग्रेड करेगा ?
पीनो

7
@ यह होगा, यह ऐसा करने के लिए समझ में आता है। क्या होगा यदि आप जिस संस्करण को अपग्रेड कर रहे हैं वह दूसरे पैकेज के नए संस्करण पर निर्भर करता है? यदि आप दोनों को अपग्रेड नहीं करते हैं तो आप ठीक हो गए हैं। यही कारण है कि installइसके लिए सही आदेश है, भले ही यह काउंटर-सहज ज्ञान युक्त लगता है।
मैट डॉज

6
क्या यह "ऑटो" चिह्न को हटाता है? कभी-कभी जब आप पुस्तकालयों को स्थापित करते हैं विशेष रूप से पैकेज को मैन्युअल रूप से स्थापित के रूप में चिह्नित किया जाता है। मुझे इस कारण पुस्तकालयों पर 'इंस्टॉल' चलाना पसंद नहीं है।
isaaclw

3
मैंने अभी-अभी परीक्षण किया है, क्योंकि सभी जानकारी बहुत अस्पष्ट है; उबंटू 16.04 ( apt 1.0.1) पर, पैकेज का उपयोग करके अपग्रेड apt installकरना autoनिशान को प्रभावित नहीं करता है , चाहे --only-upgradeआपूर्ति की जाए या नहीं। --only-upgradeयदि आप गलती से कुछ नया स्थापित नहीं करना चाहते हैं, तो बेशक इसका उपयोग करना समझ में आता है। यह किसी भी आवश्यक निर्भरता को अपग्रेड करेगा ।
ड्यूअल

129

CLI का उपयोग करके एकल पैकेज को अद्यतन करने के लिए:

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.

11
मुझे इस कमांड के साथ एक त्रुटि मिलती है:E: Sense only is not understood, try true or false.
माइकल

1
पिछले टिप्पणीकार की त्रुटि का सामना करने वालों के लिए नीचे मेरा उत्तर देखें
गोलेम

3
डाउनवोट किया गया क्योंकि इसने पिछले उत्तरों से नई जानकारी नहीं
जोड़ी थी

1
आप पास करना चाहिए --only-upgradeकरने के लिए installsubcommand, के लिए नहीं सीधे apt-get, तो आप संलग्न करने के लिए नहीं करेंगे true
रुस्लान

55

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

  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: राइट क्लिक → उन्नयन के लिए निशान :

    यहां छवि विवरण दर्ज करें

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


1
हाँ, यह होना चाहिए, और sudo apt-get install whateverखुद ही अपग्रेड करना चाहिए।
बाइनरीलाइफ

4
upgradeपैकेज तर्क नहीं लेता है।
ℝएफ़िंक

25

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

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

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

sudo apt-get dist-upgrade

उदाहरण के लिए, मेरे पास PHP 5.3 स्थापित है और मेरे apt.source का उपयोग करके ondrej PPA को जोड़ा है -

sudo add-apt-repository ppa:ondrej/php5

अगर मैं चला

sudo apt-get install php5

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

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

sudo apt-cache policy php5

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

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

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

मैंने इसे केवल इसलिए जोड़ा क्योंकि मुझे यह जानकारी कहीं और नहीं मिली!


16

उबंटू 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>

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


4
आप पास करना चाहिए --only-upgradeकरने के लिए installsubcommand, के लिए नहीं सीधे apt-get, तो आप संलग्न करने के लिए नहीं करेंगे true
रुस्लान

10

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

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
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.