Chinaunix首页 | 论坛 | 博客
  • 博客访问: 223020
  • 博文数量: 28
  • 博客积分: 398
  • 博客等级: 一等列兵
  • 技术积分: 1109
  • 用 户 组: 普通用户
  • 注册时间: 2011-01-07 22:28
文章分类
文章存档

2017年(1)

2014年(3)

2013年(7)

2012年(4)

2011年(13)

分类: LINUX

2013-10-23 16:34:15


在Linux系统下源码安装软件是家常便饭,但是有是时候重复耗时操作 或者 需要在生产机上安装编译环境等,非常麻烦且安装路径不统一等带来很多的麻烦 ,因此RPM包的出现正好解决了这些问题,同时使得原来繁琐的安装变成一键安装。

(当然得到这样好处的同时也失去了定制自定义安装的灵活性,有稳定还是要灵活,自行斟酌)。

xrdp是一个远程桌面环境服务器,其官方没有提供rpm安装包,特制作一个rpm安装包,顺便学习下怎么打包成rpm。

(本文参考了 作者:   


制作xrdp的rpm例子

1、建立目录结构 (Redhat系统可能这些目录已经存在,则不用创建,直接进入第二步骤)

/usr/src/redhat/SOURCES — 存放源代码,补丁,图标等文件。
/usr/src/redhat/SPECS — 存放用于管理rpm制作进程的spec文件。
/usr/src/redhat/BUILD — 解压后的文件存放在这里。
/usr/src/redhat/RPMS — 存放由rpmbuild制作好的二进制包。
/usr/src/redhat/SRPMS —存放由rpmbuild制作好的源码包。

  1. mkdir -p /usr/src/redhat
  2. cd /usr/src/redhat
  3. mkdir SOURCES SPECS BUILD RPMS SRPMS

2、下载源码包

下载源码包到SOURCES目录,不需要解压。

  1. cd /usr/src/redhat/SOURCES
  2. wget

3、创建Spec文件

  1. cd /usr/src/redhat/SPECS
  2. vi xrdp.spec

内容如下:

  1. #
  2. #Example spec file for xrdp
  3. #
  4. Summary: Remonte desktop server
  5. Name: xrdp
  6. Version: 0.6.0
  7. Release: 0.el5
  8. License: 2-clause BSD-like license
  9. Group: Applications/Server
  10. Source:  
  11. URL:  
  12. Distribution: Linux
  13. Packager: hby21c

  14. BuildArch:  x86_64
  15. Requires: boost
  16. BuildRequires: gcc 
  17. #BuildRoot:  %{_tmppath}/{%name}-%{version}
  18. #Requires: lz-libdrizzle>=1.0
  19.  
  20. %description
  21. Xrdp [engine x] is a remote desktop proxy server, as well as
  22. a vnc server

  23. %prep
  24. rm -rf $RPM_BUILD_DIR/xrdp-v0.6.0
  25. zcat $RPM_SOURCE_DIR/xrdp-v0.6.0.tar.gz | tar -xvf -

  26. %build
  27. cd $RPM_BUILD_DIR/xrdp-v0.6.0
  28. ./bootstrap
  29. ./configure 
  30. #./configure --prefix=/usr/local/nginx
  31. make

  32. %install
  33. cd $RPM_BUILD_DIR/xrdp-v0.6.0
  34. make install
  35. #make DESTDIR=$RPM_BUILD_ROOT install 

  36. %preun
  37. if [ -z "`ps aux | grep xrdp | grep -v grep`" ]; then
  38.    if test -e /etc/xrdp/xrdp.sh
  39.    then
  40.        /etc/xrdp/xrdp.sh stop
  41.    fi
  42.    #killall xrdp >/dev/null
  43.    exit 0
  44. fi

  45. %files
  46. /usr/local/sbin/xrdp*
  47. /usr/local/lib/xrdp/
  48. /etc/xrdp/

4、开始RPM制作

在制作RPM包之前需要安装必要的工具,如rpmbuild,gcc等。

  1. yum install gcc rpm-build pcre-devel
  1. cd /usr/src/redhat/SPECS/
  2. rpmbuild -bb xrdp.spec

一切顺利的话,会生成 xrdp 的rpm包,/usr/src/redhat/RPMS/x86_64/xrdp-0.6.0-0.el5.x86_64.rpm

5、测试rpm包

  1. #安装rpm包
  2. rpm -ivh  /usr/src/redhat/RPMS/x86_64/xrdp-0.6.0-0.el5.x86_64.rpm
  3. #卸载包
  4. rpm -e xrdp   

spec文件解释

从以上的简单例子可以看出,制作rpm包最重要的还是spec文件,下面解释一下例子所用到的指令。
#:以#开头是注释,rpm会忽略它。
Summary:简单描述软件。
Name :定义rpm的名称。
Version: 定义软件版本
Release: 发行版本
License: 定义许可证
Group: 软件分类
Source: 源码下载地址
URL: 源码相关网站
Distribution: 发行版系列
Packager: 打包人的信息

%description:软件详细描述,可多行
%prep :软件编译之前的处理,如解压。
%build :开始编译软件,如make
%install :开始安装软件,如make install
%files :指定哪些文件需要被打包,如 /usr/local/sbin/xrdp* ,配置文件等...

[这相当于cp命令,将安装包中文件拷贝到目录系统相应目录下]
%preun :定义卸载之前的动作,如停止原有服务或者杀掉进程。
这里只介绍了几个常用的tag,更详细的请参考:


chinaunix上网友也有类似的帖子,可以参考:http://blog.chinaunix.net/uid-23069658-id-3944462.html




阅读(2553) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~