سؤال كيفية ترقية حزمة واحدة باستخدام 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


لتحديث حزمة واحدة باستخدام 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.

116
2017-10-15 11:22



تظهر لي رسالة خطأ بهذا الأمر: E: Sense only is not understood, try true or false. - Michael
لأولئك الذين يواجهون خطأ المعلق السابق انظر جوابي أدناه. - golem
انخفضت لأنها لا تضيف معلومات جديدة من الإجابات السابقة - gokul_uf
يجب أن تمر --only-upgrade إلى install subcommand ، وليس مباشرة إلى 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


في تجربتي على Ubuntu 12.04 LTS ، لن يؤدي استخدام الأمر أدناه إلى ترقية الحزمة في حالة استخدام PPA منفصل -

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

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

sudo apt-get dist-upgrade

على سبيل المثال ، لدي PHP 5.3 مثبتة وأضفت PPD ondrej إلى my 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 على Ubuntu هي "5.5.16 + dfsg-1 + deb.sury.org ~ exact + 2".

الآن ، يمكنك تشغيل الأمر apt-get install مع رقم الإصدار المحدد ، و voila!

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

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


22
2017-09-18 16:14





على Ubuntu 9.04 Jaunty ،

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 subcommand ، وليس مباشرة إلى 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