RPM包管理与nginx包结构分析

问题记录

关键概念

RPM包管理基础

仅下载RPM包而不安装

使用--downloadonly--downloaddir参数可以仅下载包而不安装:

$ sudo yum --downloadonly --downloaddir=./ install nginx
上次元数据过期检查:1:02:21 前,执行于 2025年11月13日 星期四 14时49分10秒。
依赖关系解决。
======================================================================================================================================================================
 软件包                                      架构                             版本                                          仓库                                 大小
======================================================================================================================================================================
安装:
 nginx                                       x86_64                           2:1.20.1-22.el9_6.3                           appstream                            36 k
安装依赖关系:
 nginx-core                                  x86_64                           2:1.20.1-22.el

参数说明

查看下载的RPM包

$ ls -l
总用量 644
-rw-r--r--. 1 root root  37077 11月 13 15:51 nginx-1.20.1-22.el9_6.3.x86_64.rpm
-rw-r--r--. 1 root root 580062 11月 13 15:51 nginx-core-1.20.1-22.el9_6.3.x86_64.rpm
-rw-r--r--. 1 root root   9790 11月 13 15:51 nginx-filesystem-1.20.1-22.el9_6.3.noarch.rpm
-rw-r--r--. 1 root root  24225 11月 13 15:51 rocky-logos-httpd-90.16-1.el9.noarch.rpm

下载的包包括:

查看RPM包内部结构

使用rpm2cpiocpio命令可以在不安装的情况下查看RPM包内容:

$ rpm2cpio <package.rpm> | cpio -itv

命令说明

nginx包结构分析

nginx主包内容

$ rpm2cpio nginx-1.20.1-22.el9_6.3.x86_64.rpm | cpio -itv
-rwxr-xr-x   1 root     root          564 Jun 25 22:23 ./usr/bin/nginx-upgrade
-rw-r--r--   1 root     root          651 Jun 25 22:25 ./usr/lib/systemd/system/nginx.service
-r--r--r--   1 root     root         1305 Jun 25 22:25 ./usr/share/man/man3/nginx.3pm.gz
-rw-r--r--   1 root     root         2047 Jun 25 22:23 ./usr/share/man/man8/nginx-upgrade.8.gz
-rw-r--r--   1 root     root         2522 Jun 25 22:25 ./usr/share/man/man8/nginx.8.gz
-rw-r--r--   1 root     root         3332 Jun 25 22:23 ./usr/share/nginx/html/404.html
-rw-r--r--   1 root     root         3404 Jun 25 22:23 ./usr/share/nginx/html/50x.html
 drwxr-xr-x   1 root     root            0 Jun 25 22:25 ./usr/share/nginx/html/icons
 lrwxrwxrwx   1 root     root           30 Jun 25 22:25 ./usr/share/nginx/html/icons/poweredby.png -> ../../../pixmaps/poweredby.png
 lrwxrwxrwx   1 root     root           25 Jun 25 22:25 ./usr/share/nginx/html/index.html -> ../../testpage/index.html
 -rw-r--r--   1 root     root          368 Jun 25 22:23 ./usr/share/nginx/html/nginx-logo.png
 lrwxrwxrwx   1 root     root           14 Jun 25 22:25 ./usr/share/nginx/html/poweredby.png -> nginx-logo.png
 lrwxrwxrwx   1 root     root           37 Jun 25 22:25 ./usr/share/nginx/html/system_noindex_logo.png -> ../../pixmaps/system-noindex-logo.png
 -rw-r--r--   1 root     root          198 May 25  2021 ./usr/share/vim/vimfiles/ftdetect/nginx.vim
 -rw-r--r--   1 root     root           29 May 25  2021 ./usr/share/vim/vimfiles/ftplugin/nginx.vim
 -rw-r--r--   1 root     root          250 May 25  2021 ./usr/share/vim/vimfiles/indent/nginx.vim
 -rw-r--r--   1 root     root       135957 May 25  2021 ./usr/share/vim/vimfiles/syntax/nginx.vim

nginx主包主要包含:

nginx-core核心包内容

$ rpm2cpio nginx-core-1.20.1-22.el9_6.3.x86_64.rpm | cpio -itv
-rw-r--r--   1 root     root          261 Jun 25 22:23 ./etc/logrotate.d/nginx
-rw-r--r--   1 root     root         1077 Jun 25 22:25 ./etc/nginx/fastcgi.conf
-rw-r--r--   1 root     root         1077 Jun 25 22:25 ./etc/nginx/fastcgi.conf.default
-rw-r--r--   1 root     root         1007 Jun 25 22:25 ./etc/nginx/fastcgi_params
-rw-r--r--   1 root     root         1007 Jun 25 22:25 ./etc/nginx/fastcgi_params.default
-rw-r--r--   1 root     root         2837 Jun 25 22:25 ./etc/nginx/koi-utf
-rw-r--r--   1 root     root         2223 Jun 25 22:25 ./etc/nginx/koi-win
-rw-r--r--   1 root     root         5231 Jun 25 22:25 ./etc/nginx/mime.types
-rw-r--r--   1 root     root         5231 Jun 25 22:25 ./etc/nginx/mime.types.default
-rw-r--r--   1 root     root         2334 Jun 25 22:25 ./etc/nginx/nginx.conf
-rw-r--r--   1 root     root         2656 Jun 25 22:25 ./etc/nginx/nginx.conf.default
-rw-r--r--   1 root     root          636 Jun 25 22:25 ./etc/nginx/scgi_params
-rw-r--r--   1 root     root          636 Jun 25 22:25 ./etc/nginx/scgi_params.default
-rw-r--r--   1 root     root          664 Jun 25 22:25 ./etc/nginx/uwsgi_params
-rw-r--r--   1 root     root          664 Jun 25 22:25 ./etc/nginx/uwsgi_params.default
-rw-r--r--   1 root     root         3610 Jun 25 22:25 ./etc/nginx/win-utf
 drwxr-xr-x   1 root     root            0 Jun 25 22:25 ./usr/lib/.build-id
 drwxr-xr-x   1 root     root            0 Jun 25 22:25 ./usr/lib/.build-id/27
 lrwxrwxrwx   1 root     root           26 Jun 25 22:25 ./usr/lib/.build-id/27/8bd5e36737f33332255b443d7c93770a56180c -> ../../../../usr/sbin/nginx
 drwxr-xr-x   1 root     root            0 Jun 25 22:25 ./usr/lib64/nginx/modules
 -rwxr-xr-x   1 root     root      1329024 Jun 25 22:25 ./usr/sbin/nginx
 drwxr-xr-x   1 root     root            0 Jun 25 22:25 ./usr/share/doc/nginx-core
 -rw-r--r--   1 root     root       311503 May 25  2021 ./usr/share/doc/nginx-core/CHANGES
 -rw-r--r--   1 root     root           49 May 25  2021 ./usr/share/doc/nginx-core/README
 -rw-r--r--   1 root     root          739 Jun 25 22:25 ./usr/share/doc/nginx-core/README.dynamic
 drwxr-xr-x   1 root     root            0 Jun 25 22:25 ./usr/share/licenses/nginx-core
 -rw-r--r--   1 root     root         1397 May 25  2021 ./usr/share/licenses/nginx-core/LICENSE
 drwxr-xr-x   1 root     root            0 Jun 25 22:25 ./usr/share/nginx/modules
 drwxrwx---   1 root     root            0 Jun 25 22:25 ./var/lib/nginx
 drwxrwx---   1 root     root            0 Jun 25 22:25 ./var/lib/nginx/tmp
 drwx--x--x   1 root     root            0 Jun 25 22:25 ./var/log/nginx

nginx-core包包含核心功能:

包结构总结

文件系统布局

nginx包遵循Linux文件系统标准布局:

包之间的关系

待深入研究

参考资料