سؤال كيفية منع تحديث حزمة معينة؟


بسبب علة رقم 693758 أود منعه apt-get upgrade و Update Manager من تحديث الحزمة "libgtk2.0-0".

كيف احقق هذا؟


324
2017-12-23 17:29


الأصل


hhlp: ولكن هذا السؤال يسأل عن حزمة لم يتم تثبيتها أبدًا. - Nathan Osman
George Edison - هناك أيضًا حزمة احتفاظ ، مما يسمح لك بعدم تحديث الحزمة. لذا فإن حمل الحزمة بشكل أساسي يعني أنك تخبر مدير الحزم بإبقاء الإصدار الحالي مهما كان. يكون هذا مفيدًا إذا تعطّلت نسخة أحدث من برنامج يعمل حاليًا بعد التحديث. (لا يمكنك الاحتفاظ بحزمة لم يتم تثبيتها أبداً ، كما ترى سؤالي هو نفسه) .... لقد اختبرت ذلك الآن - انظر قال disable packages from the auto-update - hhlp


الأجوبة:


تحتجز

هناك أربع طرق لحزم الحزم: مع dpkg ، apt ، aptitude أو dselect.

نظام إدارة حزم دبيان

ضع الحزمة في الانتظار:

echo "<package-name> hold" | sudo dpkg --set-selections

إزالة التعليق:

echo "<package-name> install" | sudo dpkg --set-selections

عرض حالة الحزم الخاصة بك:

dpkg --get-selections

عرض حالة حزمة واحدة:

dpkg --get-selections | grep "<package-name>"

ملائم

عقد حزمة:

sudo apt-mark hold <package-name>

إزالة التعليق:

sudo apt-mark unhold <package-name>

دي سيلكت

باستخدام dselect ، أدخل الشاشة [S] elect ، ابحث عن الحزمة التي ترغب في الاحتفاظ بها في حالتها الحالية واضغط = أو H. سوف تسري التغييرات فورًا بعد الخروج من الشاشة [S] المنتخبة.


المقاربات التالية محدودة في أن تأمين / تثبيت حزمة داخل aptitude أو synaptic لا يؤثر على apt-get / apt.

موهبة

عقد حزمة:

sudo aptitude hold <package-name>

إزالة التعليق:

sudo aptitude unhold <package-name>

قفل مع مدير الحزم Synaptic

اذهب إلى مدير الحزم Synaptic (النظام> الإدارة> مدير الحزم Synaptic).

انقر فوق زر البحث واكتب اسم الحزمة.

عند العثور على الحزمة ، حددها وانتقل إلى صفقة القائمة واختيار نسخة القفل.

Synaptic menu

لن تظهر هذه الحزمة الآن في مدير التحديث ولن يتم تحديثها.


474
2017-12-23 18:04



يعمل هذا أيضًا لمنع تثبيت حزمة. عند التثبيت devscripts، يتم سحب الكثير تعبئتها الحزم الموصى بها. ولست بحاجة إلى خادم البريد (postfix) ، يمكنني تعطيل التثبيت من خلال تشغيله echo postfix hold | sudo dpkg --set-selections قبل الركض sudo apt-get install devscripts. يستمر إجراء التعليق هذا فقط لهذا التثبيت ، بعد التثبيت يتم إعادة تعيين التحديدات. - Lekensteyn
وتجدر الإشارة أيضًا إلى أن حزم عمليات التحزيم لا تؤدي إلى حدوث ترقيات وقطع ترقيع أحيانًا عن طريق إنشاء موقف لا يوجد به حل قانوني يمكن حسابه إلى تبعية. إذا كانت الحزمة foo تحتوي على == <or <= تبعية على libbar ، فحينئذٍ سترفض apt ترقية libbar بالإضافة إلى foo. بمرور الوقت ، قد تنمو هذه التبعيات المتتالية لحظر عدد كبير من التحديثات ، بما في ذلك تحديثات الأمان الهامة. ستحتاج إلى إزالة التعليق وإيقاف الترقية ، أو إعادة إنشاء الحزم التي تحتفظ بها مقابل الإصدارات الجديدة من تبعياتها إذا حدث ذلك. - Stephanie
مجرد ملاحظة: apt-mark لا يدعم hold في الإصدار 0.7.25 (Ubuntu Lucid) - Joril
هذا مفيد بشكل خاص عند محاولة إيقاف برامج تشغيل الرسومات. بالنسبة لمستخدمي ATI ، apt-mark hold fglrx fglrx-amdcccle fglrx-dev && aptitude hold fglrx fglrx-amdcccle fglrx-dev. - earthmeLon
حاليا متشابك و aptitude فقط قفل الحزم داخل تلك البرامج. "أي شيء آخر يقوم بترقيات الحزمة (اقرأ: مدير التحديث ، apt-get ، aptitude ، إلخ) يتجاهل ذلك". من عند هذا السؤال. - holocronweaver


لوضع حزمة "Foo" في الانتظار:

echo "foo hold" | dpkg --set-selections

في حالتك سنضع النبيذ في الانتظار:

sudo -i
echo "wine hold" | dpkg --set-selections

لإزالة التعليق:

sudo -i
echo "wine install" | dpkg --set-selections

43
2017-12-08 20:15



لاحظ أيضًا أنه في حالة وجود حزمة قيد الانتظار ، فأنت بذلك يستطيع تثبيت نسخة محددة عبر apt-get install wine=1.2.3. يجري في الانتظار يمنع apt-get (dist-)upgrade من تغييره. - rcoup
rcoup إذا كان لديك إصدار قديم في الانتظار ، ثم قمت بالترقية يدويًا إلى إصدار جديد دون إزالة التعليق كما تصفه ، فهل سيتم الاحتفاظ بالإصدار القديم في ذاكرة التخزين المؤقت بحيث يمكنك الرجوع إليه؟ - cxrodgers
cxrodgers ذاكرة التخزين المؤقت المحلية (عادة /var/cache/apt/archives) مستقل عن عمليات التحفظ والترقية والاشياء ، لذلك ستكون جميع الإصدارات التي قمت بتنزيلها هناك حتى تقوم بتشغيل apt-get [auto]clean - rcoup


كنت أبحث عن نفس الشيء ، وبعد الكثير من البحث وجدت أن استخدام الصيغة التالية يمكن أن يمنع إصدارًا معينًا ، لكن مع السماح بالتحديث التالي:

الحزمة: compiz-plugins-main
Pin: الإصدار 1: 0.9.7.0 ~ bzr19-0ubuntu10.1
دبوس الأولوية: -1

يذهب هذا إلى ملف etc / apt / preferences.


28
2017-07-22 11:13



هذه طريقة أفضل بكثير من منع التحديثات إلى أجل غير مسمى - Eero Aaltonen
مع هذه الطريقة ، أعتقد ، فرص أكبر لمنع أوبونتو "ادواري" مثل أوبونتو واحد أو رمز الأمازون من يتم تثبيته مع ترقية الإصدار التالي ... - Daniel Alder


التثبت synaptic استخدام sudo apt-get install synaptic.

تشغيل باستخدام gksudo synaptic وفي مربع البحث ، حدد موقع الحزمة التي تريد قفلها ، على سبيل المثال: gedit

enter image description here

من قائمة الحزمة اختر نسخة القفل:

enter image description here

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


19
2017-12-08 20:06



يرجى النظر في "نسخة القفل ليست ذكية كما يبدو. من المفترض أن تفعل ما تقول على القصدير ، قفل الإصدار ... ولكن فقط قفله داخل Synaptic. أي شيء آخر يفعل ترقيات حزمة (اقرأ: مدير التحديث يتجاهل هذا الأمر ، ربما يكون هذا سلوك عربات التي تجرها الدواب ، لذا أتوقع أن يتم إصلاح ذلك في الوقت المناسب. " من عند askubuntu.com/questions/9607/what-does-lock-version-do. ما هي الحالة الراهنة؟ إذا كان هناك شيء مقفل في Synaptic ، فهل يكرم مديرو الحزم الآخرون القفل؟
vasa1: اعتبارا من الإصدار 0.75.13 ، لا يوجد حتى الآن :( نفس المشكلة مع aptitude. - syockit


يُطلق على منع تثبيت حزمة ما باسم "احتجاز الحزمة" ، وهو أمر بسيط للغاية:

صدى صوت PACKAGE_NAME عقد | dpkg --set-selections

... حيث * package_name * هو اسم الحزمة التي تريد منعها من التثبيت.

ملحوظة: يفترض الأمر أعلاه امتيازات الجذر. وبعبارة أخرى ، قد تحتاج إلى الكتابة sudo su قبل تشغيلها.


16
2018-02-05 01:18



في احسن الاحوال هذه كان الجواب. شكرا لكم. - asoundmove
s/sudo su/sudo -s/g (أو sudo -i). (-i سوف يعطي قذيفة تسجيل الدخول ، -s سوف لن). - derobert


منذ بعض الوقت apt-get لقد بدل بواسطة apt، على سبيل المثال ، أريد منع Firefox من التحديث إلى الإصدار الأعلى من 56 ، نظرًا لأن هناك الكثير من الوظائف الإضافية ، مثل "مجموعات علامات التبويب" لا تزاول العمل مع الإصدار الجديد من Firefox 57 (راجع "تحديث WebExtensions").

من الممكن الاحتفاظ بأكثر من مجموعة واحدة باستخدام أمر واحد واستخدام أحرف البدل.

منع فايرفوكس من التحديث

sudo apt-mark hold firefox firefox-locale-*

إذا كنت تريد أن تميّزها لاحقًا ، فسيكون هذا الأمر:

sudo apt-mark unhold firefox firefox-locale-*

5
2017-11-19 07:45





أنا متشابك يمكنك تجميد إصدار حزمة معينة أنا لست متأكدا 100 ٪ عما إذا كان هذا سوف يعدل apt-get لكنه سيوقف بالتأكيد إدارة التحديث.

لتجميد حزمة قم بتحديدها في synaptic ثم افتح قائمة الحزم واختر إصدار تجميد.

أتمنى أن يساعدك هذا

تحرير: هذا السؤال 16668 يتعامل مع وضع مماثل


4
2017-12-23 17:35





كل ما تريد معرفته عن حزم "الإمساك" و "تثبيت" على إصدارات محددة: https://help.ubuntu.com/community/PinningHowto


3
2017-12-23 21:09