修改规范文件spec
RPM包的spec
文件包含有关包本身的重要信息,比如指明所需的依赖项和文件。
首先下载Atom包到当前目录:
$rpmrebuild -enp atom.x86_64.rpm
-e
,是--edit-specfile
的简写版本,告诉程序我们要编辑包的specfile;-n
,是--notest-install
的简写版本,它修改了程序的行为,因此生成的rpm不会在构建过程结束时自动安装。
使用-p
或者 --package
选项,我们指定要使用实际的“.rpm”包文件作为重建的基础,而不是使用已安装的rpm。
执行上面的命令后,默认文本编辑器将会打开spec文件。
我们现在需要做的是添加Requires子句。 以便包括缺少的依赖项:
Requires: lsb-core-noarch Requires: GConf2 # Here is our extra dependency Requires: libXss.so.1()(64bit) Requires: libsecret-1.so.0()(64bit)
同时,我们可以修改包版本,以便将修改的版本与官方版本区分开来。
将
Release: 0.1
改成
Release: 0.1_custom
完成后,我们保存并关闭文件。
将询问我们是否要继续和构建修改后的包:
Do you want to continue ? (y/N)
将开始构建新的rpm。
新的RPM将位于$home/rpmbuild/rpms/x86_64 /
目录中:
$ls $HOME/rpmbuild/RPMS/x86_64/ atom-1.27.0-0.1_custom.x86_64.rpm
验证是否已正确添加依赖项:
$rpm -qRp $HOME/rpmbuild/RPMS/x86_64/atom-1.27.0-0.1_custom.x86_64.rpm GConf2 libXss.so.1()(64bit) libsecret-1.so.0()(64bit) lsb-core-noarch rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 rpmlib(PayloadIsXz) <= 5.2-1
gconf2
现在包含在包依赖项的列表中。
使用dnf命令尝试安装新的rpm包:
[...] ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: atom x86_64 1.27.0-0.1_custom @commandline 99 M Installing dependencies: GConf2 x86_64 3.2.6-20.fc28 fedora 1.0 M at x86_64 3.1.20-10.fc28 fedora 80 k Transaction Summary ================================================================================ Install 19 Packages [...]
依赖项已经包含在列表中。
安装RPMREBuild
安装“RPMREBuild”包,在默认的Fedora存储库中可用:
$sudo dnf install rpmrebuild
修复Atom包中缺少依赖项
在本教程中,我们将修复“Atom”编辑器rpm包中的一个错误。
但是,在最小环境中安装Atom时,会出现下面问题:
在尝试启动编辑器时,报错:
/usr/share/atom/atom: error while loading shared libraries: libgconf-2.so.4: cannot open shared object file: No such file or directory
gconf2
包提供的libgconf-2.so.4
共享对象,使用以下Linux命令确认:
$dnf whatprovides libgconf-2.so.4 GConf2-3.2.6-20.fc28.i686 : A process-transparent configuration system Repo : fedora Matched from: Provide : libgconf-2.so.4
让我们通过在spec文件中添加缺少的依赖项来解决此错误。
日期:2020-07-07 20:56:27 来源:oir作者:oir