ಟರ್ಮಿನಲ್ ಸಂತೋಷದಿಂದ 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 ಪ್ಯಾಕೇಜ್ ಪಟ್ಟಿಯನ್ನು ವಿಶೇಷಣೆಯಲ್ಲ, ಇತಿಹಾಸ ಎಂದು ಪರಿಗಣಿಸಿ. ಯಾವ ಇಂಟರ್ಫೇಸ್ಗಳು ಡಿಫಾಲ್ಟ್ ಆಗಿ ಸಕ್ರಿಯವಾಗಿವೆ ಎಂದು ಮೂಲ ಪರಿಷ್ಕರಣೆಯ ಸ್ವಂತ ಆಯ್ಕೆಗಳಲ್ಲಿ ಪರಿಶೀಲಿಸಿ. ನಂತರ ಬೇಕಾದದ್ದನ್ನು ಮಾತ್ರ ನಿರ್ಮಿಸಿ, ಏಕೆಂದರೆ ಪ್ರತಿ ಐಚ್ಛಿಕ ಅವಲಂಬನೆಯೂ ಸಂಭವಿಸಲು ಕಾಯುತ್ತಿರುವ ಇನ್ನೊಂದು ಡಿಸ್ಕವರಿ ಸಮಸ್ಯೆ.

ಸಂಬಂಧಿತ ಲೇಖನಗಳು