Linux:RPM 打包记录

版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/qq_16849135/article/details/78030372

常见问题:

    Q1、No Such File or Directory.

    A1: 不同版本的Linux上会有不同版本的rpmbuild,它定义的%buildroot 路径 有可能会不同,而且对于有些版本,在spec文件中指定的%buildroot 并不会起作用,使得package过程中需要的sources所在目录定位出错。一般在低版本的rpmbuild上能成功package的spec文件在其他较高版本上使用时会出现上述错误。

    我们可以在spec文件的 %install 块中把打包所需的文件和目录 拷贝或移动 到现有版本指定的路径下。

  例如:

rpm 4.11中:%buildroot = %{_buildrootdir}/XXXX = %{_topdir}/BUILDROOT/%{name}-%{version}

rpm 4.3中 :%buildroot = spec文件中指定,一般 = %{_topdir}/buildroot/%{name}-%{version}

可以使用如下方式进行区分:(注:本人使用redhat5和7)

  (uname -r | grep -q "el7"   #查看Linux版本
  if [[ $? -eq 0 ]]           #如果是radhat7,则进行文件的移动;如果不是,则不进行任何操作
  then
    mv $(dirname $(dirname %buildroot))/buildroot/* %buildroot/
  fi
  )

  A2:指定的中间目录的路径和package时要求的不一致,更改保存文件的路径一致即可。

 

  Q2:file xxx  conflict  with xxx。

  A1:spec文件中的%files块中指定文件或目录时使用的权限和其他文件中指定的不一致,解决方法如下:

    1、使用 ll 命令查看冲突文件的权限,

    2、在spec文件的%file块中修改冲突文件的权限和上一步查看到的一致即可:

       %attr(555,root,sys) %dir /opt/hp93000/soc_hvmapi

spec文件:

    %file  设置应该捆绑到 RPM 中的文件,并且能够可选地设置捆绑文件的许可权和其它信息

      %attr(755,root,sys)    dir / file     #将会覆盖文件或者目录的所有者和权限,有时候可以设置括号中的内容和原来的权限相同来解决安装rpm包时该目录/文件 冲突的问题

查看RPM包中的内容:

    rpm -qpl  packagename


猜你喜欢

转载自blog.csdn.net/qq_16849135/article/details/78030372
今日推荐