要制作RPM
包,我们需要编写.spec
文件,然后安装rpm-build
为我们编译并生成rpm
包
- 安装
rpm-build
- 创建目录结构
1
|
mkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
|
- 将要编译的源码包下载到
SOURCES
目录
- 编写
.spec
文件
.spec
文件建议放在SPECS
目录中
下面是主机大师
中pure-ftpd
软件的rpm包.spec
文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
cat > ~/rpmbuild/SPECS/pure-ftpd.spec << EOF
Name: pure-ftpd # 软件包名称
Version: 1.0.49 # 版本
Release: 1%{?dist} # 不用管,照写
Summary: pure-ftpd 1.0.49 # 简介
Group: Applications/Internet # 软件包分类
License: GPLv3+ # 协议
URL: https://www.hws.com # 软件包主页
Packager: hws # 维护者
Source0: ${pureftpd_filename}.tar.gz # 编译软件包时依赖的源码包名称,就是你放入`SOURCES`目录中的软件包
BuildRoot: %_topdir/BUILDROOT # 编译软件包时以哪个目录为根,这里表示以`BUILDROOT`为根
BuildRequires: gcc,make # 编译前依赖哪些包
Requires: openssl-devel,zlib-devel # 安装时依赖哪些包
%description # 描述
pure-ftpd 1.0.49 build for hws.com
%prep # 编译前的操作,这里一般做准备工作,例如解压源码包
tar zxf \$RPM_SOURCE_DIR/${pureftpd_filename}.tar.gz
%build # 编译阶段,这里一般写`configure`中的编译参数
cd ${pureftpd_filename}
./configure --prefix=${pureftpd_location} \
--with-puredb \
--with-quotas \
--with-cookie \
--with-virtualhosts \
--with-diraliases \
--with-sysquotas \
--with-ratios \
--with-altlog \
--with-paranoidmsg \
--with-shadow \
--with-welcomemsg \
--with-throttling \
--with-uploadscript \
--with-language=english \
--with-ftpwho \
--with-tls
make %{?_smp_mflags}
%install # 安装阶段,你要把什么东西释放到系统,就通过install指令安装到`BUILDROOT`目录,因为有些东西不是编译时产生的
cd ${pureftpd_filename}
make install DESTDIR=%{buildroot}
install -D -m 0755 \$RPM_SOURCE_DIR/pure-ftpd \$RPM_BUILD_ROOT/etc/init.d/pure-ftpd
install -D -m 0644 \$RPM_SOURCE_DIR/pure-ftpd.conf \$RPM_BUILD_ROOT/${pureftpd_location}/etc/pure-ftpd.conf
install -D -m 0600 \$RPM_SOURCE_DIR/pureftpd.passwd \$RPM_BUILD_ROOT/${pureftpd_location}/etc/pureftpd.passwd
install -D -m 0600 \$RPM_SOURCE_DIR/pureftpd.pdb \$RPM_BUILD_ROOT/${pureftpd_location}/etc/pureftpd.pdb
install -D -m 0600 \$RPM_SOURCE_DIR/pure-ftpd.pem \$RPM_BUILD_ROOT/etc/ssl/private/pure-ftpd.pem
install -D -m 0644 \$RPM_SOURCE_DIR/README \$RPM_BUILD_ROOT/${pureftpd_location}/var/run/README
%post
chkconfig --add pure-ftpd >/dev/null 2>&1 # 安装后阶段
/etc/init.d/pure-ftpd start
%preun # 卸载前阶段
chkconfig --del pure-ftpd >/dev/null 2>&1
/etc/init.d/pure-ftpd stop
%files # 指定哪些文件会被释放到系统,这些文件都是再`BUILDROOT`中的
${pureftpd_location}
/etc/init.d/pure-ftpd
/etc/ssl/private/pure-ftpd.pem
%doc
%clean # 编译后的清理工作
rm -fr %{buildroot}
EOF
|
- 编译并生成
rpm
包
1
|
rpmbuild -bb ~/rpmbuild/SPECS/pure-ftpd.spec
|