سؤال كيف تختار APT الحزمة المحددة المراد تثبيتها لتوفير حزمة افتراضية مطلوبة كاعتمادية؟


فمثلا، awk هي حزمة افتراضية تقدمها original-awk، mawk و gawk.

محاولة تثبيته مباشرة الغلة:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
Package awk is a virtual package provided by:
  original-awk:i386 2012-12-20-4
  mawk:i386 1.3.3-17ubuntu2
  gawk:i386 1:4.1.1+dfsg-1
  original-awk 2012-12-20-4
  mawk 1.3.3-17ubuntu2
  gawk 1:4.1.1+dfsg-1
You should explicitly select one to install.

E: Package 'awk' has no installation candidate

ومع ذلك ، هناك حاجة إلى العديد من الحزم الافتراضية باعتبارها تبعيات من الحزم المثبتة بشكل افتراضي ، على سبيل المثال awk نفسها مطلوبة من قبل base-files، والتي يتم التحقق من سجلات APT مع حفنة من الحزم الأخرى من خلال apt-get --yes. على نحو ما ينتهي APT اختيار واحد من الثلاثة تلقائيا (أنا متأكد من ذلك mawk، لكن هذا ليس هو الهدف من السؤال).

كيف تختار APT الحزمة المحددة لتركيبها في هذه الحالة؟


3
2018-02-25 14:23


الأصل


ضع في اعتبارك أن "الحزم الافتراضية" يتم توفيرها بواسطة شيء آخر - يجب عليك التحقق مما هو موجود بالفعل awk. تحقق ما هي الحزمة awk جاء manpage - قد تحدد أي واحد مثبت بالفعل. - Thomas Ward♦
ThomasW. أيضا readlink -f $(which awk) هو تلميح جيد (على سبيل المثال في نظامي /usr/bin/gawk مع gawk تثبيت و /usr/bin/mawk مع gawk غير مثبتة). المشكلة هي ، هذا السؤال في الواقع ينشأ من حقيقة أنه بسبب متعددة gawk إعادة التثبيت لا أستطيع التحقق من ذلك بهذه الطريقة لا أكثر ، لأن الرابط (و man صفحة لهذه المسألة) يشير فقط إلى أحدث مثبت يدويا / واحد فقط مثبت بالفعل. لذلك كنت أحاول أن ألتقط "الأصلي" بطريقة أخرى ، ولكن في النهاية انتهى بي الأمر إلى أن أصبح أكثر اهتماما بمعرفة كيف يتم الاختيار. - kos
لدي كل من تثبيتها gawk و mawk. انهم لا يتعارضون. - Pilot6
Braiam لماذا تعتقد أن السؤال ليس عن التبعيات؟ انها في الواقع محددة للاعتمادية ، على الرغم من القيود المفروضة على الحزم الافتراضية. لست متأكدًا من سبب إزالة "إدارة الحزم" ، لكنني لن أتفق كثيرًا ، إنه واسع جدًا (ويفتقر إلى الويكي) بطريقة تجعله عرضة لأي تفسير. في كل مرة قرأتها بدا واسعًا جدًا لدرجة أنني اعتقدت أن "إدارة الحزمة (في هذه الحالة من قِبل APT)" قد تكون مناسبة ، لكن ربما أكون قد أفرطت في ذلك (إذا كنت لا توافق ولا تمانع ، فالرجاء إخباري من المفترض أن تقرأ بدلا من ذلك). - kos


الأجوبة:


كيف تختار APT الحزمة المحددة لتركيبها في هذه الحالة؟

لا تحدد APT حزمة. انها تخبر:

يجب اختر صراحة واحدة لتثبيت.

إذا حاولت تحديد حزمة يدويًا ، فلن يتم تثبيتها.

في حالة الملفات الأساسية اعتمادا على awk فإنه غير ذي صلة. أولا ، في الواقع PreDepends على AWK، مما يؤدي إلى تثبيت dpkg لتثبيت awk قبل البدء في تثبيت الملفات الأساسية ؛ الثانية ، mawk لها الأولوية مطلوب التي يتم تثبيتها عند تثبيت النظام ، و apt nags إذا حاولت إزالته. لذلك ، لا تفعل ذلك.

الآن ، وفقا للمصادر ، يحاول apt أولا تلبية التبعية من قبل تحاول مع الحزم الافتراضية (بمعنى ، إذا كان الأمر كذلك firefox | www-browser، يتحقق مما إذا تم تثبيت أي من الحزم ، ثم حاول تثبيت فايرفوكس إذا لم يكن أي منهما). إذا لم تكن الحزمة غير الظاهرية متوفرة ، فيبدو الأمر مجرد تكرار جميع الحزم التي توفر الحزمة الافتراضية، إذا لم يتم كسر أي تبعيات أخرى. التعليقات الأخرى دليل على هذا السلوك هي هذه التي تؤدي إلى GrpIterator :: FindPreferredPkg الدالة.


3
2018-02-25 18:18





لم يتم تحديدها في سياسة التغليف ديبيان أي حزمة حقيقية محددة مثبتة إذا كانت هناك حزم بديلة تقدم حزمة افتراضية.

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

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

يمكنك التحقق من awk يستخدم عن طريق الجري

readlink /etc/alternatives/awk

1
2018-02-25 14:45



نعم ، هذا هو السبب في أنني أسأل. منذ mawk و gawk لا تتعارض ، لماذا التثبيت mawk و لا gawk؟ هل تقترح أن بعض الحزمة الأخرى في apt-get --yes الأمر الذي ذكرته بوضوح مطلوب mawk؟ - kos
إما هذه الحالة ، أو اختار apt أول العثور عليها. - Pilot6
لإجراء 1+ لتلميح "حزمة أخرى تحتاج إلى ذلك" ، فمن المحتمل جدًا. سأختبر ذلك و "أول مرة تم العثور عليها" في وقت لاحق أو غدًا (لا أستطيع إزالة كل AWK دون كسر النظام ، لذلك سأحتاج إلى العثور على حزمة مناسبة إلخ) ، سوف أعلمك بما يحدث . - kos
kos لم يتم تثبيت النظام الأساسي بالطريقة العادية. تثبيت الاشياء في عادي الطريقة ، لا شيء يختار mawk ، يمكنك الحصول على "اختيار واحد" الرسالة التي اقتبستها في سؤالك ، و --yes ليس له تأثير على ذلك. - hobbs
(اختبارها بسهولة من قبل dpkg --remove --force-all mawk gawk ; apt-get --yes install awk. لا يثبّت أي شيء.) لا ، إنه لا يكسر النظام بدرجة كافية لمنعه apt-get install mawk من العمل.) - hobbs