ټرمینل په خوښۍ سره د OpenSSL یوه نسخه راپور کوي، او د سرچینې ونه لا هم د ورکو کریپټو سرلیکونو په اړه په پیغام سره ناکامېږي۔ دواړه خبرې په یو وخت سمې دي، ځکه چې د اجرا وخت وسیله او د جوړولو د ننوتلو ټولګه جلا جلا رسول کېږي۔ دا څلور کتنې په ترتیب سره وکړئ: نصب شوې کڅوړې، د موندنې تولید، د لټون لارې، او بیا دا چې سرچینه پخپله سمه ده که نه۔ د زاړه تړاوونو لیست د نښلولو پر ځای په لومړنۍ کتنه ودرېږئ چې ناکامي تشریح کوي۔

د اجرا وخت او د جوړولو ننوتل بېلې کڅوړې دي

یو ویشل شوی نظام OpenSSL په دوه برخو وېشي: د اجرا وخت کڅوړه چې شریکه کتابتونه او د کرښې امر وسیله برابروي، او پراختیایي کڅوړه چې سرلیکونه، بې نسخې د تړلو نومونه او د pkg-config میټاډاټا برابروي۔ لومړۍ نصبول دوهمه نه نصبوي، او کمپایلر یوازې دوهمې ته اړتیا لري۔

هغه څه وګورئ چې واقعاً شته، نه هغه څه چې یاد یې لرئ نصب کړي۔ په Debian ولاړو نظامونو کې پراختیایي کڅوړه معمولاً libssl-dev ده، خو د اجرا وخت بیا نسخه لرونکې کتابتون کڅوړه او openssl بائنري ده۔

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

لومړی امر ښیي چې له درېیو کوم یو نصب دی، دوهم هغه نسخه راپور کوي چې د جوړولو نظام به د pkg-config له لارې ومومي، او درېیم د اجرا وخت نسخه راپور کوي۔ په لومړي تولید کې ورکه کرښه سمدلاسه تېروتنه تشریح کوي۔ د دوهم او درېیم ترمنځ د نسخې توپیر بله ستونزه ده، او معمولاً معنا یې دا ده چې دوه نصبونه سیالي کوي۔

د جوړولو خپل د موندنې تولید ولولئ

ډېری ناکامۍ په تنظیم لاګ کې ښکاري که یې د لنډیز مخکې ولولئ۔ د CMake د FindOpenSSL ماډل راپور کوي چې کوم include لارښود او کوم کتابتونونه یې وموندل، او کله چې اړین برخه نه وي، په ځانګړي پیغام سره ناکامېږي۔

تایید کړئ چې پروژه کومه ماډل نسخه کاروي، ځکه چې د سرچینې ونې دننه بسته شوې کاپي ممکن له هغې سره چې د نصب شوي CMake سره راځي توپیر ولري۔ بیا د برخو لیست ولولئ: هغه پروژه چې یوازې Crypto غواړي SSL کتابتون ته اړتیا نه لري، او هغه چې SSL غواړي هغه به ناکامه شي که یوازې یوه برخه پراختیایي کڅوړه موجوده وي۔

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

لومړی امر له صفر څخه بیا تنظیموي، او دوهم په کاش کې ساتل شوي پایلې ښیي، په شمول هر هغه ریښه لارښود یا کتابتون لار چې ماډل پرې ودرېد۔ که کاش د پخواني هڅې زاړه مختاړي ته اشاره وکړي، د ارزښتونو په لاس سمولو پر ځای د جوړولو لارښود ړنګ کړئ او بیا تنظیم کړئ۔ زاړه کاش ننوتنې د هغې ناکامۍ عام لامل دي چې له سم اصلاح وروسته هم پاتې کېږي۔

جوړول په نریو حدودو کې سم نصب ته واستوئ

کله چې تصویب شوی OpenSSL د پخواني لټون لارې بهر وي، FindOpenSSL OPENSSL_ROOT_DIR د همدې ځانګړي جوړولو لپاره د اشارې په توګه ثبتوي۔ په Unix ته ورته نظامونو کې pkg-config ته هم ګوري، نو مناسب PKG_CONFIG_PATH کولای شي په نړیواله کچه هېڅ نه بدلولو سره مرسته وکړي۔

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

لومړی امر اشاره یوې جوړولو لارښود ته محدودوي، او دوهم ښیي چې پایله لرونکې بائنري به د اجرا وخت کې کومه شریکه کتابتونه پورته کړي۔ هغه جوړول چې له موخه لرونکي مختاړي سره تړل کېږي او هغه بائنري چې بل پورته کوي د اجرا وخت د لارې ستونزه ده، نه د موندنې ستونزه، او د بل تنظیم بیرغ پر ځای د rpath یا د پورته کوونکي تنظیم پرېکړه غواړي۔

دا غوراوي د جوړولو لپاره سیمه ایز وساتئ۔ یوې پروژې د خوښولو لپاره د نظام کتابتونونه بدلول یا نړیوال pkg-config فایلونه سمول هغه لار ده چې یو کاري ډیسکټاپ خراب ډیسکټاپ کېږي۔ هغه جوړولو لارښود چې مختاړی ثبتوي بیا تولیدېدونکی دی؛ په ټول ماشین کې بدلون د بلي پروژې په تمه یوه ملاتړ پېښه ده۔ کله چې اشاره بدلوئ جوړولو لارښود ړنګ کړئ، ترڅو کاش زاړه ځواب ونه ساتي۔

پوه شئ چې کله ستونزه په سرچینه کې ده

بریالۍ تنظیم مرحله یوازې دا ثابتوي چې کتنې بشپړې شوې۔ کمپایل لا هم کولای شي هغه API رد کړي چې سرچینه یې تمه لري، او تړل لا هم کولای شي د ورک شوي سمبول له امله ناکام شي۔ د هر پړاو لومړنۍ ځانګړې تېروتنه وساتئ، ځکه چې وروستنۍ معمولاً پایلې وي۔

OpenSSL 3 څو هغه انټرفیسونه چې زاړه VPN کليانټونه یې مستقیم کاروي زاړه اعلان کړل او لرې کړل، نو د هغه دورې د سرچینې ونه ممکن د نوي include لارې پر ځای ریښتیني بدلونونه وغواړي۔ که ساتونکي اوسنی خپرونه ملاتړ کوي، هغه وکاروئ۔ که نه، پرېکړه د هغه چا ده چې خدمت لري، نه د زاړه کتابتون د فایل نوم لټون۔

اختیاري ډیسکټاپ برخې هم خپلې اړتیاوې لري۔ هغه د کرښې امر موخه چې پاک تنظیمېږي د دې په اړه هېڅ نه وایي چې آیا د GUI وسیلو ټولګه او سمونکی به جوړ شي، نو زاړه Qt کڅوړه لیست تاریخ وګڼئ نه مشخصات۔ په سرچینې بیاکتنه کې د هغې خپلو انتخابونو کې وګورئ چې کوم انټرفیسونه په پخواني ډول فعال دي۔ بیا یوازې هغه څه جوړ کړئ چې ورته اړتیا لرئ، ځکه چې هر اختیاري تړاو د رامنځته کېدو په تمه بله د موندنې ستونزه ده۔

اړوندې مقالې