كيفية ترقية حزمة واحدة باستخدام الرابطة بين الحصول على?

كيف يمكنني تحديث حزمة واحدة? بقدر ما man apt-get يقول apt-get upgrade لا يأخذ حزمة / قائمة الحزم كمعلمة:

ترقية

يتم استخدام الترقية لتثبيت أحدث الإصدارات من كافة الحزم المثبتة حاليا على النظام من المصادر المذكورة في /etc/apt/sources.list. الحزم المثبتة حاليا مع الإصدارات الجديدة المتاحة يتم استرجاعها وترقيتها ؛ تحت أي ظرف من الظروف يتم حاليا إزالة الحزم المثبتة ، أو الحزم غير المثبتة بالفعل تم استرجاعها وتثبيتها. سيتم ترك الإصدارات الجديدة من الحزم المثبتة حاليا والتي لا يمكن ترقيتها دون تغيير حالة التثبيت لحزمة أخرى في الإصدار الحالي. يجب إجراء التحديث أولا حتى تعرف الرابطة بين الحصول على أن الإصدارات الجديدة من الحزم متوفرة.

تحتاج فقط إلى القيام به apt-get install --only-upgrade <packagename>. سيؤدي هذا إلى ترقية تلك الحزمة الفردية فقط ، وفقط إذا تم تثبيتها.

إذا كنت ترغب في تثبيت الحزمة إذا لم تكن موجودة، أو ترقيتها إذا كانت موجودة، فيمكنك تركها --only-upgrade.

من أجل تحديث حزمة واحدة باستخدام كلي:

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

على سبيل المثال., 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.

هناك طريقتان ممكنتان يمكنني التفكير فيهما:

  1. sudo apt-get install nameofpackage

    سيؤدي هذا إلى ترقية الحزمة حتى إذا كانت مثبتة بالفعل:

    ~$ 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. باستخدامSynaptic Package Manager: انقر بزر الماوس الأيمن-علامة للترقية:

    ملاحظة: في بعض الأحيان قد يطلب حزم إضافية أو تبعيات ، فمن الطبيعي.

في تجربتي على أوبونتو 12.04 لتس ، وذلك باستخدام الأمر أدناه لن ترقية الحزمة في حالة استخدام ببا منفصلة -

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

وبالمثل ، لم أكن أرغب في تشغيل أمر الترقية ، والذي من شأنه ترقية جميع الحزم على الخادم الخاص بي -

sudo apt-get dist-upgrade

على سبيل المثال ، لدي فب 5.3 تثبيت وإضافة أوندريج ببا إلى بلدي شقة.المصادر التي تستخدم -

sudo add-apt-repository ppa:ondrej/php5

إذا ركضت

sudo apt-get install php5

وسوف مجرد إعادة تثبيت فب 5.3.

لا بد لي من ، أولا ، تحديد رقم الإصدار للترقية إلى ، وذلك باستخدام

sudo apt-cache policy php5

سيؤدي هذا إلى سرد جميع أرقام الإصدارات المتاحة. يجب أن تجد رقم الإصدار الذي تريد الترقية إليه ، ثم انسخ السلسلة بأكملها التي تشير إليه. على سبيل المثال ، سلسلة ل فب 5.5 على أوبونتو هو "5.5.16 + دفسغ-1+deb.sury.org ~ دقيقة + 2".

الآن ، يمكنك تشغيل الرابطة بين الحصول على تثبيت الأمر مع رقم الإصدار المحدد ، وفويلا!

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

أضفت هذا فقط لأنني لم أتمكن من العثور على هذه المعلومات في أي مكان آخر!

على أوبونتو 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>

عملت في حالتي.

لحل سطر الأوامر الذي لا يقوم بتثبيت الحزمة إذا لم تكن موجودة بالفعل:

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

لترقية حزمة واحدة على أوبونتو 18.04 لتس:

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

لترقية حزم متعددة:

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