Pam mae’r gorchymyn openssl yn gweithio ond mae adeiladu’r VPN yn methu
Nid yw deuaidd openssl sy’n gweithio yn dweud dim am bennawduron na llyfrgelloedd cysylltu. Gwiriwch y pecyn datblygu, pensaernïaeth y targed a log darganfod yr adeiladwaith.
Mae’r derfynell yn adrodd fersiwn OpenSSL yn hapus, ac mae coeden y ffynhonnell yn dal i fethu â neges am bennawduron crypto ar goll. Mae’r ddau ddatganiad yn wir ar unwaith, oherwydd caiff offeryn amser rhedeg a set o fewnbynnau adeiladu eu cludo ar wahân. Ewch drwy’r pedwar gwiriad hyn yn eu trefn: pecynnau sydd wedi’u gosod, allbwn darganfod, llwybrau chwilio, ac yna a yw’r ffynhonnell ei hun yn gydnaws. Stopiwch ar yr un cyntaf sy’n esbonio’r methiant yn lle gludo hen restr ddibyniaethau.
Mae amser rhedeg a mewnbynnau adeiladu yn becynnau gwahanol
Mae dosbarthiad yn rhannu OpenSSL yn becyn amser rhedeg sy’n darparu’r llyfrgell a rennir a’r teclyn llinell orchymyn, ac yn becyn datblygu sy’n darparu pennawduron, enwau cysylltu heb fersiwn a metadata pkg-config. Nid yw gosod y cyntaf yn gosod yr ail, a dim ond yr ail sydd ei angen ar y casglwr.
Gwiriwch beth sydd yno mewn gwirionedd yn hytrach na’r hyn ry’ch yn cofio ei osod. Ar systemau sy’n deillio o Debian y pecyn datblygu yw libssl-dev fel arfer, tra bod amser rhedeg yn becyn llyfrgell fersiynog ynghyd â’r deuaidd openssl.
dpkg -l | grep -E 'libssl-dev|libssl3|openssl' pkg-config --modversion openssl openssl version
Mae’r gorchymyn cyntaf yn dangos pa un o’r tri sydd wedi’i osod, mae’r ail yn adrodd y fersiwn y bydd y system adeiladu yn ei ddarganfod drwy pkg-config, ac mae’r trydydd yn adrodd fersiwn amser rhedeg. Mae llinell ar goll yn yr allbwn cyntaf yn esbonio’r gwall ar unwaith. Mae anghysondeb fersiwn rhwng yr ail a’r trydydd yn broblem wahanol, ac fel arfer mae’n golygu bod dau osodiad yn cystadlu.
Darllenwch allbwn darganfod yr adeiladwaith ei hun
Mae’r rhan fwyaf o fethiannau i’w gweld yn log ffurfweddu os ydych yn ei ddarllen cyn y crynodeb. Mae modiwl FindOpenSSL CMake yn adrodd pa gyfeiriad cynnwys a pha lyfrgelloedd a ganfu, ac mae’n methu â neges benodol pan fo cydran ofynnol ar goll.
Cadarnhewch pa fersiwn modiwl y mae’r prosiect yn ei ddefnyddio, oherwydd gall copi wedi’i blygu o fewn coeden y ffynhonnell ymddwyn yn wahanol i’r un a gludir gyda’r CMake sydd wedi’i osod. Yna darllenwch y rhestr cydrannau: nid oes angen llyfrgell SSL ar brosiect sy’n gofyn am Crypto yn unig, a bydd un sy’n gofyn am SSL yn methu os dim ond rhan o’r pecyn datblygu sydd yno.
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release grep -i -E 'openssl|ssl' build/CMakeCache.txt
Mae’r gorchymyn cyntaf yn ailffurfweddu o’r dechrau, ac mae’r ail yn dangos y canlyniadau sydd wedi’u cache, gan gynnwys unrhyw gyfeiriad gwraidd neu lwybr llyfrgell y setlodd y modiwl arno. Os yw’r cache yn pwyntio at hen ragddodiad o ymgais flaenorol, dilëwch y cyfeiriad adeiladu ac ailffurfweddwch yn lle golygu gwerthoedd â llaw. Mae cofnodion cache hen ffasiwn yn achos cyffredin o fethiant sy’n goroesi cywiriad cywir.
Cyfeiriwch yr adeiladwaith at y gosodiad cywir, yn gyfyng
Pan fydd OpenSSL cymeradwy yn byw y tu allan i’r llwybr chwilio rhagosodedig, mae FindOpenSSL yn dogfennu OPENSSL_ROOT_DIR fel awgrym ar gyfer yr adeiladwaith penodol hwnnw. Ar systemau tebyg i Unix mae hefyd yn ymgynghori â pkg-config, felly gall PKG_CONFIG_PATH addas helpu heb newid dim yn fyd-eang.
cmake -S . -B build -DOPENSSL_ROOT_DIR=/opt/openssl-3.2 -DCMAKE_BUILD_TYPE=Release ldd build/vpn_client | grep -i ssl
Mae’r gorchymyn cyntaf yn cwmpasu’r awgrym i un cyfeiriad adeiladu, ac mae’r ail yn dangos pa lyfrgell a rennir y bydd y deuaidd canlyniadol yn ei llwytho wrth redeg. Mae adeiladwaith sy’n cysylltu â’r rhagddodiad a fwriadwyd a deuaidd sy’n llwytho un arall yn broblem llwybr amser rhedeg, nid yn broblem darganfod, ac mae angen penderfyniad rpath neu ffurfweddiad llwythydd yn lle baner ffurfweddu arall.
Cadwch y dewisiadau hyn yn lleol i’r adeiladwaith. Amnewid llyfrgelloedd system neu olygu ffeiliau pkg-config byd-eang i fodloni un prosiect yw’r ffordd y mae desg sy’n gweithio yn troi’n un wedi torri. Mae cyfeiriad adeiladu sy’n cofnodi’r rhagddodiad yn ailadroddadwy; mae newid ar draws y peiriant yn ddigwyddiad cymorth sy’n aros am y prosiect nesaf. Dilëwch y cyfeiriad adeiladu pan fyddwch yn newid yr awgrym, fel na all y cache gadw’r hen ateb.
Gwybyddwch pryd y mae’r ffynhonnell yn broblem
Nid yw cam ffurfweddu llwyddiannus yn profi ond bod y gwiriadau wedi’u cwblhau. Gall casglu barhau i wrthod API y mae’r ffynhonnell yn ei ddisgwyl, a gall cysylltu barhau i fethu ar symbol ar goll. Cadwch y gwall penodol cyntaf o bob cam, oherwydd mae’r rhai diweddarach fel arfer yn ganlyniadau.
Gwnaeth OpenSSL 3 ddatgan yn hen ffasiwn a dileu sawl rhyngwyneb y mae cleientiaid VPN hŷn yn eu defnyddio’n uniongyrchol, felly efallai y bydd angen newidiadau go iawn ar goeden ffynhonnell o’r cyfnod hwnnw yn hytrach na llwybr cynnwys newydd. Os yw’r cynhalwyr yn cefnogi rhyddhâd cyfredol, defnyddiwch ef. Os nad ydyn nhw, mae’r penderfyniad yn perthyn i bwy bynnag sy’n berchen ar y gwasanaeth, nid i chwiliad am enw ffeil llyfrgell hŷn.
Mae gan gydrannau desg dewisol eu gofynion eu hunain hefyd. Nid yw targed llinell orchymyn sy’n ffurfweddu’n lân yn dweud dim am a fydd y pecyn offer GUI a’r golygydd yn adeiladu, felly triniwch hen restr becynnau Qt fel hanes yn hytrach nag fel manyleb. Gwiriwch opsiynau’r adolygiad ffynhonnell ei hun ar gyfer pa ryngwynebau sydd wedi’u galluogi’n rhagosodedig. Yna adeiladwch yn unig yr hyn sydd ei angen arnoch, oherwydd mae pob dibyniaeth ddewisol yn broblem ddarganfod arall yn aros i ddigwydd.