سؤال "لقد تم إلغاء الحزم التالية:" لماذا وكيف يمكنني حلها؟


لقد قمت للتو بإضافة مستودع PPA للنسخة التطويرية من GIMP ، لكني أتلقى هذا الخطأ:

$ apt-get update && apt-get upgrade
...
The following packages have been kept back:
  gimp gimp-data libgegl-0.0-0 libgimp2.0

لماذا وكيف يمكنني حلها حتى أتمكن من استخدام الإصدار الأحدث بدلاً من الإصدار الموجود الآن؟


720
2017-07-31 21:59


الأصل


بالمعنى الدقيق للكلمة ، أود أن أقول هذا هو تحذير ، وليس خطأ. - Kazark


الأجوبة:


بالنسبة الى مقال عن debian-dministration.org،

إذا تغيرت الاعتمادات على أحد الحزم التي قمت بتثبيتها حتى يتم تثبيت حزمة جديدة لإجراء الترقية ، فسيتم إدراجها كـ "استرجاع".

حل الحذر 1:

الحل الحذر هو الترشح sudo apt-get install <list of packages kept back>. في معظم الحالات ، سيعطي هذا الحزم المسترجعة ما يحتاجونه للترقية بنجاح.

حل الحذر 2:

لكل الجواب بابلو، يمكنك الجري sudo apt-get --with-new-pkgs upgradeوسيقوم بتثبيت الحزم المحفوظة.

وهذا له ميزة عدم وضع علامات على الحزم المحفوظة على الظهر كـ "تم تثبيتها يدويًا" ، مما قد يؤدي إلى المزيد من تدخل المستخدم أسفل الخط (راجع التعليقات).

إذا كان حل بابلو مناسبًا لك ، فالرجاء قراءته. إذا لم يكن الأمر كذلك ، يرجى التعليق على ما حدث.

حل قوي:

حل أكثر عدوانية هو تشغيل sudo apt-get dist-upgrade، والتي ستجبر تركيب هذه الاعتمادات الجديدة.

لكن dist-upgrade  يمكن أن تكون خطيرة جدا. على عكس الترقية ممكن إزالة حزم لحل مواقف التبعية المعقدة. بخلافك ، ليست APT دائما ذكية بما يكفي لمعرفة ما إذا كانت هذه الإضافات وعمليات الإزالة يمكن أن تعيث فسادا.

إذا وجدت نفسك في مكان لا يعمل فيه "الحل الحذر" ، dist-upgrade  قد العمل ... ولكن ربما تكون أفضل حالاً من تعلم المزيد عن APT وحل مشكلات التبعية "يدوياً" عن طريق تثبيت وإزالة الحزم على أساس كل حالة على حدة.

فكر في الأمر كإصلاح سيارة ... إذا كان لديك الوقت ومفيد مع مفتاح الربط ، فستحصل على راحة البال من خلال القراءة والقيام بالإصلاح بنفسك. إذا كنت محظوظًا ، يمكنك إسقاط سيارتك مع ابن عمك dist-upgrade ونأمل أنها تعرف أشياءها.


704
2017-07-31 22:15



نظرًا لأن هذا يحتاج إلى إجابة مقبولة ، فإنه بحاجة إلى التحديث للتحذير من استخدامه dist-upgrade على نظام مستقر كما أشار العديد من الإجابات الأخرى أدناه. أنا شخصياً أعتقد أن هناك إجابة أبسط وأكثر أمناً تحتاج إلى ترقية: apt-get install <list of pkgs> - Cas
Cas ، هل يجب أن أضيف أنه قد يكون من الخطير تشغيل ترقية عن نظام مستقر؟ لماذا بالضبط هذا خطير؟ (بصراحة لا أعرف كل هذا جيدا.) - mac9416
هناك خطأ خادم الإجابة يفسر هذا التحديث بشكل أكثر تفصيلًا. أعتقد أن الأمر يستحق التوضيح (ليس خطيراً على هذا النحو) أنه قد يقوم بترقية النظام بأكمله والذي قد يكون أبعد مما يتوقعه المستخدم / يريده ، على سبيل المثال في نموذج OP ، يتساءل عن السبب في عدم تقييد الأعرج. - Cas
يرجى ملاحظة ذلك sudo apt-get dist-upgrade يمكن أيضا إزالة الحزم. وبالتالي ، فمن الأفضل دائمًا فحص قائمة التغييرات التي سيتم إجراؤها قبل الموافقة عليها ، عند التشغيل sudo apt-get dist-upgrade. - Eliah Kagan
EliahKagan هل يمكنني إضافة ذلك apt-get upgrade يمكن إزالة الحزم؟ ستفعل ذلك دائمًا عندما يكون هناك تعارض في الإصدارات خلاف ذلك. افكر في llvm3.6 ضد. llvm3.6v5 (مع "v5" بمعنى أنه تم تجميعها مع gcc 5). هذين لا يمكن أن تتعايش، يمكن فقط إبقاء كليهما على النظام. لذا نعم dist-upgrade قد يزيل بعض الحزم أيضًا ، ولكنه ليس فقط dist-upgrade من شأنه أن يفعل هذا ؛ تحت ظروف معينة ، upgrade سوف ، كذلك. - syntaxerror


كلما تلقيت من الأمر apt-get upgrade الرسالة

The following packages have been kept back:

ثم لترقية واحدة أو كل من الحزم المحفوظة ، دون القيام بترقية التوزيع (وهذا هو ما dist-upgrade ، إذا كنت أتذكر بشكل صحيح) هو إصدار الأمر:

apt-get install <list of packages kept back>

سيؤدي ذلك إلى حل مشكلات الاسترجاع وسيطلب تثبيت حزم إضافية ، إلخ ، كما تم توضيحه بإجابات أخرى.


468
2017-09-08 09:14



عندما يتم الاحتفاظ الحزم بهذه الطريقة وأنا يدويا apt-get upgrade <list of packages>، إذا أنا إعادة apt-get upgrade، فإنه سيتم سرد الحزم المعنية كما لم تعد المطلوبة والتي يمكنني استخدامها apt autoremove لإزالتها ، والتي أفعلها ، ثم أخيرًا apt-get upgrade ولم يعد يتم إدارجهم كما تم إعادتهم ... غريب جدًا. أي أفكار؟ - cram2208
هل apt-get install أيضا إزالة الحزم عند الضرورة لحل حالات التبعية gnarly ، أو سيكون لديك لتشغيل منفصلة apt-get remove الأمر لإنجاز هذا الجزء من عملية الترقية؟ - mac9416
@ cram2208 أعتقد أن هذا هو السلوك المتوقع. الحزم التي كانت "مثبتة تلقائيًا و [...] لم تعد مطلوبة" هي الإصدارات السابقة للحزم التي تمت ترقيتها ، والتي لم تعد هناك حاجة إليها الآن. apt autoremove ثم يزيل هذه التبعيات غير المستخدمة. - Alex
إذا كانت الترقية تتطلب حزمة جديدة ليتم تثبيتها ، فسيتم "إعادة تحميل الحزمة". يجب أولاً التفكير في استخدام: sudo apt-get --with-new-pkgs upgrade التي من شأنها لا يكون لها تأثير جانبي على التسبب في تحديد الحزم المثبتة يدويًا - l --marc l
@ mac9416 نعم يفعل. - jarno


apt-get dist-upgrade خطر على البيئة المستقرة ،

  1. إعداد source.list خاطئ وينتهي بك الأمر مع أوبونتو مكسورة.
  2. قد تحصل على ترقية التطبيق بالكامل إلى الإصدار الذي لا تريده.

حالة الاستخدام: تم الاحتفاظ بنسخة احتياطية من النواة ، وترغب فقط في ترقية النواة ، ولا ترغب في ترقية التوزيع بأكمله.

أفضل طريقة للتعامل مع حزمة الظهر المحفوظة:

sudo aptitude

إذا كنت قد احتفظت بالرزمة ، فيجب أن ترى حزم قابلة للترقية أعلى القائمة.

  • ضرب + في تلك القائمة
  • ضرب ز مرتين
  • الرد الاشياء debconf إذا طلب ذلك
  • اضغط على العودة للمتابعة
  • اضغط على Q
  • اضغط نعم

حزمة الظهر المحفوظة مثبتة.


170
2017-12-24 00:43



apt-get dist-upgrade خطير فقط إذا كان لديك مستودعات سيئة /etc/apt/sources.list*. من الجيد أن تكون على علم بذلك dist-upgrade ترقيات الكل الحزم ، ولكن مع المستودعات الافتراضية ، التي ينبغي أن تكون على ما يرام. ليس استخدام dist-upgrade قد تكون خطيرة ، فقد تفتقد تحديثات الأمان. - Flimm
apt-get dist-upgrade يستطيع إزالة فضلا عن إضافة الحزم ، لكنها ليست خطيرة حقا. أي أمر تثبيت حزمة يمكن أن يسبب ضررا خطيرا إذا كان لديك مشاكل في حياتك sources.list ملف! عادي apt-get upgrade سيقوم الأمر بتثبيت أي حزمة من أي مصدر للبرنامج تم تمكينه ؛ dist-upgrade ليست فريدة من نوعها بهذه الطريقة. علاوة على ذلك ، باستخدام aptitude لأداء أي عملية على الإطلاق ، على الأقل على amd64 ، هو أكثر خطورة بكثير من تشغيل apt-get dist-upgradeفي الافراج عن المكان علة 831768 غير ثابت. - Eliah Kagan
بالنسبة لي ، كان من الأسهل (الجهاز المحلي مع تشغيل X) لفتح متشابك وفرض ترقية الحزمة. لسبب ما لا يبدو أن تظهر في كل مكان وصفته في متشابك. - djvs
أيضا sudo aptitude safe-upgrade - msanford


لماذا لا تحاول هذا الجواب يونيكس SE:

sudo apt-get --with-new-pkgs upgrade

هذا يسمح بتثبيت الحزم الجديدة. وسوف تتيح لك معرفة ما الحزم التي سيتم تثبيتها ويطالبك قبل القيام بالفعل التثبيت.

apt أمر (بديل ودية إلى apt-get) شارك هذه apt-get اختيار.

عن طريق apt install <pkg> بدلا من ذلك سيضع علامة pkg على أنها "مثبتة يدوياً" !! لتمييزه مرة أخرى على أنه استخدام "مثبت تلقائيًا" apt-mark auto <pkg> (انظر أيضًا الأمر subcommand showmanual). مزيد من المعلومات على هذا الجواب.


60
2017-12-20 20:16



إجراء 1+ نظرًا لعدم وجود تأثير جانبي على الحزم التي يتم وضع علامة عليها كمثبت يدويًا. - ctrl-alt-delor
ملاحظة لمن يقرأ تعليقي أعلاه: عدم وجود التأثير الجانبي للعلامة المثبتة يدويًا أمر جيد. أنا أحب هذه الإجابة. - ctrl-alt-delor
لذلك إذا كنت تستخدم sudo apt-get --with-new-pkgs upgrade  بدون جري apt-mark auto <pkg>، هل سيكون كل شيء على ما يرام؟ هو الأمر الثاني ضروري فقط إذا كنت فعل اختر لتثبيت حزم التراجع يدويا؟ - mac9416
نعم فعلا. apt-mark auto <pkg> يجب أن يكون ضروريًا فقط لوضع علامة على الحزمة على أنها مثبتة تلقائيًا (هنا صفحة الرجل). - Pablo Bianchi


هناك عادة سببين قد ترى هذه الرسالة.

إذا ترقية البرنامج (عبر sudo apt-get upgrade) قد يؤدي إلى إضافة الحزم أو إزالتها ، ثم يتم تعليق البرنامج مرة أخرى. يمكنك استخدام sudo apt-get dist-upgrade في هذه الحالة ، والتي ستعرض بعد ذلك إضافة أو إزالة البرامج الإضافية.

هذا أمر شائع جدًا وعادة ما لا يمثل مشكلة. من حين لآخر (ولا سيما خلال ألفا أوبونتو) أ dist-upgrade سيعرض عليك إزالة الكثير من البرامج الأخرى ، وفي هذه الحالة ربما تريد إلغاءها.

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


30
2017-07-31 22:16



هل هناك طريقة لتحديد ما إذا كانت الحزمة المحتفظ بها تحتاج إلى تبعية لا يمكن تثبيتها أو إذا كانت محتجزة لأن الحزم الأخرى تعتمد عليها. لدي العديد من الحزم المحتفظ بها وأعتقد أن كلتا الحالتين قد تنطبق على نظامي. - Jake
شكراً ، السبب الثاني كان القضية بالنسبة لي. حتى في apt-get dist-upgrade رفض تثبيته. أظهر فحص الحزمة مع aptitude أنها تعتمد على حزمة غير متوفرة. أعتقد أن علي الانتظار. - jlh


على الأرجح يتم تعليق هذه الحزم لأن التثبيت الخاص بهم سيخلق عدم تناسق التبعية. يمكن أن يحدث هذا إما لأنك تستخدم الأرشيفات تحت التطوير النشط أو الصفحات الفرعية أو لأن المرآة التي تستخدمها لم يتم تحديثها بالكامل.

في الحالة الأخيرة ، فقط انتظر ، عندما يتم حل التبعيات سيتم تثبيتها في المرة القادمة.

تصحيح:

هناك احتمال آخر ، قد يتم تعليق الحزم إذا كان هناك تعليق عليها ، أو إذا كانت معلقة.


18
2017-07-31 22:17



ما الذي تستند إليه هذه الاحتمالية ، دون معرفة أي شيء يدير ترقية apt-get أو apt-get dist-upgrade (alt. aptitude equivalentents)؟ - andol
هذه هي المشكلة الأكثر حدوثًا في أسئلة الدعم والبق - txwikinger
متفق عليه. ربما ينبغي عليك الانتظار والتحقق من apt_preferences. يحدث هذا غالبًا من خلال أرشيف التطوير حيث تتغير تبعيات الحزم المتوفرة بسرعة كبيرة. انتظر حتى يستقر ، وربما لا تحتاج إلى ذلك dist-upgrade على الاطلاق. إذا كنت لا تزال ترغب في ذلك dist-upgrade، ثم اطلع على الحزم الجديدة ليتم تثبيتها والحزم المراد إزالتها قبل المضي قدمًا. - Umang
هذه هي حالتي لأنني أتلقى رسالة "تم الاحتفاظ بها" باستخدام الترقية عن بُعد - Postadelmaga
في الحالات التي تكون فيها هذه المشكلة بسبب messup with apt preferences (pinning) ، وجدت أن إعادة تثبيت الحزم المحفوظة ساعدني: apt-get install --reinstall <packages>. - tanius


يمكنك أيضًا تجربة:

sudo aptitude safe-upgrade.

انها اكثر امنا من full-upgrade (التي تم تسميتها في الأصل باسم dist-upgrade) لأن "الحزم لن تتم إزالتها إلا إذا كانت غير مستخدمة".

من عند man aptitude:

آمنة الترقية

ترقيات الحزم المثبتة إلى أحدث إصدار. المثبتة   لن يتم إزالة الحزم إلا إذا كانت غير مستخدمة /.../ الحزم   التي لم يتم تركيبها حاليًا ، قد يتم تثبيتها لحلها   الاعتماديات ما لم يكن خيار سطر الأوامر - no-new-installs هو   زودت.


18
2017-08-12 08:02





هذا عادة لأن الحزمة أضافت تبعية ، ولا تريد الترقية إضافتها لك بدون إذن.

اذا ركضت:

sudo apt-get install gimp gimp-data libgegl-0.0-0 libgimp2.0

ثم يجب تثبيت الإصدارات الجديدة مع تبعية جديدة.


9
2017-12-27 19:20



ترقيات حزم محددة (والاعتمادية لها) دون الالتزام (المخاطر) من ترقية dist. - John Mee