目标
要求打的rpm安装后自动安装到/usr/bin这种系统目录下,目录结构跟官方包要一样;
xxx.rpm
---- xxx.cpio
---- /usr/
---- bin/
---- lib/
---- share/
---- include/
安装rpm-build
yum install rpm-build
报错
Transaction check error:
file /etc/rpm/macros.ghc-srpm from install of redhat-rpm-config-9.1.0-88.el7.centos.noarch conflicts with file from package epel-release-6-8.noarch
Error Summary
-------------
解决
yum erase epel-release
再重新安装
生成目录,以及拷贝资源
# 新建用户
useradd rpmbuilder
# 会创建~/rpmbuild目录
[rpmbuilder@site104 ~]$ rpmbuild -ba postgres-xl.spec
error: failed to stat /home/rpmbuilder/postgres-xl.spec: No such file or directory
# 这个error不用管,目录已经生成
[rpmbuilder@site104 ~]$ ll
total 0
drwxr-xr-x 8 rpmbuilder rpmbuilder 89 Nov 9 14:27 rpmbuild
[rpmbuilder@site104 ~]$ cd rpmbuild/
[rpmbuilder@site104 rpmbuild]$ ll
total 0
drwxr-xr-x 2 rpmbuilder rpmbuilder 6 Nov 9 14:27 BUILD
drwxr-xr-x 2 rpmbuilder rpmbuilder 6 Nov 9 14:27 BUILDROOT
drwxr-xr-x 2 rpmbuilder rpmbuilder 6 Nov 9 14:27 RPMS
drwxr-xr-x 2 rpmbuilder rpmbuilder 6 Nov 9 14:27 SOURCES
drwxr-xr-x 2 rpmbuilder rpmbuilder 6 Nov 9 14:27 SPECS
drwxr-xr-x 2 rpmbuilder rpmbuilder 6 Nov 9 14:27 SRPMS
# 将tar.gz源码包放到相应目录
[rpmbuilder@site104 rpmbuild]$ cp /home/postgres-xl-10r1.1.tar.gz /home/rpmbuilder/rpmbuild/SOURCES/
[rpmbuilder@site104 rpmbuild]$
在SPECS/里创建并编辑spec文件
编写spec文件
Summary: gdal
Name: gdal
Version: 3.2.3
Release: 1
License: GPL
Group: Applications/Sound
Source: %{name}-%{version}.tar.gz
URL: http://www.kanq.com
Packager:BIGBOSS<2650032165@qq.com>
Vendor: K, Inc.
BuildRoot:%_topdir/BUILDROOT
%description
This gdal-3.2.3 had been changed by Kanq
%prep
rm -rf $RPM_BUILD_DIR/%{name}-%{version}
%setup -q
%build
./configure --prefix=/usr/ --with-proj=/usr/local/proj-6.3.2
make %{?_smp_mflags}
%install
rm -rf %{buildroot}
make install DESTDIR=%{buildroot}
#%post
#%postun
%files
%defattr(755,root,root,755)
/usr/bin/*
/usr/share/*
/usr/include/*
/usr/lib/*
%define __debug_install_post \
%{_rpmconfigdir}/find-debuginfo.sh %{?_find_debuginfo_opts} "%{_builddir}/%{?buildsubdir}"\
%{nil}
生成rpm包
rpmbuild -ba SPECS/gdal-3.2.3.spec
目录结构正确
试试吧,效果和别的rpm一样,把依赖解决了就可以用了
[root@master ~]# rpm -Uvh /home/rpmbuilder/rpmbuild/RPMS/x86_64/gdal-3.2.3-1.x86_64.rpm
error: Failed dependencies:
libproj.so.15()(64bit) is needed by gdal-3.2.3-1.x86_64
libstdc++.so.6(CXXABI_1.3.8)(64bit) is needed by gdal-3.2.3-1.x86_64
libstdc++.so.6(CXXABI_1.3.9)(64bit) is needed by gdal-3.2.3-1.x86_64
libstdc++.so.6(GLIBCXX_3.4.20)(64bit) is needed by gdal-3.2.3-1.x86_64
libstdc++.so.6(GLIBCXX_3.4.21)(64bit) is needed by gdal-3.2.3-1.x86_64
忽略依赖强制安装
[root@master ~]# rpm -Uvh /home/rpmbuilder/rpmbuild/RPMS/x86_64/gdal-3.2.3-1.x86_64.rpm --nodeps --force
Preparing... ################################# [100%]
Updating / installing...
1:gdal-3.2.3-1 ################################# [ 50%]
......