Я создал простой RPM на Fedora27, и он работал нормально.Он просто скопировал файлы из tar.gz в /usr/bin/.
Когда я попытался установить этот RPM на CentOS, я получил:
# 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
Так что я предположил, что мне нужно будет создатьRPM на CentOS.Но когда я делаю это, я получаю странное: «Нет такого файла или каталога», которого я не получаю на 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?
EDIT 1
Я добавил команду "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)
Редактировать 2 (решение)
Я заставил его работать.Мои исполняемые файлы - это скомпилированный C-код.Поэтому мне пришлось перекомпилировать все на CentOS и затем собрать rpm.Теперь он работает как на Fedora, так и на CentOS.