سؤال كيف يمكنني تشغيل Debian مستقرًا ولكن تثبيت بعض الحزم من الاختبار؟


لنفترض أنك تشغل خادمًا ولا تريد الترقية إلى اختبار (Squeeze) من Stable (Lenny) لتثبيت الحزمة المطلوبة أو اثنتين فقط.

ما هي أفضل طريقة لتثبيت حزم معينة فقط من الاختبار؟


181
2018-06-09 07:53


الأصل


هذا ما يجب أن تقوله أحدث الوثائق الرسمية: حزم من مصدر مختلط من المحفوظات. - Alexey


الأجوبة:


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

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

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

إليك ما أوصي به لإعداد هذا:

أولاً ، قم بإنشاء الملفات التالية في /etc/apt/preferences.d:

security.pref:

Package: *
Pin: release l=Debian-Security
Pin-Priority: 1000

stable.pref:

Package: *
Pin: release a=stable
Pin-Priority: 900

testing.pref:

Package: *
Pin: release a=testing
Pin-Priority: 750

unstable.pref:

Package: *
Pin: release a=unstable
Pin-Priority: 50

experimental.pref:

Package: *
Pin: release a=experimental
Pin-Priority: 1

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

الآن ، إنشاء مجموعة مطابقة ل /etc/apt/sources.list.d:

security.list:

deb     http://security.debian.org/         stable/updates  main contrib non-free
deb     http://security.debian.org/         testing/updates main contrib non-free

stable.list:

deb     http://mirror.steadfast.net/debian/ stable main contrib non-free
deb-src http://mirror.steadfast.net/debian/ stable main contrib non-free
deb     http://ftp.us.debian.org/debian/    stable main contrib non-free
deb-src http://ftp.us.debian.org/debian/    stable main contrib non-free

testing.list: مثل stable.list، باستثناء مع testing.

unstable.list: مثل stable.list، باستثناء مع unstable.

experimental.list: مثل stable.list، باستثناء مع experimental.

يمكنك استبدال مرآة steadfast.net بكل ما تريد. أنصح باستخدام netselect-apt لمعرفة أسرع مرآة ، واستخدام ذلك لاختيارك الأول. ال ftp.us.debian.org يمكن استخدامها كنسخة احتياطية. من المهم أيضًا استخدام المصطلحات stable، testing، unstable، إلخ ، بدلاً من squeeze، wheezy، sid، وما إلى ذلك ، منذ ذلك الحين stable هو هدف متحرك وعندما يحين وقت الترقية إلى أحدث مستقر ، فإن apt / aptitude ستحدد ذلك تلقائيًا.

يمكنك أيضا إضافة oldstable في sources.lists.d و preferences.d (استخدم أولوية 1) ، على الرغم من أن هذا اللقب سوف ينتهي ويختفي قبل الدورة الثابتة التالية. في مثل هذه الحالات ، يمكنك استخدامها http://archive.debian.org/debian/ و "hardcode" إصدار دبيان (حفر ، ليني ، وما إلى ذلك).

لتثبيت إصدار اختبار الحزمة ، ببساطة استخدام aptitude install lib-foobar-package/testingأو قم بالقفز إلى واجهة المستخدم الرسومية aptitude وحدد الإصدار الموجود داخل تفاصيل الحزمة (اضغط على إدخال في الحزمة التي تنظر إليها).

إذا حصلت على شكاوى من تعارضات الحزمة ، فابحث أولاً عن الحلول. في معظم الحالات ، ستكون الأولى هي "عدم تثبيت هذا الإصدار". تعلّم كيفية استخدام اختيارات محلول القبول / الرفض لكل حزمة. على سبيل المثال ، إذا كنت تقوم بتثبيت حزمة foobar / الاختبار ، وكان الحل الأول هو "عدم تثبيت حزمة foobar / اختبار" ، ثم ضع علامة على هذا الخيار على أنه مرفوض ، والحلول الأخرى لن تنحرف إلى هذا المسار مرة أخرى. في مثل هذه الحالات ، قد يتعين عليك تثبيت بعض حزم الاختبار الأخرى.

إذا شعرت بأنها مشعرة للغاية (مثل أنها تحاول ترقية libc أو النواة أو أي نظام أساسي ضخم آخر) ، يمكنك إما رفض مسارات الترقية هذه أو الخروج من الترقية الأولية تمامًا. تذكر أنه سيؤدي فقط إلى ترقية الأشياء للاختبار / عدم الاستقرار إذا سمحت بذلك.


166
2018-04-23 02:38



أحاول استخدام هذا ، لكنني غير قادر على حل أي تبعيات على الإطلاق. يبدو وكأنه لا apt-get ، ولن تبحث aptitude عن التبعيات في repos اختبار. هل هناك طريقة لحل ذلك؟ - Tamás Szelei
هل تشغيل apt-get update بعد أن قمت بإنشاء ملفات التكوين؟ - Flow
ماذا عن التحديثات والردود؟ - dgrant
هام: اختار المؤلف قيمة تفضيل تثبيت للمستقر / الأمان هذا أعلى من قيمة الإصدار الافتراضي ... راجع serverfault.com/a/653552/120130 لمزيد من المعلومات - Alex Ryan
هذه الإجابة فقط كسرت نظامي. بعد محاولة القيام به sudo apt-get update، حصلت على خطأ في التحديث. ثم إعادة تشغيل ، مما أعطاني Xsession error، إعادة تشغيل مرة أخرى ، والآن ليس لدي واجهة المستخدم الرسومية. ال /dev/sda1/ هو الآن ممتلئ. عظيم. - luchonacho


في /etc/apt/apt.conf.d قم بإضافة الملف التالي

99defaultrelease:

APT::Default-Release "stable";

في /etc/apt/sources.list.d - إضافة عناوين url للاختبار / مصادر غير مستقرة

stable.list:

deb     http://ftp.de.debian.org/debian/    stable main contrib non-free
deb-src http://ftp.de.debian.org/debian/    stable main contrib non-free

deb     http://security.debian.org/         stable/updates  main contrib non-free

testing.list:

deb     http://ftp.de.debian.org/debian/    testing main contrib non-free
deb-src http://ftp.de.debian.org/debian/    testing main contrib non-free

deb     http://security.debian.org/         testing/updates  main contrib non-free

يركض

apt-get update

ثم قم بتثبيت ما تحتاج إليه

apt-get -t testing install something

كن حذرا جدا إذا قمت بتثبيت الأشياء التي لديها الكثير من التبعيات. يفضل ألا تفعل هذا على الإنتاج.

يمكنك كذلك تجربة حظك في باكبورتس أو مستودع مشابه.


90
2018-06-09 07:57



رائع. ذلك كان سريعا. كنت في مرحلة النشر لمشاركة المعلومات التي صادفتها للتو! هذا لطيف! - Gareth
لم أستخدم أبداً طريقة apt.conf من قبل. يبدو أكثر بساطة أن طريقة ملف التفضيلات ، ولكن يمنحك تحكم أقل دقة. - فرقعة - Coops
الإجابة تحتاج إلى ترقية. هذا التكوين سوف يكسر الأشياء تماما الآن أصبح الضغط مستقرًا وأصبح ليني قديمًا. - El Yobo
لم تعد صالحة للاستخدام ، يرجى التحديث - Lothar
في إصدارات debian الجديدة لا يوجد ملف apt.conf ، بدلاً من تحرير /etc/apt/apt.conf.d/70debconf - Hayden Thring


apt_preferences

حدد المستوى الافتراضي الذي يجب على النظام "تحديثه بشكل آمن" في ملف / etc / apt / preferences:
رجل apt_preferences

هناك الكثير يمكنك القيام به مع apt_preferences ولكن من أجل البساطة ...

كنت بحاجة إلى تثبيت حزمة واحدة (autoMysqlBackup) التي كانت متوفرة فقط في اختبار. كان الحل هو إضافة ما يلي إلى / etc / apt / preferences:

Explanation: Uninstall or do not install any Debian-originated
Explanation: package versions other than those in the stable distro
Package: *
Pin: release a=stable
Pin-Priority: 900

Package: *
Pin: release o=Debian
Pin-Priority: -10

مع إضافة مستودعات متعددة إلى /etc/apt/sources.list ، ستتم ترقية aptitude الآن إلى الإصدار المحدد فقط حتى لو تم سرد reposer الإصدار اللاحق (في هذه الحالة "مستقرة").

deb http://mirror.aarnet.edu.au/debian/ lenny main
deb-src http://mirror.aarnet.edu.au/debian/ lenny main
deb http://mirror.aarnet.edu.au/debian/ squeeze main
deb-src http://mirror.aarnet.edu.au/debian/ squeeze main

لذا لتثبيت هذه الحزمة ، كل ما عليك القيام به هو:

$ aptitude install -t testing packageName 

46
2018-06-09 08:04



هذه طريقة جيدة أيضًا ، ليست سريعة بالسهولة مثل apt.conf ، ولكنها تتيح لك التحكم في جميع مصادرك المختلفة بطريقة نسبية. - Coops
هذا معقد للغاية بالنسبة للمهمة ... استخدام APT :: Default-Release يقوم بتعيين أولوية دبوس الإصدار إلى 990 (على غرار الطريقة التي قمت بتعيينها إلى 900) وليس هناك حاجة بالفعل إلى التثبيت السلبي للباقي. خلال الترقيات ، يكون للحزمة الثابتة الأولوية على أية حال ، وبمجرد إدراج شيء ما بشكل صريح على سطر الأوامر ، سيتم تجاهل أولوية التثبيت السلبية الخاصة به في الغالب. - Raphaël Hertzog
لست متأكدًا من كيفية الرد عليكRaphael. يبدو طريقة أنيقة للغاية للقيام بالأشياء. لقد استخدمت apt pinning قبل سنوات مضت ، لكنني لم أكن قد حصلت على ذلك. الأمثلة التي استخدمتها أعلاه مباشرة من صفحة man apt_preferences. - Gareth
تأكيد هذا يعمل بشكل جيد على الضغط - tomfanning
Lothar: إنه يعمل على دبيان 6. فقط لأن الملف غير موجود لا يعني أنه لا يعمل. فقط قم بإنشاء الملف وأضف الإعدادات. اقتباس من صفحة الرجل: "إذا لم يكن هناك ملف تفضيلات أو إذا لم يكن هناك إدخال في الملف ينطبق على إصدار معين ، فإن الأولوية المعينة لهذا الإصدار هي أولوية التوزيع الذي ينتمي إليه هذا الإصدار." - rzetterberg


وثائق debian واسعة في هذا الموضوع ، وأنا أنصح بشدة بالحفر لأنها سوف تكشف حقا جمال نظام ديبيان.

القي نظرة على كيفية الحفاظ على نظام مختلط، سوف يشرح كل ما تحتاجه لمعرفة tio.


12
2018-06-09 08:24



يبدو أن هذا هو نفس الأسلوب المستخدم في الإجابة عن طريقpQd ، لذلك لا ينطبق على debian> = 6.0. كما يقول عنوان الرابط "وثائق قديمة" الآن. أيضا في الغالب ربط الاجابة الوحيدة. - dequis
في حينdequis هو الحق في أن يبدو أن تصل إلى أن تكون قديمة، أنا فقط اتبع التعليمات على ديبيان 8 (اختبار) لتثبيت حزمة من غير مستقرة، ويبدو أن كل شيء يعمل على ما يرام تماما. أي شخص حصل على رابط وثائق محدثة؟ - domsson
من المحتمل أن يكون هذا ما تبحث عنه:debian.org/doc/manuals/debian-reference/... - tomdeb


على ما يستحق ، النصيحة العامة التي رأيتها دائماً هي "لا تزاوج مع أي شيء مستقر." معظم برامج النظام المختلط هي لخلط الاختبار وعدم الاستقرار.

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

وهنا بديلين:

  1. استعمال باكبورتس.
  2. تثبيت خط مصدر من الاختبار ، ومحاولة بناء الإصدار الأحدث الذي تريده من المصدر.

10
2018-06-09 13:09



أنا موافق. أنا فقط حاولت تحديث libdvdread4 من الاختبار بسبب وجود خلل في الإصدار في wheezy / مستقر. انها تريد جلب في أحدث libc على الرغم من. لذلك أنا فقط أمسك حزمة المصدر ل libdvdread4 من مستقر ومصححة مع تغيير مصدر الخط 1 وإعادة بنائها. أفضل من سحب جميع أنواع الحزم من الاختبار. الآن جميع الحزم لا تزال هي "مستقرة" ، ولدي فقط 1 خط تغيير أحتاج. - dgrant


طريقة أخرى ، يمكن أن تحول دون تثبيت الكثير من التبعيات من اختبار أو Sid ، هي: يمكنك إخبار apt-get بالحصول على مصدر الحزمة من Testing أو Sid وإنشاء حزمة لنظامك باستخدام أدوات Debian (لا حاجة للتلاعب اليدوي مع المصادر).

نقلا عن هنا:
https://wiki.debian.org/DebianUnstable#How_do_I_backport_a_sid_package_to_testing_or_stable.3F

كيف يمكنني backport حزمة sid اختبار أو مستقرة؟

قم بتثبيت مصدر دبيان (وأدوات التطوير خاصة   debhelper ، devscripts ، وبناء ضروري) ، ومن ثم بناء   صفقة.

خطوة بخطوة:

add a deb-src line for sid to your sources.list

apt-get update

apt-get build-dep PACKAGE_NAME

apt-get -b source PACKAGE_NAME 

يجب أن تكون debs الناتجة في الدليل الحالي ويمكن أن تكون   مثبت مع dpkg -i the.deb.


7
2018-03-13 17:02





لقد كنت أفعل ذلك لفترة طويلة من الوقت لأكون واثقاً في القول بأنها آمنة بما فيه الكفاية ويمكن أن تكون مريحة. مع تثبيت الإصدار المستقر أدناه من الإعداد بشكل افتراضي ، ستسمح لك Aptitude أيضًا باختيار الإصدار الخلفي أو غير المستقر إذا رغبت في ذلك:

enter image description here

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

  • إنشاء "/etc/apt/apt.conf.d/10defaultrelease" وجعلها محتويات على النحو التالي:
Apt :: Default-Release "stable"؛
  • تحرير الخاص بك "/etc/apt/sources.list" لإضافة مصادر غير مستقرة وموارد خلفية حتى تبدو كما يلي:
# deb cdrom: [Debian GNU / Linux 6.0.0 _Squeeze_ - Official Multi-architecture amd64 / i386 NETINST # 1 20110205-14: 45] / press main

deb http://ftp.us.debian.org/debian/ squeeze main
deb-src http://ftp.us.debian.org/debian/ squeeze main

deb http://security.debian.org/ squeeze / updates main
deb-src http://security.debian.org/ squeeze / updates main

# الضغط تحديث ، تعرف سابقا باسم "متقلبة"
deb http://ftp.us.debian.org/debian/ squeeze-updates main
deb-src http://ftp.us.debian.org/debian/ squeeze-updates main

# ضغط backports
# http://backports.debian.org/Instructions/
deb http://backports.debian.org/debian-backports squeeze-backports main

# غير مستقر
# http://wiki.debian.org/AptPreferences
deb http://ftp.us.debian.org/debian/ غير مستقر الرئيسي
deb-src http://ftp.us.debian.org/debian/ main غير مستقر

# غير مجاني السابقين. الشمس جافا
#deb http://ftp.us.debian.org/debian/ الضغط بدون أي استخدام
# deb-src http://ftp.us.debian.org/debian/ الضغط بدون استخدام غير مجاني
  • تصحيح etc/apt/preferences تثبيت الملف - إذا كان الملف غير موجود ، فقم بتكوينه.
# حزمة يعلق الأولويات
# راجع http://wiki.debian.org/AptPreferences و http://manpages.debian.net/cgi-bin/man.cgi؟query=apt_preferences
#
# في قذيفة الجوز يحصل على تثبيت أعلى PIN
#
# Pining default هي على النحو التالي والتي هي بالإضافة إلى إعداداتنا:
# 990 - للإصدار غير المثبت ولكن ينتمون إلى إعداد `` APT :: Default-Relase '' الثابت ``.
# 500 - للإصدارات غير المثبتة ولا تنتمي إلى الإصدار المستهدف
# 100 - للحزم المثبتة بالفعل ، وهذا يعني أيضا إصدارات أخرى من نفس الحزمة
رقم 1 - للحزم التجريبية ؛ الحزم مع "NotAutomatic: نعم"
#
# لدينا Pinnings
# 400 - backports التي يمكن تثبيتها بأمان دون الحاجة إلى تحديث الحزم الأخرى
# 50 - الحزم غير المستقرة ، تثبيت القسري في شاشة التفاصيل ، يمكن أن يؤدي إلى الصراعات

صفقة: *
Pin: release n = squearze-backports
دبوس الأولوية: 400

صفقة: *
دبوس: الافراج عن = غير مستقر
  • خلق "/etc/apt/apt.conf.d/100guiconf" ولإعداد Aptitude حتى يتم عرض معلومات التثبيت.
Aptitude :: UI :: Package-Display-Format "٪ c٪ a٪ M٪ p٪ Z٪ v٪ V٪ i"؛

4
2018-02-04 22:59



مجرد تحديث ، بالإضافة إلى ما سبق ، استقرت على تشغيل جميع حزم النظام الخاصة بي من مستودعات تطوير "الاختبار". في الداخل source.list يجب أن يقول اسم الرمز jessie بدلا من squeeze. سياسة دبيان testing بالقرب من مستقرة وكانت حزم جديدة تقريبا من unstable مستودع. نفدت المساحة هنا لذا يرجى إلقاء نظرة على: wiki.debian.org/DebianReleases، wiki.debian.org/StableUpdatesو wiki.debian.org/StableProposedUpdates. الأخيرين هما مصادر مستودع إضافية. - Daniel Sokolowski


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

لتكوين خادم المستودع الخاص بك:

# Install aptly.
apt-get install aptly

# Create local mirror (choose a source mirror near you).
aptly mirror create -filter="mirror-contains-no-packages" stretch-roundcube http://httpredir.debian.org/debian stretch main

# Configure filters for local mirror.
aptly mirror edit -filter="Name (% roundcube*)" stretch-roundcube

# Update local mirror.
aptly mirror update stretch-roundcube

# Drop previously published repositories and mirrors, if running these commands in a script.
aptly publish drop stretch

# Drop snapshot, if running these commands in a script.
aptly snapshot drop stretch-roundcube

# Create new snapshot.
aptly snapshot create stretch-roundcube from mirror stretch-roundcube

# Publish snapshot.
aptly publish snapshot -architectures=i386,amd64 -distribution=stretch -component=roundcube -label="Your Name" -origin="Your Name" stretch-roundcube

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

للاحتفاظ بالمستودع الخاص بك تلقائيًا وسحب التحديثات من المنبع ، ضع ما سبق في نص برمجي وقم بتشغيل من مهمة cron.

لتكوين جهاز العميل الخاص بك ، على جهاز العميل الخاص بك:

# Configure private repository without authentication.
echo 'deb http://private.repository.example.com/ stretch roundcube' > /etc/apt/sources.list.d/private.repository.example.com.list

# Configure private repository with authentication.
echo 'deb https://hostname:password@private.repository.example.com/ stretch roundcube' > /etc/apt/sources.list.d/private.repository.example.com.list
apt-get install apt-transport-https

# Update.
apt-get update

# Install package.
apt-get install roundcube

للحفاظ على جهاز العميل الخاص بك وسحب جميع تحديثات المستودع الخاص بك ، على جهاز العميل الخاص بك:

# Update.
apt-get update

# Upgrade.
apt-get upgrade

2
2017-07-06 18:53