Ubuntu 18.04LTS(银河麒麟V10桌面版) 离线安装 Git,并支持Http协议。
一、场景
一般而言,Ubuntu 安装一下Git,实在是很简单的,
apt install git
就好了。
即使是源码安装,也就是多装一些相关的插件:
sudo apt install make libssl-dev libghc-zlib-dev libcurl4-gnutls-dev libexpat1-dev gettext unzip
我这边是问题是,客户指定需要银河麒麟系统,ARM版本的。
机器到了之后,发现安装源不能用;打电话给银河麒麟客服,说试用版本不提供技术支持,需要转成企业版才行。
这个是公司采购的,本来采购流程就走了1个月才到货,再搞一个申请下去,一个月后项目都要结束了,还弄个球球噢。
花了两个半天,更新各种安装源,什么官方的、阿里云的、清华的、中科大的,都没用,提示不可信。
关键是也不提示证书的签名号,没本法更新对应的证书,哎,坑爹啊!
实在不行,只能全部用离线安装的模式了,就是相关插件比较多,还要注意插件的安装顺序。
参考了网上一堆资料,一步步尝试,用了两天时间,终于成功了,现整理出来,给大家做参考。
二、安装流程
1、OpenSSL
官网下载:https://www.openssl.org/source/
我是找的1.1.11版本,下载的。
#源文件目录 /usr/local/ openssl-1.1.1v.tar.gz #解压 tar zxf openssl-1.1.1v.tar.gz cd openssl-1.1.1v. #配置、编译、安装 ./config --prefix=/usr/local make -j4 sudo make install
2、curl
官网:https://curl.se/download.html
我这边用的 curl-8.4.0.tar.gz ,源文件目录 /usr/local/
tar zxf curl-8.4.0.tar.gz cd curl-8.4.0 # --with-ssl 参数设置为上一步中编译的open-ssl安装路径 ./configure --prefix=/usr/local --with-ssl=/usr/local # 结果如下 --> ... curl version: 8.4.0 SSL: **enabled (OpenSSL)** SSH: no (--with-{libssh,libssh2}) zlib: enabled brotli: no (--with-brotli) GSS-API: no (--with-gssapi) SSH: no (--with-{libssh,libssh2}) zlib: enabled brotli: no (--with-brotli) GSS-API: no (--with-gssapi) ... HTTP2: disabled (--with-nghttp2) HTTP3: disabled (--with-ngtcp2, --with-quiche) ESNI: no (--enable-esni) Protocols: DICT FILE FTP FTPS GOPHER **HTTP HTTPS** IMAP IMAPS POP3 POP3S RTSP SMB SMBS SMTP SMTPS TELNET TFTP
显示 SSL: enabled (OpenSSL) 和 最后一行中显示HTTP HTTPS 即表示 OK。
然后接着继续编译
make -j4
sudo make isntall
如果编译过程中出现如下错误
vtls/openssl.c:438:15: error: implicit declaration of function ‘RAND_egd’; did you mean ‘RAND_add’? [-Werror=implicit-function-declaration] int ret = RAND_egd(data->set.str[STRING_SSL_EGDSOCKET]?
是因为电脑里已经安装了openssl,将其卸载即可:
# ubuntu sudo apt-get remove libssl-dev
如果出现如下错误
checking run-time libs availability... failed
configure: error: one or more libs available at link-time are not available run-time. Libs used at link-time: -lssl -lcrypto -lz
则说明本机安装的ssl路径有问题,将其添加到环境变量即可
查看 /usr/local/openssl /usr/local/ssl /usr/local/lib64 下是否有相应的libssl.so库
已经发现 centos下动态库可能会装到 /usr/local/openssl 或 /usr/local/lib64 下
例如我的机器装到了 /usr/local 下,那么可执行文件在 /usr/local/bin/ 下, 动态库在 /usr/local/lib64 下,那么我将按照如下方式添加环境变量
echo "export PATH=\"\$PATH:/usr/local/bin\"" >> ~/.bashrc echo "export LD_LIBRARY_PATH=\"/usr/local/lib64\"" >> ~/.bashrc source ~/.bashrc ldconfig
3、gettext
网关地址:https://mirror.bjtu.edu.cn/gnu/gettext/
我这边用的 gettext-0.22.3.tar.gz 版本,源文件目录:/use/local/
tar -xzf gettext-0.22.3.tar.gz cd gettext--0.22.3/ ./configure make && make install
#其中/usr/local
为./configure
的默认安装地址ldconfig /usr/local/bin
4、Git
官网地址:https://mirrors.edge.kernel.org/pub/software/scm/git/
我这边没有用最新版本,用的项目中项匹配的版本:git-2.9.5.tar.gz,源文件目录:/use/local/
tar -xvf git-2.9.5.tar.gz cd git-2.9.5 ./configure --prefix=/usr/local/ make && make install #git路径加入到系统,profile 追加一下内容: export PATH=/usr/local/bin:$PATH
在git的 make 安装过程中,有提示系统的 Openssl1.0 版本的库文件冲突:
libssl.so 和 llibcrypto.so 对应版本需要从 OpenSSL 1.0 升级到 OpenSSL 1.1。
上面安装完之后,需要把系统之前的的 libssl.so 和 llibcrypto.so 对应的文件删掉,做软链连接到 OpenSSL1.1 对应的文件上。
直到顺利安装完,即可使用。
本人在银河麒麟V10桌面版上,成功使用。
注:文强哥精品集,祝各位使用愉快!