這是一台滿舊的機器,大概 10 年前吧。同事想要 git clone 時,出現了失敗問題,追蹤一下是機器的 openssl 過舊,由於機器有他的任務在,不好意思亂更新系統資源,怕爆!所以採用 tarball 的安裝方式。
openssl 太舊時,連用 wget/curl 去下載 https 來源時都會失敗的,只好靠 http 或是 scp 搬東西進去。
$ lsb_release -aDistributor ID: RedHatEnterpriseServerDescription: Red Hat Enterprise Linux Server release 5.3 (Tikanga)Release: 5.3Codename: Tikanga$ openssl versionOpenSSL 0.9.8e-fips-rhel5 01 Jul 2008
只好挑個 /opt/tarball 安裝啦,沒想到要編譯 openssl 又會碰到 perl 版本不夠新:
$ wget http://www.cpan.org/src/5.0/perl-5.10.0.tar.gz$ cd ~/perl-5.10.0$ ./configure.gnu --prefix=/opt/tarball$ make -j4 install
接著再安裝個 zlib ,採用 static 方式方便後續大家使用:
$ wget http://zlib.net/zlib-1.2.11.tar.gz$ cd ~/zlib-1.2.11$ ./configure --prefix=/opt/tarball --static$ make install
編譯 openssl:
$ wget http://www.openssl.org/source/openssl-1.1.1k.tar.gz
$ cd ~/openssl-OpenSSL_1_1_1k
$ PATH=/opt/tarball/bin:$PATH ./config --prefix=/opt/tarball$ make -j4 install
編譯 openssh 工具包:https://github.com/openssh/openssh-portable/releases
$ cd ~/openssh-portable-V_8_6_P1$ autoreconf$ LD_LIBRARY_PATH=/opt/tarball/lib:$LD_LIBRARY_PATH ./configure --prefix=/opt/tarball/ --with-ssl-dir=/opt/tarball$ LD_LIBRARY_PATH=/opt/tarball/lib:$LD_LIBRARY_PATH make -j4 install$ file /opt/tarball/bin/ssh/opt/tarball/bin/ssh: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.9, stripped
接著偷懶拉 code 方式:
$ GIT_SSH_COMMAND="LD_LIBRARY_PATH=/opt/tarball/lib:$LD_LIBRARY_PATH /opt/tarball/bin/ssh" git clone ...
或是在環境變數添加好:
LD_LIBRARY_PATH=/opt/tarball/lib:$LD_LIBRARY_PATH
PATH=/opt/tarball/bin:$PATH
搞定!
沒有留言:
張貼留言