我有一个打包为.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