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桌面版上,成功使用。 

 注:文强哥精品集,祝各位使用愉快!

posted @ 2023-10-30 17:48  Java365  阅读(1805)  评论(0编辑  收藏  举报