بسته فروشنده را نصب می‌کنید، دستور صفر برمی‌گرداند و هنوز برنامه 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 را با یک نسخه گزارش کند، و شکست در اجرا پس از آن مشکل برنامه است نه مشکل بسته‌بندی.

مالک مخزن و بسته برنامه را به عنوان دو شیء جداگانه ثبت کنید، تا حذف بعدی مورد درست را بردارد و دیگری را دست‌نخورده بگذارد. وقتی فروشنده راهنمای خود را عوض می‌کند، ورودی منبع چیزی است که دوباره می‌خوانید؛ نام کلاینت چیزی است که دوباره نصب می‌کنید.

مقالات مرتبط