Terminali huripoti kwa furaha toleo la OpenSSL, na mti wa chanzo bado unashindikana na ujumbe kuhusu vichwa vya crypto vinavyokosekana. Kauli zote mbili ni kweli kwa wakati mmoja, kwa sababu chombo cha muda wa utekelezaji na seti ya pembejeo za ujenzi husafirishwa tofauti. Fanya ukaguzi huu nne kwa mpangilio: vifurushi vilivyosakinishwa, matokeo ya ugunduzi, njia za utafutaji, na kisha ikiwa chanzo chenyewe kinaendana. Simama kwenye ukaguzi wa kwanza unaoeleza kushindikana badala ya kubandika orodha ya zamani ya utegemezi.

Muda wa utekelezaji na pembejeo za ujenzi ni vifurushi tofauti

Usambazaji hugawanya OpenSSL katika kifurushi cha muda wa utekelezaji kinachotoa maktaba inayoshirikiwa na chombo cha mstari wa amri, na kifurushi cha maendeleo kinachotoa vichwa, majina ya kuunganisha bila toleo na metadata ya pkg-config. Kusakinisha cha kwanza hakisakinishi cha pili, na mkusanyaji anahitaji cha pili tu.

Angalia kilichopo kweli badala ya kile unachokumbuka kuwa ulisakinisha. Katika mifumo inayotokana na Debian kifurushi cha maendeleo kwa kawaida ni libssl-dev, wakati muda wa utekelezaji ni kifurushi cha maktaba chenye toleo pamoja na binary ya openssl.

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

Amri ya kwanza inaonyesha ni kipi kati ya vitatu kilichosakinishwa, ya pili inaripoti toleo ambalo mfumo wa ujenzi utagundua kupitia pkg-config, na ya tatu inaripoti toleo la muda wa utekelezaji. Mstari unaokosekana katika matokeo ya kwanza hueleza hitilafu mara moja. Tofauti ya toleo kati ya ya pili na ya tatu ni tatizo lingine, na kwa kawaida inamaanisha kuwa usakinishaji mbili zinashindana.

Soma matokeo ya ugunduzi ya ujenzi wenyewe

Kushindikana kwingi huonekana katika kumbukumbu ya usanidi ikiwa utaisoma kabla ya muhtasari. Moduli ya FindOpenSSL ya CMake huripoti saraka ya include na maktaba gani ilizopata, na inashindikana kwa ujumbe mahususi pale sehemu inayohitajika haipo.

Hakikisha ni toleo gani la moduli ambalo mradi unatumia, kwa sababu nakala iliyofungwa ndani ya mti wa chanzo inaweza kuwa na tabia tofauti na ile inayotolewa na CMake iliyosakinishwa. Kisha soma orodha ya sehemu: mradi unaoomba Crypto pekee hauhitaji maktaba ya SSL, na ule unaoomba SSL utashindikana ikiwa sehemu moja tu ya kifurushi cha maendeleo ipo.

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

Amri ya kwanza husanidi upya kutoka mwanzo, na ya pili huonyesha matokeo yaliyohifadhiwa kwenye akiba, ikiwa ni pamoja na saraka yoyote ya mzizi au njia ya maktaba ambayo moduli ilisimama. Ikiwa akiba inaelekeza kwenye kiambishi cha zamani kutoka jaribio la awali, futa saraka ya ujenzi na usanidi upya badala ya kuhariri thamani kwa mkono. Maingizo ya zamani kwenye akiba ni sababu ya kawaida ya kushindikana kunakodumu baada ya marekebisho sahihi.

Elekeza ujenzi kwenye usakinishaji sahihi, kwa ufinyu

Wakati OpenSSL iliyoidhinishwa ipo nje ya njia ya kawaida ya utafutaji, FindOpenSSL huandika OPENSSL_ROOT_DIR kama dokezo kwa ujenzi huo mahususi. Katika mifumo inayofanana na Unix pia hushauriana na pkg-config, kwa hiyo PKG_CONFIG_PATH inayofaa inaweza kusaidia bila kubadilisha chochote kimataifa.

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

Amri ya kwanza inaweka dokezo kwenye saraka moja ya ujenzi, na ya pili inaonyesha ni maktaba gani inayoshirikiwa ambayo binary inayotokana itapakia wakati wa utekelezaji. Ujenzi unaounganisha na kiambishi kilichokusudiwa na binary inayopakia kingine ni tatizo la njia ya muda wa utekelezaji, si tatizo la ugunduzi, na linahitaji uamuzi kuhusu rpath au usanidi wa kipakiaji badala ya bendera nyingine ya usanidi.

Weka chaguo hizi kuwa za ndani kwa ujenzi. Kubadilisha maktaba za mfumo au kuhariri faili za pkg-config za kimataifa ili kuridhisha mradi mmoja ni njia ambayo dawati linalofanya kazi linakuwa lililovunjika. Saraka ya ujenzi inayorekodi kiambishi inaweza kuzalishwa upya; mabadiliko ya mashine yote ni tukio la msaada linalosubiri mradi unaofuata. Futa saraka ya ujenzi unapobadilisha dokezo, ili akiba isiweze kutunza jibu la zamani.

Jua wakati tatizo liko kwenye chanzo chenyewe

Hatua ya usanidi iliyofanikiwa inathibitisha tu kwamba ukaguzi umekamilika. Ujumlishaji bado unaweza kukataa API ambayo chanzo kinatarajia, na uunganishaji bado unaweza kushindikana kwa alama inayokosekana. Hifadhi hitilafu mahususi ya kwanza ya kila hatua, kwa sababu zile za baadaye kwa kawaida ni matokeo.

OpenSSL 3 ilitangaza kuwa za kizamani na kuondoa violesura kadhaa ambavyo wateja wa zamani wa VPN hutumia moja kwa moja, kwa hiyo mti wa chanzo wa enzi hiyo unaweza kuhitaji mabadiliko halisi badala ya njia mpya ya include. Ikiwa watunzaji wanasaidia toleo la sasa, tumia hilo. Ikiwa hawataki, uamuzi ni wa yule anayemiliki huduma, si wa utafutaji wa jina la zamani la faili la maktaba.

Sehemu za hiari za dawati pia zina mahitaji yao. Lengo la mstari wa amri linalosanidiwa safi haisemi chochote kuhusu ikiwa seti ya zana za GUI na kihariri zitajengwa, kwa hiyo chukua orodha ya zamani ya vifurushi vya Qt kama historia na si kama vipimo. Angalia chaguo za marekebisho ya chanzo yenyewe kuhusu violesura vipi vimewezeshwa kwa msingi. Kisha jenga tu kile unachohitaji, kwa sababu kila utegemezi wa hiari ni tatizo lingine la ugunduzi linalosubiri kutokea.

Makala zinazohusiana