【解决】rpm 包安装成功,但目录不存在问题
开发平台:RedHat 8
一、问题描述
[root@proxy ~]# rpmbuild -ba /root/rpmbuild/SPECS/nginx.spec # rpmbuild 制作 .rpm 包
[root@proxy ~]# yum -y install /root/rpmbuild/RPMS/x86_64/nginx-1.22.1-1.x86_64.rpm # 安装 .rpm包
...
[root@proxy ~]# ls /usr/local/
bin etc games include inotify-tools-3.13 lib lib64 libexec maven sbin share src tomcat tools
问题:使用自建.rpm
包,配置安装至 /usr/local/nginx/
下。但 yum
安装提示安装成功,却在本地查询无该目录!
- 二次确认安装结果与一次结果一致。
二、环境概述
[root@proxy ~]# yum -y install rpm-build # rpmbuild 工具包
[root@proxy ~]# vim /root/rpmbuild/SPECS/nginx.spec # nginx.spec
Name:nginx
...
Source:nginx-1.22.1.tar.gz
...
%files
%doc
/usr/local/nginx/* # 设置安装目录
...
[root@proxy ~]# rpmbuild -ba /root/rpmbuild/SPECS/nginx.spec
检查 rpm 数据库
[root@proxy ~]# rpm -qlp /root/rpmbuild/RPMS/x86_64/nginx-1.22.1-1.x86_64.rpm
/usr/lib/.build-id
/usr/lib/.build-id/25
/usr/lib/.build-id/25/fd32a8bee216c57c1b4a569c7c74df723eeb3f
/usr/local/nginx/conf
/usr/local/nginx/conf/fastcgi.conf
/usr/local/nginx/conf/fastcgi.conf.default
/usr/local/nginx/conf/fastcgi_params
/usr/local/nginx/conf/fastcgi_params.default
/usr/local/nginx/conf/koi-utf
/usr/local/nginx/conf/koi-win
/usr/local/nginx/conf/mime.types
/usr/local/nginx/conf/mime.types.default
/usr/local/nginx/conf/nginx.conf
/usr/local/nginx/conf/nginx.conf.default
/usr/local/nginx/conf/scgi_params
/usr/local/nginx/conf/scgi_params.default
/usr/local/nginx/conf/uwsgi_params
/usr/local/nginx/conf/uwsgi_params.default
/usr/local/nginx/conf/win-utf
/usr/local/nginx/html
/usr/local/nginx/html/50x.html
/usr/local/nginx/html/index.html
/usr/local/nginx/logs
/usr/local/nginx/sbin
/usr/local/nginx/sbin/nginx
问题追溯:rpm 数据库与实际文件系统不一致。即 RPM数据库记录已安装文件,但实际文件系统中该目录被删除或未创建。
三、解决方法
[root@proxy ~]# rpm --rebuilddb # 重构rpm数据库
[root@proxy ~]# yum -y install /root/rpmbuild/RPMS/x86_64/nginx-1.22.1-1.x86_64.rpm
或
[root@proxy ~]# yum -y reinstall /root/rpmbuild/RPMS/x86_64/nginx-1.22.1-1.x86_64.rpm