构建rpm包填坑笔记

构建rpm包填坑笔记

安装fcitx的依赖包
sudo yum install dnf-utils
sudo yum-builddep fcitx
安装make
CMake Error: CMake was unable to find a build program corresponding to “Unix Makefiles”. CMAKE_MAKE_PROGRAM is not set. You probably need to select a different build tool.
CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage
– Configuring incomplete, errors occurred!
See also “/home/dml/dml/repo/mbedtls/CMakeFiles/CMakeOutput.log”.

遇到上述报错,可能是你没有安装make.

sudo yum install make
C编译器报错
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- broken
The C compiler "/usr/bin/cc" is not able to compile a simple test program.

在cmake中指定编译器

%build
mkdir -p build
pushd build
cmake .. -DCMAKE_FORCE_C_COMPILER=gcc -DCMAKE_FORCE_CXX_COMPILER=g++ -DCMAKE_INSTALL_PREFIX=/usr
make VERBOSE=1 %{?_smp_mflags}
查看spec文件中各种宏的实际值

打包相关的配置保存在宏文件 (macrofiles) 中,默认使用 $HOME/rpmbuild 目录,用户配置文件保存在 $HOME/.rpmmacros;而制作包时的操作实际都在 topdir 指定的目录下,可以通过如下方式查看。

rpmbuild --showrc

--- 查看所有的配置文件顺序
$ rpmbuild --showrc | grep macros

--- 确认上述的根工作目录,两种方式相同
$ rpmbuild --showrc | grep ': _topdir'
$ rpm --eval '%_topdir'

--- 设置topdir变量,然后再次验证下,确认已经修改为目标目录
$ echo "%_topdir %{getenv:HOME}/rpm-maker" > ~/.rpmmacros
$ rpm --eval '%_topdir'
--- 也可以在制作rpm包时通过--define指定
$ rpmbuild --define '_topdir rpm-maker' -ba package.spec

spec文档中常用的几个宏(变量)

RPM_BUILD_DIR:    /usr/src/redhat/BUILD  
RPM_BUILD_ROOT:   /usr/src/redhat/BUILDROOT  
%{_sysconfdir}:   /etc  
%{_sbindir}:     /usr/sbin  
%{_bindir}:       /usr/bin  
%{_datadir}:      /usr/share  
%{_mandir}:       /usr/share/man  
%{_libdir}:       /usr/lib64  
%{_prefix}:       /usr  
%{_localstatedir}:   /usr/var  

%{_topdir} %{getenv:HOME}/rpmbuild
%{_builddir} %{_topdir}/BUILD
%{_rpmdir} %{_topdir}/RPMS
%{_sourcedir} %{_topdir}/SOURCES
%{_specdir} %{_topdir}/SPECS
%{_srcrpmdir} %{_topdir}/SRPMS
%{_buildrootdir} %{_topdir}/BUILDROOT

构建rpm包
rpmbuild [options] [spec文档|tarball包|源码包]  
安装卸载本地rpm包
sudo rpm -i * --replacefiles (有冲突时)
rpm -q -a | grep fcix (查询已安装的包)
rpm -e fcitx-* --nodeps (有依赖时,强制删除)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值