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