非root用户在RedHat安装Git:zlib.h依赖问题及解决咨询
非root用户在RedHat上编译Git:解决zlib.h找不到的问题
我来帮你搞定这个问题!既然你已经通过Anaconda拿到了zlib的依赖文件,核心就是要让Git的编译系统知道这些文件的位置,同时指定好安装目录。下面是一步步的实操步骤:
1. 下载并解压Git源码包
非root用户没法用系统包管理器直接安装,源码编译是最稳妥的方式。先获取Git的源码包(这里以最新稳定版2.45.1为例,你可以替换成需要的版本号):
wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.45.1.tar.gz tar -xzf git-2.45.1.tar.gz cd git-2.45.1
2. 配置编译参数(关键步骤!)
这一步要明确告诉编译器zlib头文件和库的位置,同时指定Git的安装目录到/home/foo/bin。直接执行下面的命令:
./configure --prefix=/home/foo/bin ZLIB_CFLAGS=-I/home/foo/anaconda2/include ZLIB_LIBS="-L/home/foo/anaconda2/lib -lz"
--prefix=/home/foo/bin:指定所有Git相关文件最终安装到这个目录,完全避开系统权限限制ZLIB_CFLAGS=-I/home/foo/anaconda2/include:告诉gcc去Anaconda的include目录找zlib.hZLIB_LIBS="-L/home/foo/anaconda2/lib -lz":指定链接时要用到的zlib库文件路径和库名称(-lz对应libz.so)
如果配置成功,终端最后会输出类似Configured successfully.的提示,不会再出现找不到zlib.h的错误。
3. 编译并安装Git
配置没问题后,开始编译(用多核心加速更快):
make -j$(nproc)
-j$(nproc)会自动调用你机器上所有可用的CPU核心,大幅提升编译速度。
编译完成后执行安装:
make install
执行完这一步,Git的二进制文件、文档就都会被放到/home/foo/bin目录下了,比如/home/foo/bin/git就是主程序。
4. 让终端能直接调用Git
现在需要把/home/foo/bin加到你的PATH环境变量里,这样不用输入完整路径就能用git命令。编辑你的bash配置文件:
echo 'export PATH="/home/foo/bin:$PATH"' >> ~/.bashrc
然后重新加载配置让它生效:
source ~/.bashrc
最后测试一下:
git --version
如果能正常输出Git的版本号,说明安装完全成功啦!
额外小提示
如果之后遇到其他依赖缺失(比如curl、openssl),都可以用同样的思路,在./configure时加上对应的CFLAGS和LIBS参数,比如curl的话就是:
./configure --prefix=/home/foo/bin ZLIB_CFLAGS=-I/home/foo/anaconda2/include ZLIB_LIBS="-L/home/foo/anaconda2/lib -lz" CURL_CFLAGS=-I/home/foo/anaconda2/include CURL_LIBS="-L/home/foo/anaconda2/lib -lcurl"
举一反三就行~
内容的提问来源于stack exchange,提问作者Greg Dougherty
相关产品推荐
相关产品推荐

