Перайменаванне крыптабібліятэкі не выправіць стары кліент
Сімвалічная спасылка змяняе файл, які адкрывае загрузчык, а не інтэрфейс, пад які сабраны бінарнік. Праверце тып збою, перш чым чапаць любую бібліятэку.
Разбірайце памылку загрузчыка па парадку: які файл адсутнічае, якую архітэктуру выкарыстоўвае бінарнік, які сімвал ён шукаў і ці збой адбыўся да запуску працэсу або пасля. Гэта чатыры розныя праблемы, і сімвалічная спасылка вырашае толькі першую. Выкананне іх па парадку прадухіляе звычайны вынік, калі кліент запускаецца, а затым зрываецца на першым рукапацісканні. Спіс завяршаецца праверкай праз сапраўдны запускальнік, а не праз ручны тэст.
Запішыце шлях да выканальнага файла, яго архітэктуру і тэкст першай памылкі даслоўна, перш чым нешта змяняць.
Чатыры розныя збоі за адной памылкай
Адсутны агульны аб'ект — гэта праблема пошуку файла: загрузчык шукаў імя і нічога не знайшоў. Адсутны сімвал — гэта праблема інтэрфейсу: файл існуе, але не экспартуе тое, на што спасылаецца бінарнік. Няўзгодненасць версіі сімвала — той жа клас з большай колькасцю падрабязнасцяў. Непадтрыманы алгарытм, пра які паведамляюць пасля запуску, — гэта змена паводзін усярэдзіне бібліятэкі, якая паспяхова загрузілася. Кожная патрабуе рознага адказу, і толькі першая — пытанне назвы.
ldd на бінарнік і readelf -d на яго дынамічную секцыю паказваюць, што ён патрабуе, і гэтага звычайна дастаткова, каб аддзяліць праблему файла ад праблемы інтэрфейсу.
Што насамрэч патрабуе OpenSSL 3
Кіраўніцтва па пераходзе на OpenSSL 3 кажа пра гэта прама: праграмы, сабраныя пад папярэднія версіі, патрабуюць як мінімум перакампаноўкі, а сумяшчальнасць зыходнага коду не гарантуецца. Інтэрфейсы змяніліся, а некаторыя былі састарэлымі або выдаленымі. Псеўданім імені файла не можа выканаць перакампаноўку і не можа навучыць стары бінарнік новаму інтэрфейсу. Лінкаванне больш новай бібліятэкі пад выглядам старой назвы стварае праграму, якая можа запусціцца, а затым збаіць у куды менш відавочным месцы.
Гэта горш за чысты збой. Памылка загрузчыка адразу называе праблему, тады як позні збой унутры аперацыі выглядае як праблема сеткі або ўліковых даных і накіроўвае расследаванне ў няправільны бок.
Чаму дыстрыбутыўная бібліятэка — няправільнае месца
Замена дыстрыбутыўнай бібліятэкі дзеля аднаго кліента змяняе асяроддзе для кожнай праграмы на машыне, уключаючы абнаўленні бяспекі і ўсё, што залежыць ад існуючага інтэрфейсу. Капіраванне старой бібліятэкі побач з бінарнікам вузейшае, але ўсё роўна стварае залежнасць, якую хтосьці павінен падтрымліваць і латаць. Ні адзін з варыянтаў не з'яўляецца ўхваленым шляхам сумяшчальнасці, нават калі ён выглядае працаздольным у дзень прымянення. Глабальны псеўданім, пакінуты пасля эксперыменту, горшы, бо ніхто не памятае, навошта ён існуе.
Выкарыстоўвайце падтрымліваны кліент і набор залежнасцяў ад вытворцы для фактычнага выпуску АС, архітэктуры і шлюза. Фармат пакета, які калісьці камусьці падышоў, не вызначае правільны бягучы шлях, а архіўны рэцэпт — гэта сведчанне пра мінулае.
Правярайце запускальнік, а не запуск
Пасля падтрыманай замены праверце, што вызначае звычайны запускальнік: ldd на ўсталяваным выканальным файле, версіі бібліятэк, якія ён называе, і асяроддзе, якое перадае служба. Затым выканайце мэтавую аўтэнтыфікацыю і адну рэальную аперацыю. Ручны выклік са змененым асяроддзем даказвае толькі тое, што ваша абалонка можа яго запусціць. Карыстальнікі на самой справе запускаюць запускальнік, запіс працоўнага стала або сэрвіснае прылада.
Калі падтрыманай зборкі няма, спытайце ўладальніка VPN пра альтэрнатыву або шлях міграцыі. Маўклівая змена на іншы пратакол або здагадка, што кліент з вядомым імем вытворцы задаволіць шлюз, пераносіць збой замест таго, каб яго выправіць.
Калі часовы парадак сумяшчальнасці непазбежны, задокументуйце яго, абмяжуйце тым бінарнікам і выдаліце, калі з'явіцца падтрыманая зборка.