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