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-ի անունը պետք է համապատասխանի այն դիստրիբուտիվին, որի համար կառուցվել է փաթեթը։ trixie հայելուն ուղղված Debian bookworm համակարգը, կամ թարմացման ընթացքում sources.list.d ֆայլում վերանվանված Ubuntu թողարկումը, ոչինչ չի լուծում միայն մյուս suite-ում գոյություն ունեցող փաթեթների համար։ Համեմատեք lsb_release -cs-ը յուրաքանչյուր գրառման suite դաշտի հետ։

APT-ն տեսնում է միայն այն ճարտարապետությունների համար կառուցված փաթեթները, որոնք dpkg-ն գիտի։ 32-բիթանոց կոնտեյները, arm64 պատկերը կամ Raspberry Pi-ի տեղադրումը, որը պահանջում է միայն amd64-ի համար առաքվող փաթեթ, ստանում է դատարկ թեկնածու՝ սխալի հաղորդագրության փոխարեն։ dpkg --print-architecture-ը և dpkg --print-foreign-architectures-ը ձեզ ասում են, թե իրականում որ հավաքածուում եք։

Բաղադրիչները նույնպես կարևոր են։ contrib-ում կամ non-free-ում գտնվող փաթեթը անտեսանելի է, երբ միացված է միայն main-ը, և Ubuntu-ի universe-ը վարվում է նույն կերպ։ Ինդեքսը գոյություն ունի, և փաթեթը դրա մեջ է. պարզապես ձեր միացված բաղադրիչների ցանկը չի ներառում այն։

Ամրագրումը լուռն է։ /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-ը, նախքան երթևեկություն կրելը։

Առնչվող հոդվածներ