在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
1.要使用rpmbuild 这个命令,那么要安装rpm-build, centos下可以使用yum -y intall rpm-build 来完成安装. 2.rpmbuild 包和 /usr/src/redhat目录 ,这些 rpm build 的程序是要靠 spec 文件的控制.它是配置指定安装到另外的机器上的, 用来指示转换的源码补丁编译成二进制文件的包.默认编译操作是在下面的目录中,它是编译源码的相关动作操作的位置. 复制代码 代码如下: /usr/src/redhat/ |-- BUILD |-- RPMS | |-- i386 | `-- ... |-- SOURCES | |-- foo-1.2.tar.gz | |-- foo-1.2-add_feature.patch | `-- foo-1.2-change_default.patch |-- SPECS | `-- foo.spec `-- SRPMS %define name foo # 名字 %define version 16 #version Name: %{name} #name 就是使用的上面的宏指令 Version: %{version} #version 也是使用的上面的宏指令 Release: 1 License: GPL Group: Applications/Productivity # 软件是哪个组的,更多信息查看 /usr/share/doc/rpm-version/GROUPS URL: http://www.mysqlops.com Source: ftp://www.mysqlops.com/pub/xxx.tar.gz Patch0: foo-1.2-change_default.patch Patch1: foo-1.2-add_feature.patch PreReq: unzip # 安装前需要什么 Requires: pam # 安装后需要什么 BuildPreReq: gcc >= 2.96 #打包前需要什么 BuildRoot: %{_tmppath}/%{name}-root # 准备源码文件的 chroot 的目录 Summary: A fictional open source package for the offering. #摘要 %description #描述 注意,spec 文件很多信息都是取自宏指令,如果没有明确指定,就会继承 /usr/lib/rpm/macros 和其它相关宏指令的文件. Spec 文件之 %prep %prep 这部分其它是由一些参数来组成一个 shell 脚本来从 SOURCES 中解压源码和应用补丁到 BUILD 目录中来准备下面的编译. 复制代码 代码如下: %setup
%patch 例: 复制代码 代码如下: %prep
%setup -q #提取源码到 BUILD 目录; -q 指不显示输出(quietly) %patch0 -p1 # 应用 patch0 %patch1 -p1 -b .orig # 应用 Patch1 但是存下源文件成 .oring 的后缀 unzip foo_data.zip # 接下来解压 zip 文件 Spec 文件之 %build 例: 复制代码 代码如下:%build
%configure –enable-shared CFLAGS=-O2 make Spec 文件之 %install 复制代码 代码如下: %install
rm -rf $RPM_BUILD_ROOT # 默认的$RPM_BUILD_ROOT 是 /var/tmp/%{name}-root make DESTDIR=$RPM_BUILD_ROOT install # 指定安装文件的路径 install -m644 foo.8 ${RPM_BUILD_ROOT}/%{_mandir}/man8/foo.8
复制代码 代码如下:%clean rm -rf $RPM_BUILD_ROOT make clean Spec 文件之 Scriptlets 这些选项可以让你动态的使用 shell 脚本来控制安装和删除, 复制代码 代码如下:rpm -q –scripts packagename # 可以看到脚本的信息
例如: 复制代码 代码如下:%pre groupadd -g 201 foo useradd -g foo -s /bin/false -d /var/foo -M foo %post /sbin/ldconfig chkconfig --add food %preun if [ = 0 ] then service food stop > /dev/null 2>&1 chkconfig --del food fi %postun if [ = 0 ] then userdel foo groupdel foo else /sbin/ldconfig service food condrestart > /dev/null 2>&1 fi 注意,在这个当中的数字,如果是 1 是指是第一次安装,如果是 2 是指也许是升级.如果是 0 在 %postun , 是指被完全的删除. Spec 文件之 %files %files 任何打包的文件,都需要在这个包的详细的文件列表中,如果是目录,包的所有者的全部目录都在中间,%dir 来指定空目录,可以用 复制代码 代码如下: %files %defattr(-,root,root) %config /etc/foo.conf # 指定了才能在更新和删除时有用 /usr/sbin/food /usr/bin/foo %doc README # 目录是在 /usr/share/doc/%{name}-%{version} %doc /usr/share/man/man8/food.8 /usr/share/foo/ %dir /var/lock/foo/ # 空的目录 Spec 文件之 %changelog ; 复制代码 代码如下:%changelog
? Mon Aug 5 2002 Elvis Presley [总结] 知道了怎么把rpm包相信大家就会知道,然后做yum 源了,做好了yum源,只需要客户端配置好使用安装源,这样是不是很方便, 如果自定义yum 源不会的,sky 改天写下吧,大概做法:centos下比较简单,安装下createrepo软件,然后再做个http服务, |
请发表评论