那是RHEL和Debian的分包策略喜欢分成所谓的“运行环境”和“构建环境”,实际上ArchLinux之类的包管理策略就不用这种了,就一个zlib包,相当于同时包含了Debian的zlib和zlib-devel。言归正传,以Debian/Ubuntu为例,按照他们一贯的分包策略,zlib只包含运行环境,也就是大概libz.so文件,一些手册,一些LISCENSE文件之类的东西而zlib-devel包含构建环境的依赖,一般就是/usr/include/下的头文件,以及pkgconfig的配置文件zlib.pc文件,只有编译程序的时候你的程序依赖zlib可能才需要用这个包你安装的如果是二进制包,比如nginx-full,那么自然不需要这些-devel包,如果你要在本地编译安装,那肯定需要devel包,否则会告诉你找不到头文件之类的错误。实际上我们检查nginx包的依赖,确实是不会有devel包的:# apt depends nginx nginx Depends: libc6 (>= 2.28) Depends: libcrypt1 (>= 1:4.1.0) Depends: libpcre3 Depends: libssl1.1 (>= 1.1.1) Depends: zlib1g (>= 1:1.1.4) Depends: lsb-base (>= 3.0-6) Depends: adduser Conflicts: nginx-common Conflicts: nginx-core Replaces: nginx-common Replaces: nginx-core
那是RHEL和Debian的分包策略喜欢分成所谓的“运行环境”和“构建环境”,实际上ArchLinux之类的包管理策略就不用这种了,就一个zlib包,相当于同时包含了Debian的zlib和zlib-devel。
言归正传,以Debian/Ubuntu为例,按照他们一贯的分包策略,zlib只包含运行环境,也就是大概libz.so文件,一些手册,一些LISCENSE文件之类的东西
而zlib-devel包含构建环境的依赖,一般就是/usr/include/下的头文件,以及pkgconfig的配置文件zlib.pc文件,只有编译程序的时候你的程序依赖zlib可能才需要用这个包
你安装的如果是二进制包,比如
nginx-full
,那么自然不需要这些-devel包,如果你要在本地编译安装,那肯定需要devel包,否则会告诉你找不到头文件之类的错误。实际上我们检查
nginx
包的依赖,确实是不会有devel包的: