【Linux】制作RPM安装包的正确方式

目标

要求打的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%]
......
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值