Asentaja tulostaa “unsupported distribution”, muokkaat yhtä merkkijonoa ja se jatkaa, kunnes epäonnistuu minuuttia myöhemmin lataajan virheeseen. Tämä sarja on oire, joka kannattaa tunnistaa: ensimmäinen epäonnistuminen oli tunnistustarkistus ja toinen on yhteensopivuuden raja. Ne ovat kaksi eri ongelmaa, jotka sattuvat ilmestymään samaan päätteeseen. Tarkistuksen muokkaaminen voi vain siirtää sinut ensimmäisestä toiseen.

Oire: asentaja pysähtyy johdannaiseesi

Skripti, joka lukee jakelun nimen ja kieltäytyy jatkamasta, kertoo, ettei sen tekijä testannut johdannaistasi. Se on tukilausuma eikä tekninen tosiasia, ja se on usein väärä siinä mielessä, että paketti toimisi aivan hyvin.

Ongelma alkaa, kun kiertotiestä tulee suunnitelma. Identiteettitiedoston muuttaminen saa tarkistuksen menemään läpi, ja paketti latautuu tai ei lataudu sitä vasten, mikä ajonaikainen ympäristö on todella asennettu. Jos se epäonnistuu siinä, mikään identiteetin muokkaus ei auta.

Hyödyllinen liike on siis selvittää, minkä kysymyksen asentaja esitti, ja sitten selvittää, olisiko vastauksella ollut merkitystä. Ne ovat kaksi erillistä tutkimusta, ja vain toinen ennustaa, toimiiko paketti.

Kolme versiota, joita ihmiset kutsuvat järjestelmän versioksi

Jakelun julkaisu nimeää paketoidun ympäristön. C-kirjaston versio nimeää ajonaikaisen ympäristön toteutuksen ja sen julkaisun. Kääntäjän versio nimeää työkaluketjun. Keskustelussa ihmiset kutsuvat kaikkia kolmea “järjestelmän versioksi”, eivätkä ne ole asentajassa vaihdettavissa.

cat /etc/os-release
ldd --version | head -1
gcc --version | head -1
uname -m

Valmiiksi käännetty sovellus odottaa ajonaikaista ympäristöä, joka oli olemassa sitä linkitettäessä. Kääntäjien vaihtaminen isännässä ei linkitä sitä uudelleen, eikä uudempi työkaluketju muuta mitään lataajan symboleissa, joita binääri pyytää. Arkkitehtuuri merkitsee taas erikseen, koska 32-bittinen paketti 64-bittisessä järjestelmässä epäonnistuu syistä, joita mikään versiomerkkijono ei selitä.

Säilytä neljä tulostetta raportin mukana. Niiden kerääminen kestää kymmenen sekuntia, ja ne vastaavat useimpiin kysymyksiin, joita ylläpitäjä muuten kysyisi sinulta sähköpostilla.

Lue virhe, älä tarkistusta

Ensimmäinen käynnistysvirhe on todiste. Viesti puuttuvasta jaetusta objektista tai symboliversiosta, jota lataaja ei voi täyttää, on ajonaikaisen ympäristön riippuvuusongelma. Viesti, joka toistaa jakelun nimen, on taas tunnistustarkistus, eri paikassa.

dynaamisen linkittäjän dokumentaatio kuvaa, miten kirjastohaku toimii ja mistä lataaja etsii. Jakelun tunnisteen muuttaminen ei lisää hakemistoa tuohon hakupolkuun, ja siksi toinen epäonnistuminen näyttää liittymättömältä ensimmäiseen.

Älä tartu ldd -työkaluun ladatussa suoritettavassa tiedostossa tavanomaisena ensimmäisenä askeleena. Sen oma käsikirja varoittaa, että se voi tietyissä olosuhteissa suorittaa ohjelman, ja epäluotettavan asentajan suorittaminen on täsmälleen se tapaus, jota varoitus koskee.

Miksi merkkijonon muokkaaminen ei auta

Käyttöjärjestelmän identiteetin väärentäminen muuttaa sitä, miten jokainen koneen ohjelma näkee itsensä. Paketinhallinta, tukityökalut ja muut sovellukset lukevat saman tiedoston, ja arvo, joka tyydyttää yhtä asentajaa, voi hämmentää jotain muuta kuukausia myöhemmin.

Isännän kirjastojen korvaaminen toisen jakelun tiedostoilla on pahempaa. Se voi rikkoa asiaankuulumatonta ohjelmistoa, se on näkymätön paketinhallinnalle, ja se vaatii ylläpitoplan, jota kukaan ei kirjoita. Näitä muutoksia ei oikeuta yksi rajoittava asentaja.

Jos tarkistus on todella tunnistusvirhe, ylläpitäjä voi vahvistaa sen ja kuvata tuetun korjauksen. Jos se ei ole virhe, tuettu polku on koonti alustallesi, eikä se vastaus muutu siksi, että merkkijonoa muokattiin.

Kirjoita raportti, jonka perusteella ylläpitäjä voi toimia

Kirjaa jakelu ja julkaisu, arkkitehtuuri, VPN:n julkaisu, täsmällinen hylätty ehto ja ensimmäinen ajonaikaisen ympäristön virhe, jos pääsit niin pitkälle. Merkitse, muutitko jotain, koska muutetun järjestelmän raportti on eri raportti.

Jätä alkuperäinen asentaja muuttamattomaksi ja kuvaile tarkistus sen sijaan että kiertäisit sitä. Tämä ero antaa ylläpitäjälle mahdollisuuden erottaa liian kapea tunnistussääntö todellisesta binääriyhteensopivuuden rajasta, ja ne ovat kaksi hyvin erilaista bugia ja kaksi hyvin erilaista korjausta.

Jos vastaus on, ettei alustaasi tueta, se on käyttökelpoinen tulos. Se käskee etsimään tuetun koontiversion sen sijaan että käyttäisit vielä yhden illan identiteettitiedostoihin, jotka eivät koskaan olleet ongelma.

Aiheeseen liittyvät artikkelit