La terminalo volonte raportas version de OpenSSL, kaj la fonta arbo ankoraŭ malsukcesas kun mesaĝo pri mankantaj kriptaj kaplinioj. Ambaŭ asertoj veras samtempe, ĉar la plenumila ilo kaj la aro de konstruaj enigoj estas liverataj aparte. Trapasu ĉi tiujn kvar kontrolojn laŭ ordo: instalitaj pakaĵoj, eligo de trovado, serĉaj vojoj, kaj poste ĉu la fonto mem kongruas. Haltu ĉe la unua, kiu klarigas la malsukceson, anstataŭ alglui malnovan liston de dependaĵoj.

Plenumilo kaj konstruaj enigoj estas malsamaj pakaĵoj

Distribuo dividas OpenSSL en plenumilan pakaĵon, kiu donas la komunan bibliotekon kaj la komandlinian ilon, kaj evoluigan pakaĵon, kiu donas kapliniojn, senversiajn ligajn nomojn kaj pkg-config-metadatenojn. Instali la unuan ne instalas la duan, kaj la tradukilo bezonas nur la duan.

Kontrolu, kio efektive ĉeestas, anstataŭ kion vi memoras esti instalinta. En sistemoj devenantaj de Debian la evoluiga pakaĵo kutime estas libssl-dev, dum la plenumilo estas versiigita biblioteka pakaĵo plus la dosiero openssl.

dpkg -l | grep -E 'libssl-dev|libssl3|openssl'
pkg-config --modversion openssl
openssl version

La unua komando montras, kiu el la tri estas instalita, la dua raportas la version, kiun la konstrua sistemo trovos per pkg-config, kaj la tria raportas la plenumilan version. Mankanta linio en la unua eligo tuj klarigas la eraron. Versia malkongruo inter la dua kaj la tria estas alia problemo, kaj kutime ĝi signifas, ke du instalaĵoj konkurasa.

Legu la propran trovan eligon de la konstruo

Plej multaj malsukcesoj videblas en la agorda protokolo, se vi legas ĝin antaŭ la resumo. La modulo FindOpenSSL de CMake raportas, kiun inkludan dosierujon kaj kiujn bibliotekojn ĝi trovis, kaj ĝi malsukcesas kun specifa mesaĝo, kiam mankas postulata komponanto.

Konfirmu, kiun version de la modulo la projekto uzas, ĉar enpakigita kopio ene de la fonta arbo povas konduti alie ol tiu liverata kun la instalita CMake. Poste legu la komponantan liston: projekto, kiu petas nur Crypto, ne bezonas la SSL-bibliotekon, kaj tiu, kiu petas SSL, malsukcesos, se nur parto de la evoluiga pakaĵo ĉeestas.

cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
grep -i -E 'openssl|ssl' build/CMakeCache.txt

La unua komando reagordas de nulo, kaj la dua montras la kaŝmemorajn rezultojn, inkluzive de iu ajn radika dosierujo aŭ biblioteka vojo, sur kiu la modulo fiksiĝis. Se la kaŝmemoro montras al malnova prefikso el antaŭa provo, forigu la konstruan dosierujon kaj agordu denove, anstataŭ redakti valorojn permane. Malfreŝaj kaŝmemoraj eroj estas ofta kaŭzo de malsukceso, kiu postvivas ĝustan riparon.

Direktu la konstruon al la ĝusta instalaĵo, mallarĝe

Kiam aprobita OpenSSL loĝas ekster la defaŭlta serĉa vojo, FindOpenSSL dokumentas OPENSSL_ROOT_DIR kiel indikon por ĝuste tiu konstruo. En Unix-similaj sistemoj ĝi ankaŭ konsultas pkg-config, do taŭga PKG_CONFIG_PATH povas helpi sen ŝanĝi ion ajn tutmonde.

cmake -S . -B build -DOPENSSL_ROOT_DIR=/opt/openssl-3.2 -DCMAKE_BUILD_TYPE=Release
ldd build/vpn_client | grep -i ssl

La unua komando limigas la indikon al unu konstrua dosierujo, kaj la dua montras, kiun komunan bibliotekon la rezulta dosiero ŝutos dum plenumado. Konstruo, kiu ligiĝas al la celata prefikso, kaj dosiero, kiu ŝutas alian, estas plenumila voja problemo, ne trova problemo, kaj ĝi postulas decidon pri rpath aŭ ŝargila agordo anstataŭ plian agordan flagon.

Tenu ĉi tiujn elektojn lokaj al la konstruo. Anstataŭigi sistemajn bibliotekojn aŭ redakti tutmondajn pkg-config-dosierojn por kontentigi unu projekton estas la maniero, kiel funkcianta labortablo fariĝas rompita. Konstrua dosierujo, kiu registras la prefikson, estas reproduktebla; tutmaŝina ŝanĝo estas subtena okazaĵo atendanta la sekvan projekton. Forigu la konstruan dosierujon, kiam vi ŝanĝas la indikon, por ke la kaŝmemoro ne povu reteni la malnovan respondon.

Sciu, kiam la fonto estas la problemo

Sukcesa agorda paŝo pruvas nur, ke la kontroloj finiĝis. Tradukado ankoraŭ povas rifuzi API-on, kiun la fonto atendas, kaj ligado ankoraŭ povas malsukcesi pro mankanta simbolo. Konservu la unuan specifan eraron de ĉiu etapo, ĉar la postaj kutime estas sekvoj.

OpenSSL 3 malrekomendis kaj forigis plurajn interfacojn, kiujn pli malnovaj VPN-klientoj uzas rekte, do fonta arbo el tiu epoko eble bezonas verajn ŝanĝojn anstataŭ novan inkludan vojon. Se la prizorgantoj subtenas aktualan eldonon, uzu ĝin. Se ne, la decido apartenas al tiu, kiu posedas la servon, ne al serĉado de pli malnova biblioteka dosiernomo.

Laŭvolaj labortablaj komponantoj ankaŭ havas siajn postulojn. Komandlinia celo, kiu agordiĝas pure, diras nenion pri tio, ĉu la GUI-ilarkompleto kaj la redaktilo konstruiĝos, do traktu malnovan liston de Qt-pakaĵoj kiel historion, ne kiel specifon. Kontrolu la proprajn opciojn de la fonta revizio pri tio, kiuj interfacoj estas ŝaltitaj defaŭlte. Poste konstruu nur tion, kion vi bezonas, ĉar ĉiu laŭvola dependaĵo estas plia trova problemo atendanta okazi.

Rilataj artikoloj