问题复现及原因分析
centos 下安装git,make 报错
$ cd /tmp
$ wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.30.2.tar.gz
$ tar -xvzf git-2.30.2.tar.gz
$ cd git-2.30.2/
$ ./configure
$ make
GIT_VERSION = 2.39.4
* new build flags
CC oss-fuzz/fuzz-commit-graph.o
In file included from ./commit-graph.h:4,
from oss-fuzz/fuzz-commit-graph.c:1:
./git-compat-util.h:1568:10: fatal error: zlib.h: No such file or directory
#include <zlib.h>
问题出在编译过程中找不到 zlib.h
这个头文件。zlib.h
是 zlib
库的一部分,zlib
是一个广泛使用的压缩库,很多项目都需要它来处理压缩数据。
解决
- 对于 Debian/Ubuntu 系统,你可以使用以下命令:
sudo apt-get install zlib1g-dev
- 对于 CentOS/RHEL 系统,你可以使用以下命令:
sudo yum install zlib-devel
- 对于 Fedora 系统,你可以使用以下命令:
sudo dnf install zlib-devel
- 对于 macOS,如果你使用 Homebrew,可以使用以下命令:
brew install zlib
注意⚠️
在安装zlib可能报错:
CentOS Linux 8 - AppStream 0.0 B/s | 0 B 00:00
Errors during downloading metadata for repository 'appstream':
- Curl error (6): Couldn't resolve host name for http://mirrorlist.centos.org/?release=8&arch=x86_64&repo=AppStream&infra=stock [Could not resolve host: mirrorlist.centos.org]
Error: Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist: Curl error (6): Couldn't resolve host name for http://mirrorlist.centos.org/?release=8&arch=x86_64&repo=AppStream&infra=stock [Could not resolve host: mirrorlist.centos.org]\
从错误信息来看,在尝试从 CentOS 8 的 AppStream 仓库下载元数据时遇到了问题。错误提示表明 yum
无法解析 mirrorlist.centos.org
的主机名 。
解决:
cd /etc/yum.repos.d/
依次运行以下命令
sudo sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
sudo sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
sudo yum update -y