Názov distribúcie, glibc alebo kompilátor: čo inštalátor kontroluje
Inštalátor, ktorý odmieta vašu odvodenú distribúciu, môže čítať názov distribúcie, verziu behového prostredia alebo kompilátor. Len jedna z týchto vecí rozhoduje o tom, či binárka pobeží.
Inštalátor vypíše “unsupported distribution”, vy upravíte jeden reťazec a on pokračuje, kým o minútu neskôr nezlyhá s chybou zavádzača. Ten sled je príznak, ktorý sa oplatí rozpoznať: prvé zlyhanie bola kontrola rozpoznania a druhé je hranica kompatibility. Sú to dva rôzne problémy, ktoré sa náhodou objavia v tom istom termináli. Úprava kontroly vás môže len presunúť z prvého na druhé.
Príznak: inštalátor sa zastaví na vašej odvodenej distribúcii
Skript, ktorý prečíta názov distribúcie a odmietne pokračovať, vám hovorí, že jeho autor vašu odvodenú distribúciu netestoval. Je to vyhlásenie o podpore, nie technický fakt, a často je nesprávne v tom zmysle, že balík by fungoval dobre.
Problém sa začína, keď sa z obchádzky stane plán. Zmena súboru identity nechá kontrolu prejsť a balík sa potom načíta, alebo nenačíta, voči behovému prostrediu, ktoré je skutočne nainštalované. Ak tam zlyhá, žiadne ďalšie úpravy identity nepomôžu.
Užitočný krok teda je zistiť, na ktorú otázku sa inštalátor pýtal, a potom zistiť, či by na odpovedi záležalo. Sú to dve samostatné vyšetrovania a len to druhé predpovedá, či balík bude fungovať.
Tri verzie, ktoré ľudia nazývajú verzia systému
Vydanie distribúcie pomenúva zabalené prostredie. Verzia knižnice C pomenúva implementáciu behového prostredia a jej vydanie. Verzia kompilátora pomenúva reťaz nástrojov. V rozhovore ľudia nazývajú všetky tri “verzia systému”, ale v inštalátore nie sú zameniteľné.
cat /etc/os-release ldd --version | head -1 gcc --version | head -1 uname -m
Vopred zostavená aplikácia očakáva behové prostredie, ktoré existovalo pri jej zlinkovaní. Výmena kompilátorov na hostiteľovi ju znova nezlinkuje a novší reťaz nástrojov nič nemení na symboloch zavádzača, ktoré binárka žiada. Architektúra je znova dôležitá samostatne, pretože 32-bitový balík na 64-bitovom systéme zlyhá z dôvodov, ktoré žiadny reťazec verzie nevysvetlí.
Uložte štyri výstupy k hláseniu. Ich zber trvá desať sekúnd a odpovedajú na väčšinu otázok, ktoré by vám správca inak položil e-mailom.
Čítajte chybu, nie kontrolu
Prvá chyba spustenia je dôkaz. Hlásenie o chýbajúcom zdieľanom objekte alebo o verzii symbolu, ktorú zavádzač nedokáže uspokojiť, je problém závislosti na behovom prostredí. Hlásenie, ktoré opakuje názov distribúcie, je znova kontrola rozpoznania, na inom mieste.
dokumentácia dynamického linkera popisuje, ako funguje hľadanie knižníc a kde zavádzač hľadá. Zmena označenia distribúcie nepridá do tejto cesty hľadania žiadny adresár, a preto druhé zlyhanie vyzerá nesúvisiace s prvým.
Nesiahnite po ldd na stiahnutom spustiteľnom súbore ako po bežnom prvom kroku. Jej vlastný manuál varuje, že za určitých okolností môže program spustiť, a spúšťanie nedôveryhodného inštalátora je presne ten prípad, o ktorom je to varovanie.
Prečo úprava reťazca nepomáha
Falšovanie identity operačného systému mení to, ako každý program na stroji vidí sám seba. Správcovia balíkov, nástroje podpory aj ďalšie aplikácie čítajú ten istý súbor a hodnota, ktorá uspokojí jeden inštalátor, môže o mesiace zmiasť niečo iné.
Nahradenie knižníc hostiteľa súbormi z inej distribúcie je horšie. Môže rozbiť nesúvisiaci softvér, je neviditeľné pre správcu balíkov a vyžaduje plán údržby, ktorý nikto nenapíše. Také zmeny jeden obmedzujúci inštalátor neospravedlňuje.
Ak je kontrola skutočne chybou rozpoznania, správca to môže potvrdiť a opísať podporovanú opravu. Ak chybou nie je, podporovanou cestou je zostavenie pre vašu platformu a tá odpoveď sa nemení preto, že bol reťazec upravený.
Napíšte hlásenie, s ktorým môže správca pracovať
Zaznamenajte distribúciu a vydanie, architektúru, vydanie VPN, presnú podmienku, ktorá bola odmietnutá, a prvú chybu behového prostredia, ak ste sa tak ďaleko dostali. Uveďte, či ste niečo zmenili, pretože hlásenie z upraveného systému je iné hlásenie.
Nechajte pôvodný inštalátor bez zmeny a opíšte kontrolu namiesto toho, aby ste ju obchádzali. Tento rozdiel umožní správcovi oddeliť príliš úzke pravidlo rozpoznania od skutočnej hranice binárnej kompatibility, a to sú dva veľmi odlišné bugy s dvoma veľmi odlišnými opravami.
Ak príde odpoveď, že vaša platforma nie je podporovaná, je to použiteľný výsledok. Hovorí vám, aby ste hľadali podporované zostavenie, namiesto toho, aby ste strávili ďalší večer nad súbormi identity, ktoré nikdy neboli problémom.