Име на дистрибуция, glibc или компилатор: какво проверява инсталаторът
Инсталатор, който отхвърля вашата производна дистрибуция, може да чете име на дистрибуция, версия на средата за изпълнение или компилатор. Само едно от тях решава дали двоичният файл може да работи.
Инсталаторът отпечатва “unsupported distribution”, вие редактирате един низ и той продължава, докато минута по-късно не се провали с грешка от зареждащия. Тази последователност е симптомът, който си струва да разпознаете: първият отказ беше проверка за разпознаване, а вторият е граница на съвместимост. Това са два различни проблема, които просто се появяват в един и същ терминал. Редактирането на проверката може само да ви премести от първия към втория.
Симптомът: инсталаторът спира на вашата производна дистрибуция
Скрипт, който чете име на дистрибуция и отказва да продължи, ви казва, че авторът му не е тествал вашата производна дистрибуция. Това е изявление за поддръжка, а не технически факт, и често е погрешно в смисъл, че пакетът би работил добре.
Проблемът започва, когато заобиколното решение стане план. Промяната на файл за идентичност прави проверката успешна и пакетът след това се зарежда или не се зарежда спрямо действително инсталираната среда за изпълнение. Ако се провали там, никакво допълнително редактиране на идентичността няма да помогне.
Затова полезният ход е да разберете какъв въпрос е задал инсталаторът и след това дали отговорът би имал значение. Това са две отделни разследвания и само второто предсказва дали пакетът ще работи.
Три версии, които хората наричат версия на системата
Изданието на дистрибуцията именува пакетирана среда. Версията на C библиотеката именува реализация на средата за изпълнение и нейното издание. Версията на компилатора именува верига от инструменти. В разговор хората наричат и трите “версия на системата”, но в инсталатор те не са взаимозаменяеми.
cat /etc/os-release ldd --version | head -1 gcc --version | head -1 uname -m
Предварително изградено приложение очаква средата за изпълнение, налична при свързването му. Смяната на компилатори на хоста не го свързва отново и по-нова верига от инструменти не променя нищо в символите на зареждащия, които двоичният файл изисква. Архитектурата има значение отново отделно, защото 32-битов пакет на 64-битова система се проваля по причини, които никой низ за версия не обяснява.
Пазете четирите изхода заедно с доклада. Събирането им отнема десет секунди и те отговарят на повечето въпроси, които поддържащият иначе би ви задал по имейл.
Четете грешката, не проверката
Първата грешка при стартиране е доказателството. Съобщение за липсващ споделен обект или за версия на символ, която зареждащият не може да удовлетвори, е проблем със зависимост от средата за изпълнение. Съобщение, което повтаря името на дистрибуцията, е отново проверката за разпознаване, на друго място.
документацията на динамичния linker описва как работи търсенето на библиотеки и къде търси зареждащият. Промяната на етикет на дистрибуция не добавя директория към този път за търсене и затова вторият отказ изглежда несвързан с първия.
Не посягайте към ldd върху изтеглен изпълним файл като обикновена първа стъпка. Собственото му ръководство предупреждава, че при някои обстоятелства може да изпълни програмата, а стартирането на недоверен инсталатор е точно случаят, за който е това предупреждение.
Защо редактирането на низа не помага
Фалшифицирането на идентичността на операционната система променя как всяка програма на машината вижда себе си. Мениджърите на пакети, инструментите за поддръжка и други приложения четат същия файл и стойност, която удовлетворява един инсталатор, може да обърка нещо друго месеци по-късно.
Замяната на библиотеките на хоста с файлове от друга дистрибуция е по-лошо. Тя може да счупи несвързан софтуер, невидима е за мениджъра на пакети и изисква план за поддръжка, който никой не записва. Такива промени не се оправдават от един ограничителен инсталатор.
Ако проверката наистина е дефект в разпознаването, поддържащият може да го потвърди и да опише поддържаната корекция. Ако не е дефект, поддържаният път е изграждане за вашата платформа и този отговор не се променя, защото низът е редактиран.
Напишете доклад, по който поддържащият може да действа
Запишете дистрибуцията и изданието, архитектурата, изданието на VPN, точното условие, което е било отхвърлено, и първата грешка от средата за изпълнение, ако сте стигнали дотам. Отбележете дали сте променили нещо, защото доклад от променена система е различен доклад.
Оставете оригиналния инсталатор непроменен и опишете проверката, вместо да я заобикаляте. Това разграничение позволява на поддържащия да отдели прекалено тясно правило за разпознаване от истинска граница на двоична съвместимост, което са два много различни бъга с две много различни поправки.
Ако отговорът е, че вашата платформа не се поддържа, това е използваем резултат. Той ви казва да търсите поддържана сборка, вместо да прекарате още една вечер върху файлове за идентичност, които никога не са били проблемът.