安装.rpm包时结果不一致



我有一个打包为.rpm.sh脚本来分发。我使用GitLab CI CD管道使用gitlab-ci.yml。我可以使用.spec.rpm中打包脚本,没有问题。

是当我安装.rpm(上传和下载后)在各种系统进行测试,并确保它做什么我期望它做。

因此,在.spec文件中,我指定我要在/usr/bin/myscript.sh中安装它,并在.spec文件中执行以下命令:

%build
%install
rm -rf %{buildroot}
mkdir -p $RPM_BUILD_ROOT/%{_prefix}/bin
install -m 755 -p $RPM_BUILD_DIR/myscript.sh $RPM_BUILD_ROOT/%{_prefix}/bin/

So totest我尝试在2个不同的容器中安装新创建的.rpm第一个是centos输出

[root@1235 /]# curl -O http://url/srpms/myscript-1.0-1.el7.src.rpm
% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
Dload  Upload   Total   Spent    Left  Speed
100  5773  100  5773    0     0   626k      0 --:--:-- --:--:-- --:--:--  626k
[root@1235 /]# ls
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var  myscript-1.0-1.el7.src.rpm
[root@1235 /]# rpm -iv myscript-1.0-1.el7.src.rpm 
myscript-1.0-1.el7.noarch
[root@1235 /]# rpm -ql xsoar*
myscript.sh
myscript.spec
[root@1235 /]# find . -type f -name "myscript.sh" 2>/dev/null
./root/rpmbuild/SOURCES/myscript.sh
[root@1235 /]#

正如您所看到的,脚本在安装本身创建的路径./root/rpmbuild/SOURCES/中结束,而不是预期的/usr/bin/


对于下一个容器,我使用相同的image/containergitlab-ci.yml用来打包.rpm
输出

[root@5704de76a68c /]# rpm -iv myscript-1.0-1.el7.src.rpm
myscript-1.0-1.el7.noarch
[root@5704de76a68c /]# rpm -ql xsoar*
package myscript-1.0-1.el7.src.rpm is not installed
[root@5704de76a68c /]# find . -type f -name "myscript.sh" 2>/dev/null
./root/rpmbuild/SOURCES/myscript.sh
[root@5704de76a68c /]#

类似的结果,但它显示.rpm is not installed


然后我尝试在使用gitlab-ci.yml创建后(在它被上传到任何repo进行分发之前)在同一实例/容器中安装.rpm,我确实得到了预期的输出结果

$ rpm -ivh $HOME/rpmbuild/RPMS/noarch/*.rpm
Preparing...                          ########################################
Updating / installing...
myscript-1.0-1.el7               ########################################
$ rpm -ql myscript
/usr/bin/myscript.sh

.spec的一部分

%prep
cp -fp %{SOURCE0} ./
%build
%install
rm -rf %{buildroot}
mkdir -p $RPM_BUILD_ROOT/%{_prefix}/bin
install -m 755 -p $RPM_BUILD_DIR/myscript.sh $RPM_BUILD_ROOT/%{_prefix}/bin/
%clean
rm -rf %{buildroot}

%files
%attr(755,root,root) %{_prefix}/bin/myscript.sh

找到问题。这当然是愚蠢的。src.rpm代替myscript.noarchrpm

最新更新