منبع apt فروشنده VPN شما مدیر بسته را خراب کرده است، و راه حل یک تصمیم است نه یک فرمان. NO_PUBKEY، یا شکایتی که مخزن هیچ فایل Release ندارد، یعنی apt از اعتماد به آن منبع خودداری کرده است، پس هر عملیات بسته بعدی همان هشدار را چاپ می کند. خود تونل احتمالا بی گناه است. به سه پرسش درباره اینکه هنوز آن منبع را می خواهید پاسخ دهید، و تعمیر درست تقریبا مکانیکی دنبال می شود.

نخست، خرابی را در دسته درست بگذارید

خرابی اعتماد نام فایل منبع و یا کلید گمشده یا فایل Release غایب را می گوید. خرابی انتقال متفاوت به نظر می رسد: خطاهای گواهی TLS، اتصال رد شده، پایان مهلت، یا پروکسی که CONNECT را رد می کند. همین تفاوت تعیین می کند کدام مقاله را می خوانید، زیرا VPN ای که TLS را رهگیری می کند یا میزبان فروشنده را مسدود می کند خرابی انتقال تولید می کند، نه خرابی امضا.

اجرا کنید sudo apt update را به تنهایی و انتهای خروجی را بخوانید، و نتایج حافظه نهان بالای آن را نادیده بگیرید. خطی که اهمیت دارد نام /etc/apt/sources.list.d/ را می آورد و می گوید کدام فایل را باز کنید.

اگر خرابی پس از بالا آمدن تونل رخ می دهد، با تونل پایین و با DNS که از طریق حل کننده سیستم حل می شود آزمایش کنید. منبعی که بدون VPN کار می کند مسئله مسیریابی یا رهگیری است، و هیچ مقدار مدیریت کلید آن را درست نمی کند.

سه پرسش که مسیر را انتخاب می کنند

آیا هنوز بسته ها را از این منبع نصب یا به روز می کنید؟ اگر کلاینت فعالانه استفاده می شود، اعتماد را تعمیر کنید. اگر کلاینت را یک بار نصب کردید و اکنون یک نمایه ساده در NetworkManager وارد می کنید، منبع بار اضافی است و حذف آن تعمیر صادقانه است.

دوم، آیا فروشنده کلید و اثر انگشتی منتشر می کند که بتوانید بیرون از کانال بررسی کنید؟ سوم، چه کسی کلیدها را روی این میزبان مدیریت می کند: توزیع یا شما؟ منبعی که با کلیدی امضا شده که نمی توانید بررسی کنید، اختیار به روزرسانی است که نباید بدهید.

پاسخ نه به پرسش نخست تحلیل را پایان می دهد. پاسخ بله به هر سه نکته به تعمیر با signed-by اشاره می کند، که تنها ترتیبی است که هم کار می کند و هم قابل حسابرسی می ماند. آمیختن دو مسیر، با نگه داشتن منبع و عبور دادن اجباری آن، تنها گزینه ای است که ارزش دارد صریحا کنار گذاشته شود.

چرا trusted=yes شبیه تعمیر است و نیست

صفحه راهنمای sources.list در این باره صریح است. تنظیم گزینه Trusted روی yes به apt می گوید منبع را حتی وقتی احراز هویت را رد می کند بپذیرد، که apt-secure را برای آن مخزن خاموش می کند. صفحه آن را برای بافت محلی نگه می دارد، اگر اصلا استفاده شود.

این نسخه باریک تری از اعتماد به فروشنده نیست. پرسش اینکه چه کسی نمایه را امضا کرده حذف می کند، پس هر کسی که بتواند برای آن نام میزبان پاسخ بدهد می تواند بسته هایی به دستگاه شما بدهد که با دسترسی root نصب می شوند.

مسیر تعمیر: کلید را بگیرید، سپس آن را سنجاق کنید

کلید را از جایی که فروشنده مستند می کند بگیرید و آن را به یک حلقه کلید تحت مدیریت مدیر باز کنید، سپس خط مخزن را به آن فایل اشاره دهید تا اعتماد جابه جا نشود.

  1. خط شکست خورده را بخوانید تا شناسه کلید و نام فایل منبع را بگیرید.
  2. کلید ASCII زره پوش فروشنده را دانلود کنید و gpg --dearmor را به /etc/apt/keyrings/vendor-name.gpg اجرا کنید.
  3. خط [signed-by=/etc/apt/keyrings/vendor-name.gpg] را به ورودی در فایل .list آن فروشنده اضافه کنید.
  4. اجرا کنید sudo apt update و تأیید کنید که منبع یک نمایه می گیرد نه اینکه هشدار امضا را تکرار کند.

ترجیح دهید /usr/share/keyrings را برای کلیدهایی که همراه یک بسته می آیند و /etc/apt/keyrings را برای کلیدهایی که با دست می گذارید. این تقسیم تشریفاتی نیست: به مدیر بعدی می گوید کدام کلیدها از به روزرسانی بسته جان سالم به در می برند و کدام به انسان نیاز دارند.

اثر انگشت را با مقدار منتشرشده فروشنده مقایسه کنید پیش از آنکه به آن اعتماد کنید. شناسه کلیدی که از یک پست انجمن چسبانده شده راهی است که دستگاه شروع به اعتماد به اختیار به روزرسانی می کند که هیچ کس نمی تواند نامش را ببرد.

مسیر حذف، و چرا خطا می تواند برگردد

ببینید نصب کننده واقعا چه نوشته است، زیرا چند فایل می توانند به یک فروشنده اشاره کنند و یکی از آنها معمولا نسخه باقی مانده است.

grep -r . /etc/apt/sources.list.d/
sudo rm /etc/apt/sources.list.d/vendor.list

apt فقط فایل های .list و .sources را از آن پوشه می خواند، پس نسخه .save یا .distUpgrade از پیش نادیده گرفته می شود؛ با این حال پاک کردن آن جلوی خواننده بعدی را می گیرد که به اشتباه آن را بازگرداند. حذف منبع چیزی را حذف نصب نمی کند، و apt ممکن است سپس بسته VPN نصب شده را به عنوان نصب محلی یا دیگر در دسترس نبودن توصیف کند، که پیام وضعیت بسته است نه بازگشت خطای اعتماد.

مورد تکرارشونده راهنمایی قدیمی تری است که کلیدها را با apt-key در حلقه اعتماد جهانی نصب می کرد. آن مسیر منسوخ شده است، و یک به روزرسانی نسخه می تواند کلید را رها شده یا صرفا مشورت نشده بگذارد، و دقیقا به همین دلیل خطایی که یک سال ساکت بود در هفته ای که به روزرسانی می کنید ظاهر می شود. بررسی کنید /etc/apt/trusted.gpg.d/ را، سپس تصمیم اعتماد را به خط مخزن که جای آن است منتقل کنید. اگر فروشنده هنوز دستورهای apt-key را چاپ می کند، باز هم از signed-by استفاده کنید؛ این همان ترتیبی است که راهنما مستند می کند، و همانی است که از به روزرسانی جان سالم به در می برد.

مقالات مرتبط