تنزيلات الطرفية تعمل لكن إضافات VS Code تفشل عبر VPN
يعمل curl داخل الحاوية ومع ذلك لا تُثبَّت الإضافة. قارن بين المحرر المحلي والبيئة البعيدة قبل نسخ إعدادات الوكيل.
التنزيلات التي تنجح في طرفية الحاوية دليل حقيقي على بيئة تلك الطرفية. وهي لا تقول شيئًا عن عملية المحرر أو مثبّت الإضافة أو الملف التنفيذي الذي تجلبه الإضافة بعد ذلك. نسخ متغيرات الوكيل بين هذه الثلاثة يحوّل طلبًا فاشلًا واحدًا إلى بعد ظهر كامل من التعديلات غير ذات الصلة.
تختلف البيئتان عادةً في نقطة واحدة بالضبط. وإيجاد تلك النقطة أسرع من قراءة توثيق الوكيل مرتين.
أي عملية أرسلت الطلب الفاشل
يمكن أن تفشل ثلاثة طلبات خلال تثبيت واحد، ولكل منها هوية شبكية خاصة به. يسأل المحرر سوق الإضافات عن البيانات الوصفية وعن رابط الحزمة، ثم ينزّل الحزمة. وبعد ذلك فقط يشغّل مضيف الإضافات شيفرة قد تجلب خادم لغة أو ملفًا تنفيذيًا خاصًا به. والمرحلة التي تعطّلت هي التي تحدد أي عملية تحتاج إلى وكيل، ونادرًا ما تسمّي واجهة الخطأ تلك المرحلة.
الطرفية العاملة تثبت أن الحاوية تستطيع الوصول إلى الإنترنت، لا أن المحرر يستطيع ذلك. اقرأ سجل الإضافة بحثًا عن آخر رابط حاولت استخدامه. والمضيف المذكور هناك يحدد العملية والسياسة المطبقة عليها.
المحرر المحلي والحاوية البعيدة بيئتان مختلفتان
في مساحة عمل بعيدة تعمل الإضافة على الجانب الذي يعلنه نوعها. تبقى إضافات الواجهة مع المحرر المحلي، أما إضافات مساحة العمل فتعمل داخل الحاوية. والوكيل المضبوط في إحداهما غير مرئي للأخرى، وإعادة البناء تنشئ بيئة الحاوية من ملف تهيئتها لا مما صدّرته في صدفة. وهذا الانقسام يفسر لماذا تُثبَّت الإضافة نفسها على حاسوب محمول وتفشل في المشروع نفسه عبر SSH.
اقرأ موقع التثبيت قبل تعديل أي شيء. عندما يذكر السجل تثبيتًا بعيدًا، فبيئة الحاوية هي المهمة.
ضع الوكيل حيث يبدأ الطلب
بالنسبة إلى Dev Container يحتاج فعلاً إلى وكيل HTTP، ينتمي المتغير إلى تهيئة الحاوية كي تعيد إعادة البناء إنتاجه. والمقتطف أدناه يضبطه لتلك البيئة. وعنوان العنصر النائب يمثل بوابتك الخاصة، والاستثناءات ليست حشوًا اختياريًا.
"containerEnv": {
"HTTP_PROXY": "http://proxy.corp.example:8080",
"HTTPS_PROXY": "http://proxy.corp.example:8080",
"NO_PROXY": "localhost,127.0.0.1,.internal.example"
}
اسم المتغير يصف بروتوكول الوجهة، لذا يجوز أن تبدأ قيمة HTTPS_PROXY بـ http. طبّق التغيير عبر مسار إعادة البناء المدعوم، واحتفظ بالاستثناءات، لأن الوكيل الذي يعترض المضيفات الداخلية يعطّل خدمات تحتاجها الحاوية.
افصل إخفاقات الثقة عن إمكانية الوصول
الوكيل الذي يتصل ثم يعيد خطأً في التحقق من الشهادة قد وصل إلى مرحلة أبعد من ذلك الذي يرفض الاتصال. الإخفاق الأول يحتاج إلى مادة الثقة المعتمدة لدى المؤسسة مثبّتة في البيئة التي تنفذ الطلب. والثاني يحتاج إلى عنوان ومنفذ يمكن الوصول إليهما. والتعامل معهما كمشكلة واحدة ينتج إصلاحًا لا يصلح لأي منهما.
تعطيل التحقق، أو تشغيل المحرر بصلاحيات مرتفعة، ليس إصلاحًا لغياب وكيل أو غياب سلسلة ثقة. كلاهما يقايض خطأً ظاهرًا بخطأ صامت. أعد محاولة الإضافة نفسها بعد ذلك ولاحظ الرابط التالي الذي يفشل.
env | grep -iE '^(http|https|no)_proxy='
code --install-extension ms-python.python --force
سجّل أي جانب من مساحة العمل أنتج ذلك الرابط. ملاحظة قصيرة تسمّي المرحلة والمضيف والجانب تساوي أكثر من قائمة إعدادات غيّرها شخص ما، لأن تلك الملاحظة هي ما يستطيع الشخص التالي إعادة إنتاجه.