Чаму apt-cache паказвае «усталявана (няма)» для вашага VPN-пакета
«Усталявана (няма)» азначае, што VPN-пакет не ўсталяваны, а не што ён адсутнічае. Прачытайце радкі кандыдата, піна і архітэктуры, перш чым правіць крыніцы.
VPN-пакет, які паведамляе Installed: (none), не знік; ён проста не ўсталяваны. Радок, які вырашае, ці можаце вы яго ўсталяваць, — гэта Candidate, і APT выводзіць яго з індэксаў, назвы suite, архітэктуры і любых правілаў піна, што дзейнічаюць. Большасць паведамленняў пра зніклы VPN-пакет аказваюцца праблемай кандыдата, а не праблемай пакетавання. Прачытайце абодва радкі, перш чым крануць хоць адзін запіс крыніц.
Я спачатку правяраю кандыдата, бо гэта каштуе адной каманды і адсякае палову звычайных здагадак.
Што вам кажа вывад apt-cache policy
apt-cache policy чытае лакальны кэш пакетаў, а не сетку. Ён друкуе ўсталяваную версію, версію-кандыдат і табліцу кожнага індэкса, які прапануе пакет, разам з прывязаным да яго прыярытэтам.
apt-cache policy openvpn
apt-cache madison openvpn
apt list -a network-manager-openvpnКандыдат — гэта версія, якую APT выбраў бы зараз. madison пералічвае, што прапануе кожная крыніца, з яе прыярытэтам, і менавіта так вы заўважаеце пакет, які ёсць у індэксе, але прайграе спаборніцтва піна. Дапаможнік apt-cache апісвае абодва як чытанне кэша, таму ні адзін з іх не даказвае, што люстэрка даступнае ў гэты момант.
Калі радок кандыдата пусты або паказвае (none), нішто ў настроеных крыніцах не падыходзіць для гэтай сістэмы ў яе бягучай канфігурацыі.
Чатыры прычыны знікнення кандыдата
На практыцы прычына амаль заўсёды адна з чатырох, і ў кожнай сваё рашэнне.
Назва suite у вашых крыніцах павінна адпавядаць дыстрыбутыву, для якога быў збудаваны пакет. Сістэма Debian bookworm, накіраваная на люстэрка trixie, або выпуск Ubuntu, перайменаваны ў файле sources.list.d падчас абнаўлення, нічога не вырашае для пакетаў, якія ёсць толькі ў іншым suite. Параўнайце lsb_release -cs з полем suite у кожным запісе.
APT бачыць толькі пакеты, збудаваныя для архітэктур, якія ведае dpkg. 32-бітны кантэйнер, вобраз arm64 або ўсталяванне на Raspberry Pi, якое просіць пакет, што пастаўляецца толькі для amd64, атрымлівае пусты кандыдат замест паведамлення пра памылку. dpkg --print-architecture і dpkg --print-foreign-architectures скажуць, у якім наборы вы насамрэч знаходзіцеся.
Кампаненты таксама маюць значэнне. Пакет у contrib або non-free нябачны, калі ўключаны толькі main, і universe у Ubuntu паводзіць сябе гэтак жа. Індэкс існуе, і пакет у ім; проста ваш спіс уключаных кампанентаў яго не змяшчае.
Пін — самы ціхі. Файл у /etc/apt/preferences.d можа абмежаваць пакет ніжэй за парог усталявання, і тады цалкам добры кандыдат знікае з вываду, пакуль індэкс усё яшчэ пералічвае яго. Паколькі policy друкуе прыярытэты побач з кожнай крыніцай, пакет, у якога кожная крыніца мае нізкі нумар піна, — гэта падказка.
Састарэлыя індэксы выглядаюць як адсутныя пакеты
Кэш — гэта здымак. Калі апошні apt update не ўдаўся на адным індэксе, запыты працягваюць адказваць са старэйшай копіі, і пакета, якога вы чакаеце, можа не быць у той копіі.
apt update друкуе памылкі па кожным індэксе, таму чытайце іх, а не пракручвайце адразу да апошняга радка.
Абнаўленне, якое не ўдалося з-за памылкі подпісу, састарэлага файла release або недасяжнага люстэрка, пакідае папярэдні індэкс на месцы. Гэта разумная канструкцыя, бо яна захоўвае працаздольны кэш, калі люстэрка ненадоўга недаступнае. Пабочны эфект у тым, што пошук можа атрымацца, пакуль рэпазіторый не ў сетцы. Гэта таксама азначае, што адсутнасць пакета нічога не даказвае, пакуль вы не даведаецеся, калі індэкс апошні раз загружаўся. Праверце даты файлаў у /var/lib/apt/lists, перш чым вінаваціць назву пакета.
Назавіце пакет, які вам сапраўды патрэбны
OpenVPN — гэта дэман, а тыя часткі, якія людзі звычайна хочуць, — асобныя пакеты.
Рухавік, плагін NetworkManager і рэдактар працоўнага стала — тры пакеты з трыма назвамі, а ў плагіна ёсць варыянт GTK, назва якога адрозніваецца паміж дыстрыбутывамі. apt-cache search --names-only openvpn супастаўляе назвы і прадстаўленыя назвы замест апісанняў, і гэта тое, што вам патрэбна, калі вы прыблізна ведаеце, як гэтая рэч называецца.
Калі назва сапраўды невядомая, адзін раз пашукайце па апісаннях, затым вярніцеся да дакладных назваў. Не дадавайце суфікс -gui, пазычаны з іншага дыстрыбутыва, і не рабіце выснову, што пакета больш не існуе.
Змяняйце крыніцы апошнімі, затым праверце аперацыю
Даданне рэпазіторыя змяняе таго, хто пастаўляе вашы абнаўленні, таму гэта адносіцца да канца расследавання, а не да пачатку.
Перад гэтым пацвердзіце выпуск, архітэктуру, кампанент і стан піна. Запішыце, якія з чатырох вы праверылі, каб наступны чалавек не паўтараў гэты праход. Калі ўсе чатыры правільныя, а кандыдат усё яшчэ адсутнічае, сумленная выснова — гэты выпуск не пастаўляе такі пакет. Астатнія варыянты — backport, пакет ад пастаўшчыка або іншы падтрыманы выпуск, і кожны з іх — свядомы выбар, а не здагадка.
Калі кандыдат усё ж з'явіцца, змадэлюйце перад выкананнем: apt-get install --simulate з назвай пакета пакажа, што будзе падцягнута і што выдалена. Даступнасць пакета, усталяванне і працоўны тунель застаюцца трыма асобнымі этапамі, і тунелю ўсё яшчэ патрэбны яго профіль, уліковыя даныя, маршруты і DNS, перш чым ён пачне перадаваць трафік.