一步步制作RPM包
来源:互联网 发布:xalhar哈萨克音乐软件 编辑:程序博客网 时间:2024/05/01 15:08
- useradd ibuler
- su - ibuler
- rpmbuild --showrc | grep topdir
- -14: _builddir %{_topdir}/BUILD
- -14: _buildrootdir %{_topdir}/BUILDROOT
- -14: _rpmdir %{_topdir}/RPMS
- -14: _sourcedir %{_topdir}/SOURCES
- -14: _specdir %{_topdir}/SPECS
- -14: _srcrpmdir %{_topdir}/SRPMS
- -14: _topdir %{getenv:HOME}/rpmbuild
- vi ~/.rpmmacros
- %_topdir /home/ibuler/rpmbuild ##目录可以自定义
- mkdir ~/rpmbuild
- cd ~/rpmbuild
- mkdir -pv {BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}
- cp /tmp/tengine-1.4.2.tar.gz SOURCES ##事先放好的
- cd SPECS
- vi tengine.spec ##内容见后讲解,rhel6.3会自动生成模板
- rpmbuild
- -ba 既生成src.rpm又生成二进制rpm
- -bs 只生成src的rpm
- -bb 只生二进制的rpm
- -bp 执行到pre
- -bc 执行到 build段
- -bi 执行install段
- -bl 检测有文件没包含
- cd /tmp
- cp /home/ibuler/rpmbuild/RPMS/x86_64/tengine-1.4.2-1.el6.x86_64.rpm /tmp
- rpm -ivh tengine-1.4.2-1.el6.x86_64.rpm ##测试安装
- rpm -e tengine ##测试卸载,如果版本号比原来的高,升级测试
- vi tengine.spec
- ### 0.define section #自定义宏段,这个不是必须的
- ### %define nginx_user nginx #这是我们自定义了一个宏,名字为nginx_user值为nginx,%{nginx_user}引用
- ### 1.The introduction section #介绍区域段
- Name: tengine #名字为tar包的名字
- Version: 1.4.2 #版本号,一定要与tar包的一致哦
- Release: 1%{?dist} #释出号,也就是第几次制作rpm
- Summary: tengine from TaoBao #软件包简介,最好不要超过50字符
- Group: System Environment/Daemons #组名,可以通过less /usr/share/doc/rpm-4.8.0/GROUPS 选择合适组
- License: GPLv2 #许可,GPL还是BSD等
- URL: http://laoguang.blog.51cto.com #可以写一个网址
- Packager: Laoguang <ibuler@qq.com>
- Vendor: TaoBao.com
- Source0: %{name}-%{version}.tar.gz
- #定义用到的source,也就是你收集的,可以用宏来表示,也可以直接写名字,上面定义的内容都可以像上面那样引用
- #patch0: a.patch #如果需要补丁,依次写
- BuildRoot: %_topdir/BUILDROOT
- #这个是软件make install 的测试安装目录,也就是测试中的根,我们不用默认的,我们自定义,
- #我们可以来观察生成了哪此文件,方便写file区域
- BuildRequires: gcc,make #制作过程中用到的软件包
- Requires: pcre,pcre-devel,openssl,chkconfig #软件运行需要的软件包,也可以指定最低版本如 bash >= 1.1.1
- %description #软件包描述,尽情的写吧
- It is a Nginx from Taobao. #描述内容
- ### 2.The Prep section 准备阶段,主要目的解压source并cd进去
- %prep #这个宏开始
- %setup -q #这个宏的作用静默模式解压并cd
- #%patch0 -p1 #如果需要在这打补丁,依次写
- ### 3.The Build Section 编译制作阶段,主要目的就是编译
- %build
- ./configure \ #./configure 也可以用%configure来替换
- --prefix=/usr \ #下面的我想大家都很熟悉
- --sbin-path=/usr/sbin/nginx \
- --conf-path=/etc/nginx/nginx.conf \
- --error-log-path=/var/log/nginx/error.log \
- --http-log-path=/var/log/nginx/access.log \
- --pid-path=/var/run/nginx/nginx.pid \
- --lock-path=/var/lock/nginx.lock \
- --user=nginx \
- --group=nginx \
- --with-http_ssl_module \
- --with-http_flv_module \
- --with-http_stub_status_module \
- --with-http_gzip_static_module \
- --http-client-body-temp-path=/var/tmp/nginx/client/ \
- --http-proxy-temp-path=/var/tmp/nginx/proxy/ \
- --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ \
- --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi \
- --http-scgi-temp-path=/var/tmp/nginx/scgi \
- --with-pcre
- make %{?_smp_mflags} #make后面的意思是:如果就多处理器的话make时并行编译
- ### 4.Install section 安装阶段
- %install
- rm -rf %{buildroot} #先删除原来的安装的,如果你不是第一次安装的话
- make install DESTDIR=%{buildroot}
- #DESTDIR指定安装的目录,而不是真实的安装目录,%{buildroot}你应该知道是指的什么了
- ### 4.1 scripts section #没必要可以不写
- %pre #rpm安装前制行的脚本
- if [ $1 == 1 ];then #$1==1 代表的是第一次安装,2代表是升级,0代表是卸载
- /usr/sbin/useradd -r nginx 2> /dev/null ##其实这个脚本写的不完整
- fi
- %post #安装后执行的脚本
- %preun #卸载前执行的脚本
- if [ $1 == 0 ];then
- /usr/sbin/userdel -r nginx 2> /dev/null
- fi
- %postun #卸载后执行的脚本
- ### 5.clean section 清理段,删除buildroot
- %clean
- rm -rf %{buildroot}
- ### 6.file section 要包含的文件
- %files
- %defattr (-,root,root,0755) #设定默认权限,如果下面没有指定权限,则继承默认
- /etc/ #下面的内容要根据你在%{rootbuild}下生成的来写
- /usr/
- /var/
- ### 7.chagelog section 改变日志段
- %changelog
- * Fri Dec 29 2012 laoguang <ibuler@qq.com> - 1.0.14-1
- - Initial version
- [ibuler@ng1 rpmbuild]$ ls SOURCES/
- fastcgi_params index.html init.nginx nginx.conf tengine-1.4.2.tar.gz
- Source0: %{name}-%{version}.tar.gz
- Source1: index.html
- Source2: init.nginx
- Source3: fastcgi_params
- Source4: nginx.conf
- make install DESTDIR=%{buildroot}
- %{__install} -p -D %{SOURCE1} %{buildroot}/usr/html/index.html #%{__install}这个宏代表install命令
- %{__install} -p -D -m 0755 %{SOURCE2} %{buildroot}/etc/rc.d/init.d/nginx
- %{__install} -p -D %{SOURCE3} %{buildroot}/etc/nginx/fastcgi_params
- %{__install} -p -D %{SOURCE4} %{buildroot}/etc/nginx/nginx.conf
- %post
- if [ $1 == 1 ];then
- /sbin/chkconfig --add nginx
- fi
- %files
- %defattr (-,root,root,0755)
- /etc/
- /usr/
- /var/
- %config(noreplace) /etc/nginx/nginx.conf #%config表明这是个配置文件noplace表明不能替换
- %config(noreplace) /etc/nginx/fastcgi_params
- %doc /usr/html/index.html #%doc表明这个是文档
- %attr(0755,root,root) /etc/rc.d/init.d/nginx #%attr后面的是权限,属主,属组
- rpmbuild -ba tengine.spec
- gpg --gen-key
- Your selection?1<Enter> ##默认即可
- What keysize do you want? (2048) 1024<Enter> ##密钥长度
- Key is valid for? (0) 1y<Enter> ##有效期
- Is this correct? (y/N) y<Enter> ##确认
- Real name: LaoGuang<Enter> ##密钥名称
- Email address: ibuler@qq.com<Enter> ##邮件
- Comment: GPG-RPM-KEY<Enter> ##备注
- Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O<ENTER>
- Enter passphrase OK <Enter> ##使用空密码,也可以输入
- <Take this one anyway> <Enter>
- <Take this one anyway> <Enter>
- [root@ng1 dev]# gpg --list-keys
- /root/.gnupg/pubring.gpg
- ------------------------
- pub 1024R/49C99488 2012-11-28 [expires: 2013-11-28]
- uid LaoGuang (GPG-RPM-KEY) <ibuler@qq.com>
- sub 1024R/69BA199D 2012-11-28 [expires: 2013-11-28]
- gpg --export -a "LaoGuang" > RPM-GPG-KEY-LaoGuang
- vi ~/.rpmmacros
- %_gpg_name LaoGuang
- rpm --addsign tengine-1.4.2-1.el6.x86_64.rpm
- Enter pass phrase: ##输入密钥
- Pass phrase is good.
- tengine-1.4.2-1.el6.x86_64.rpm:
- rpm --import RPM-GPG-KEY-LaoGuang
- rpm --checksig tengine-1.4.2-1.el6.x86_64.rpm
- tengine-1.4.2-1.el6.x86_64.rpm: rsa sha1 (md5) pgp md5 OK
0 0
- 一步步制作RPM包
- RPM包一步步制作
- 一步步制作RPM包
- 如何制作rpm包
- 如何制作rpm包
- 制作Linux RPM包
- RPM包的制作
- 制作rpm包
- 如何制作rpm包
- rpm包制作
- rpm包制作过程
- [整理] RPM包制作
- 如何制作rpm包
- rpm包制作
- rpm包制作实例
- RPM包制作
- 自己动手制作RPM包
- linux rpm 包制作
- Redhat Linux RPM包安装软件及其管理
- 题目1195:最长&最短文本
- 软件安装/程序编译过程
- hibernate初入门3--hibernate的简易实现
- Linux下C语言调试(3)
- 一步步制作RPM包
- ice编译文件不能使用中文路径
- 使用CALayer或者drawRect方法来绘制自定义View
- linux下文件夹的创建、复制、剪切、重命名、清空和删除命令
- [leetCode] Power of Two
- java学习11--语句:for循环嵌套、转义字符的使用
- 机器学习 之 LDA主题模型
- 自己制作rpm软件包(2)
- Filter及FilterChain的使用详解