Villurekja birtist þegar stjórnskipun VPN byrjar, og fyrsta eðlishvötin er að setja upp annað Python eða beina sjálfgefnu kerfisins annað. Sú hvöt blandar tveimur keyrsluumhverfum sem hafa ekkert með hvort annað að gera. Annað tilheyrir stýrikerfinu og tólum þess í pökkum; hitt tilheyrir hverju því verkefni sem þú ert að byggja. Að breyta hinu fyrra til að fullnægja hinu síðara er hvernig skjáborð sem virkar tapar pakkastjóranum sínum.

Samanburðurinn sem er þess virði er milli íhlutarins sem raunverulega brást og keyrsluumhverfisins sem þú hefur leyfi til að breyta. Þau eru næstum aldrei sami hluturinn.

Tvær Python-spurningar sem líta út eins og ein

Fyrsta spurningin er: hvaða túlkur rak forritið sem prentaði villurekjuna? Önnur er: hvaða túlkur á verkefnið mitt að nota? Þær líta eins út í skjáhermi því báðum er svarað með því að slá python3, og þær hafa ólíka eigendur, ólíkar uppfærsluleiðir og ólíkan sprengjuhring.

Kerfistól er bundið túlkinum sem dreifingin sendir með, ásamt samsettum einingum sem byggðar voru gegn ABI þess túlks. Verkefni er bundið hvaða umhverfi sem þú býrð til fyrir það. Að færa sjálfgefna kerfið breytir hinu fyrra fyrir hvert tól á vélinni í einu; að búa til umhverfi breytir hinu síðara fyrir eina möppu.

Aðeins ein þessara aðgerða er afturkræf á einni mínútu. Það er ekki sú fyrri.

Hvaða íhlutur framleiddi villuna

Lestu fyrstu línu villurekjunnar og keyrsluskrána sem framleiddi hana áður en þú lest nokkuð annað. Framendinn á skipanalínunni, forgangsþjónustan og API-tengingarnar eru aðskildir hlutir, og aðeins sum þeirra eru Python yfirleitt.

command -v openvpn3
head -n 1 "$(command -v openvpn3)"
dpkg -S "$(command -v openvpn3)" 2>/dev/null
systemctl status openvpn3-service-client --no-pager

Fyrsta lína skriftu nefnir túlkinn sem hún mun nota, og það er túlkurinn sem villurekjan kom frá. Pakkafyrirspurnin segir þér hver á skrána, sem ræður því hver má breyta henni. Þjónustustaðan svarar allt annarri spurningu: hvort forgangsbakendinn sem raunverulega stofnar lotur sé í gangi.

Innflutningsvilla einingar, synjun D-Bus virkjunar og hafnað skírteini eru þrjú ólík stig. Innflutningsvilla verður áður en nokkur lota er til, svo engin VPN-stilling lagar hana, og virk þjónusta lagar hana ekki heldur. Að raða skilaboðunum í eitt af þessum þremur stigum er raunverulega fyrsta skrefið.

Hvað verkefnaumhverfi getur og getur ekki lagt

Verkefnaumhverfi leysir verkefnavandamál: nákvæmar útgáfur af söfnum sem ein forrit þurfa, einangraðar frá öllu öðru. Það er sannarlega gagnlegt, og það er rétta tólið þegar forritið sem bregst er skrifta sem þú átt.

uv run --python 3.11 app.py
python3 -c 'import openvpn3; print(openvpn3.__file__)'

Seinna skipunin sýnir hvaða eintak af tengingunum tiltekinn túlkur sér, sem er fljótlegasta leiðin til að greina pakka sem vantar frá pakka sem er skyggður. Keyrðu hana með túlkinum sem skriftan sem bregst notar, ekki með öðrum túlki sem virkar fyrir tilviljun.

Það sem verkefnaumhverfi getur ekki gert er að gera við framenda sem er pakkaður með dreifingunni. Fylgni þess forrits var byggð fyrir túlkinn sem pakkastjórinn valdi, og að keyra það inni í umhverfi verkefnisins mistekst annaðhvort eða framleiðir blöndu sem enginn styður. Að sprauta slóðum inn í það með umhverfisbreytu er sama mistökin með aukaskrefum: þú hefur breytt því sem tólið hleður án að breyta því sem það var prófað gegn. Sú skipti lítur út eins og lagfæring aðeins þangað til næsta innflutningur kemur.

Hvers vegna að beina kerfistúlkinum annað er gildra

Að breyta sjálfgefna túlkinum er freistandi því það virðist laga villurekjuna með einni skipun. Það brýtur líka þá forsendu sem hvert pakkað Python-tól á vélinni var byggt á, og mistökin koma fram seinna og á ótengdum stöðum.

Tilbrigðaval var hannað til að skipta milli jafngildra útfærslna, ekki til að setja nýrra tungumál undir eldri samsettar einingar. Samsettar viðbætur eru byggðar fyrir tiltekið ABI, svo eining sem fluttist inn í gær getur mistekist að hlaðast í dag án þess að einn pakki sé fjarlægður.

Það er líka nafnagildra í ráðunum sem fólk finnur. Skipunin python án útgáfunúmers hefur ekki eina algilda merkingu á milli dreifinga og umhverfa, og að meðhöndla hana sem fast samheiti fyrir tiltekna aðalútgáfu framleiðir lagfæringar sem virka aðeins á vélinni þar sem þær voru skrifaðar. Lestu stefnu kerfisins sem er fyrir framan þig frekar en þá sem er í bloggfærslunni.

Aðskilin samþykkispróf

Tvö próf eiga heima í lokin, og að standast annað segir ekkert um hitt. Það fyrra er að studda biðlaraskipunin virki með túlkinum sem hún var pökkuð fyrir. Það síðara er að forgangsþjónustan stofni lotu og göngin flytji umferð.

openvpn3 sessions-list
openvpn3-service-client --help 2>/dev/null | head -n 3
ip -4 addr show tun0

Haltu sjálfstæðri leið inn á vélina á meðan þú vinnur, sérstaklega ef VPN er eina stjórnunaraðgangurinn þinn. Breyting á kerfistúlki er einmitt sú tegund breytinga sem getur fjarlægt þann aðgang mitt í ferlinu.

Ef mistökin eru eining sem vantar fyrir kerfistól, er lagfæringin pakkaaðgerð í gegnum studda vinnuflæðið. Ef mistökin eru útgáfuárekstur í þínu eigin verkefni, er lagfæringin umhverfi. Að velja á milli þeirra tveggja er öll ákvörðunin, og hún ræðst af því hvaða forrit prentaði villurekjuna.

Tengdir greinar