Instalator wypisuje “unsupported distribution”, poprawiasz jeden ciąg znaków i leci dalej, aż minutę później zawodzi z błędem loadera. Ta sekwencja to objaw, który warto rozpoznać: pierwsza porażka była testem rozpoznania, a druga to granica zgodności. To dwa różne problemy, które przypadkiem pojawiają się w tym samym terminalu. Zmiana testu może cię tylko przenieść z pierwszego na drugi.

Objaw: instalator zatrzymuje się na twojej pochodnej dystrybucji

Skrypt, który czyta nazwę dystrybucji i odmawia kontynuacji, mówi ci, że jego autor nie testował twojej pochodnej. To deklaracja wsparcia, nie fakt techniczny, i często jest błędna w tym sensie, że pakiet działałby dobrze.

Kłopot zaczyna się, gdy obejście staje się planem. Zmiana pliku tożsamości sprawia, że test przechodzi, a pakiet ładuje się albo nie ładuje wobec środowiska uruchomieniowego, które jest faktycznie zainstalowane. Jeśli tam zawiedzie, żadna dalsza edycja tożsamości nie pomoże.

Pożytecznym krokiem jest więc ustalenie, o co pytał instalator, a potem ustalenie, czy odpowiedź miałaby znaczenie. To dwa osobne śledztwa i tylko drugie przewiduje, czy pakiet będzie działać.

Trzy wersje, które ludzie nazywają wersją systemu

Wydanie dystrybucji nazywa spakowane środowisko. Wersja biblioteki C nazywa implementację środowiska uruchomieniowego i jego wydanie. Wersja kompilatora nazywa łańcuch narzędzi. W rozmowie ludzie nazywają wszystkie trzy “wersją systemu”, a w instalatorze nie są wymienne.

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

Wcześniej zbudowana aplikacja oczekuje środowiska uruchomieniowego, które istniało w chwili jej linkowania. Wymiana kompilatorów na hoście nie linkuje jej ponownie, a nowszy łańcuch narzędzi niczego nie zmienia w symbolach loadera, których żąda binarka. Architektura znów liczy się osobno, bo pakiet 32-bitowy w systemie 64-bitowym zawodzi z powodów, których nie wyjaśnia żaden ciąg wersji.

Zachowaj cztery wyniki razem z raportem. Ich zebranie zajmuje dziesięć sekund i odpowiadają na większość pytań, które opiekun zadałby ci mailem.

Czytaj błąd, nie test

Pierwszy błąd uruchomienia jest dowodem. Komunikat o brakującym obiekcie wspólnym albo o wersji symbolu, której loader nie może spełnić, to problem zależności od środowiska uruchomieniowego. Komunikat powtarzający nazwę dystrybucji to znowu test rozpoznania, w innym miejscu.

dokumentacja dynamicznego konsolidatora opisuje, jak działa wyszukiwanie bibliotek i gdzie szuka loader. Zmiana etykiety dystrybucji nie dodaje katalogu do tej ścieżki wyszukiwania, dlatego druga porażka wygląda na niezwiązaną z pierwszą.

Nie sięgaj po ldd na pobranym pliku wykonywalnym jako zwykły pierwszy krok. Jego własny podręcznik ostrzega, że w pewnych okolicznościach może uruchomić program, a uruchamianie niezaufanego instalatora to dokładnie ten przypadek, którego dotyczy to ostrzeżenie.

Dlaczego edycja ciągu nie pomaga

Fałszowanie tożsamości systemu operacyjnego zmienia to, jak każdy program na maszynie widzi sam siebie. Menedżery pakietów, narzędzia wsparcia i inne aplikacje czytają ten sam plik, a wartość, która zadowala jeden instalator, może miesiące później zdezorientować coś innego.

Zastępowanie bibliotek hosta plikami z innej dystrybucji jest gorsze. Może zepsuć niezwiązane oprogramowanie, jest niewidoczne dla menedżera pakietów i wymaga planu utrzymania, którego nikt nie spisze. Tych zmian nie usprawiedliwia jeden restrykcyjny instalator.

Jeśli test naprawdę jest defektem rozpoznania, opiekun może to potwierdzić i opisać wspieraną poprawkę. Jeśli nie jest defektem, wspieraną drogą jest kompilacja dla twojej platformy, a ta odpowiedź nie zmienia się dlatego, że ciąg został zmieniony.

Napisz raport, na którym opiekun może działać

Zapisz dystrybucję i wydanie, architekturę, wydanie VPN, dokładny warunek, który został odrzucony, oraz pierwszy błąd środowiska uruchomieniowego, jeśli tak daleko zaszedłeś. Zaznacz, czy coś zmieniłeś, bo raport ze zmienionego systemu to inny raport.

Zostaw oryginalny instalator bez zmian i opisz test, zamiast go obchodzić. To rozróżnienie pozwala opiekunowi oddzielić zbyt wąską regułę rozpoznania od prawdziwej granicy zgodności binarnej, a to dwa bardzo różne błędy z dwiema bardzo różnymi poprawkami.

Jeśli odpowiedź brzmi, że twoja platforma nie jest wspierana, to użyteczny wynik. Mówi ci, żeby szukać wspieranej kompilacji, zamiast spędzać kolejny wieczór na plikach tożsamości, które nigdy nie były problemem.

Powiązane artykuły