我已经在Fedora27上创建了一个简单的RPM,并且运行良好。它只是将文件从tar.gz复制到/ usr / bin/。
当我尝试在CentOS上安装此RPM时,我得到了:
# rpm -i RPMS/x86_64/my_rpm-0.0-5.x86_64.rpm --force
error: Failed dependencies:
libc.so.6(GLIBC_2.26)(64bit) is needed by my_rpm-0.0-5.x86_64
所以我认为我将需要在CentOS上创建RPM。 但是,当我这样做时,我会感到很奇怪:“没有这样的文件或目录”,我没有使用Fedora27。这是我的规格文件的草图:
%define _topdir %(pwd)
%define name my_rpm
%define release 5
%define version 0.0
%define buildroot %{_topdir}/%{name}-%{release}-root
BuildRoot: %{buildroot}
Summary: my_rpm
License: -
Name: %{name}
Release: %{release}
Version: %{version}
Source: %{name}-%{version}-%{release}.tar.gz
Prefix: /usr
Group: Tools
%description
This is my_rpm spec file
%prep
%setup -q -n %(arch)/%{name}-%{version}
%install
install -D my_app -t %{buildroot}/usr/bin/my_rpm/
%files
/usr/bin/my_rpm/*
当我尝试为其构建RPM时,会得到:
# rpmbuild -v -bb --clean SPECS/bpf.spec
+ install -D app -t /root/rpmbuild/BUILDROOT/my_rpm-0.0-5.x86_64/usr/bin/my_rpm/
install: failed to access '/root/rpmbuild/BUILDROOT/my_rpm-0.0-5.x86_64/usr/bin/my_rpm/': No such file or directory
相同的SPEC可以在Fedora27上顺利运行。 我应该在我的spec文件中对其进行哪些更改,以便使其在Fedora27和CentOS7上均可使用?还是我可以使用Glibc解决我最初的问题?
我在安装过程中添加了“ mkdir -p ...”命令,构建成功,但是仍然出现相同的错误,我需要Glibc 2.6。 我不明白的是为什么在构建过程中会显示:
Requires: libc.so.6()(64bit) libc.so.6(GLIBC_2.14)(64bit) libc.so.6(GLIBC_2.2.5)(64bit) libc.so.6(GLIBC_2.26)(64bit) libc.so.6(GLIBC_2.3)(64bit) libc.so.6(GLIBC_2.3.4)(64bit) libc.so.6(GLIBC_2.7)(64bit) libc.so.6(GLIBC_2.9)(64bit) libelf.so.1()(64bit) libelf.so.1(ELFUTILS_1.0)(64bit) rtld(GNU_HASH)
我明白了。我的可执行文件是编译的C代码。因此,我不得不在CentOS上重新编译所有内容,然后构建rpm。现在,它可以在Fedora和CentOS上使用。