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

ما الذي تغيّره كل حزمة فعليًا

حزمة إعداد المستودع تكتب سطر مصدر في APT، وتستورد مفتاح التوقيع الذي يثق به ذلك السطر، ثم تنتهي. /etc/apt وتشتمل حِمْلتها على بضعة ملفات إلى جانب حلقة مفاتيح، ولا شيء يمكنك تشغيله. أما حزمة العميل فتُضمّن البرنامج الخفي أو تطبيق سطح المكتب ومكتباته واعتمادياته، وهي الشيء الذي ينتهي في قائمة أو في وحدة systemd.

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

ثلاث مراحل تنبع من هذا الفصل: سجّل المصدر، وحدّث البيانات الوصفية التي يغذّيها، ثم ثبّت التطبيق بالاسم. و دليل التثبيت على Debian وUbuntu يبقيها منفصلة، ولهذا يُطلب العميل في خطوة لاحقة لا عبر الحزمة التي أعدّت المصدر.

ثلاثة شروط تحدّد الترتيب

الشرط الأول هو هل ينشر المورّد مستودعًا لإصدار توزيعتك بالتحديد. سطر مصدر بُني لنسخة توزيع واحدة قد يُحلّ مقابل اعتماديات نسخة أخرى ويثبّت خليطًا لم يختبره أحد.

الشرط الثاني هو هل تحمل توزيعتك العميل أصلًا. وحين تحمله، تتبع حزمة التوزيعة انتقالات المكتبات والتحديثات الأمنية الخاصة بإصدارك، بينما قد تتحرك حزمة المورّد أسرع وتجلب نُسخها من المكتبات المشتركة.

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

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

افحص ما خلّفته حزمة الإصدار

قبل تثبيت أي شيء آخر، اقرأ قائمة الملفات لا الوصف. في أنظمة عائلة Debian تجيب قائمة محتويات الحزمة عن ما أعدّته وأين استقر المفتاح.

dpkg -L proton-vpn-release | grep -E 'apt|keyring'
apt-cache policy proton-vpn-gnome-desktop
grep -r protonvpn /etc/apt/sources.list.d/

يعرض السطر الأول ملف المصدر ومسار حلقة المفاتيح، بينما يبلّغ الثاني بالإصدار الذي يمكن للمصادر المعدّة تقديمه. وإذا لم يطبع apt-cache policy شيئًا لاسم العميل، فلم يحدث تحديث البيانات الوصفية أو أن المصدر يستهدف نسخة توزيع مختلفة. ويؤكد الثالث أن الإدخال في المكان الذي يقرأ منه APT فعلًا.

طابق مسار حلقة المفاتيح مع حقل signed-by= في سطر المصدر. والمفتاح في الدليل الخطأ يُنتج خطأ مصدر غير موثّق، وهو عطل مختلف عن حزمة غير متاحة.

تعامل مع فشل الاعتماديات كمرحلة منفصلة

تثبيت ملف .deb مُنزَّل بـ dpkg -i لا يحل شيئًا: يفحص الاعتماديات ويبلّغ بما ينقص ويترك الحزمة نصف معدّة. وهذا سلوك متوقع لا تنزيل تالف.

apt --fix-broken install ثم يطلب من APT حالة متسقة من المصادر التي لديك. لا يعرف APT أي VPN أردت، وقد تزيل خطته حزمًا لتلبية القيد الذي وجده. اقرأ المعاملة المقترحة قبل أن تجيب بنعم، وتوقّف إن لامست الإزالات شيئًا تحتاجه. وتكرار الإصلاح دون قراءة الخطة هو كيف يتحول نقص صغير في الاعتماديات إلى سطح مكتب لا يقلع بعدها.

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

تحقّق من التطبيق لا من المستودع

تأكّد أن العميل وصل إلى الحالة المثبَّتة، ثم تأكّد أن البرنامج يقلع. dpkg-query -W -f='${Status} ${Version}' proton-vpn-gnome-desktop يجب أن يبلّغ بـ install ok installed مع إصدار، وأي فشل في التشغيل بعد ذلك مشكلة تطبيق لا مشكلة تغليف.

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

مقالات ذات صلة