位置: 编程技术 - 正文

Linux系统下将源码包制作为rpm包的教程(linux 源文件)

编辑:rootadmin

推荐整理分享Linux系统下将源码包制作为rpm包的教程(linux 源文件),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:linux的源是什么,linux切换源,linux 源文件,linux的源是什么,linux的源是什么,linux 源文件,linux怎么带源ping,linuxyum源,内容如对您有帮助,希望把文章链接给更多的朋友!

1.要使用rpmbuild 这个命令,那么要安装rpm-build, centos下可以使用yum -y intall rpm-build 来完成安装.

2.rpmbuild 包和 /usr/src/redhat目录 ,这些 rpm build 的程序是要靠 spec 文件的控制.它是配置指定安装到另外的机器上的,

用来指示转换的源码补丁编译成二进制文件的包.默认编译操作是在下面的目录中,它是编译源码的相关动作操作的位置.如果不指定其它的地方,那么 rpm building 的地方是主要在 /usr/src/redhat 的目录,目录的架构如下,这就是为 rpm-build 提供的目录结构.复制代码代码如下: /usr/src/redhat/|-- BUILD|-- RPMS| |-- i| `-- ...|-- 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 #versionName: %{name} #name 就是使用的上面的宏指令Version: %{version} #version 也是使用的上面的宏指令Release: 1License: GPLGroup: Applications/Productivity # 软件是哪个组的,更多信息查看 /usr/share/doc/rpm-version/GROUPSURL: foo-1.2-change_default.patchPatch1: foo-1.2-add_feature.patchPreReq: unzip # 安装前需要什么Requires: pam # 安装后需要什么BuildPreReq: gcc >= 2. #打包前需要什么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 目录中来准备下面的编译.和 %prep 相关的宏指令复制代码代码如下: %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 是编译和准备软件,运行象一个 shell 脚本,它运行在上下文目录指定的源码目录.在编译过程中,调用脚本 .config 在本地的目录(%configure 中配置的).和 %build 相关的宏%configure # 可以通过运行 rpm -eval %configure 来看它的设置

例:

Linux系统下将源码包制作为rpm包的教程(linux 源文件)

复制代码代码如下:%build%configure –enable-sharedCFLAGS=-O2 make

Spec 文件之 %install%install 是用来做 rpm 安装所有需要的文件.这些打包的文件会复制到前面的讲的 BuildRoot 中的目录树中.通常这个目录是使用的 /var/tmp 中.$RPM_BUILD_ROOT 参数来设置 BuildRoot.主要不能使用真实目录来设置的主要原因是,在编译的过程中有可能会有文件替换到你系统中的文件引起系统和软件问题.对其它的文件路径象在 %{_mandir}, %{_bindir} , %{_sysconfdir} 等等,都是使用预先定义的宏来指定的.默认都是跑在这个 RPM_BUILD_ROOT 目录下的.例:复制代码代码如下: %installrm -rf $RPM_BUILD_ROOT # 默认的$RPM_BUILD_ROOT 是 /var/tmp/%{name}-rootmake DESTDIR=$RPM_BUILD_ROOT install # 指定安装文件的路径install -m foo.8 ${RPM_BUILD_ROOT}/%{_mandir}/man8/foo.8

Spec 文件之 %clean%clean 是用来清理 build 后的临时文件,主要是怕这些旧的文件影响以后编译.主要是要删除 $RPM_BUILD_ROOT 和运行 make clean .例:复制代码代码如下:%cleanrm -rf $RPM_BUILD_ROOTmake cleanSpec 文件之 Scriptlets

这些选项可以让你动态的使用 shell 脚本来控制安装和删除,%pre,%post 是用脚本运行在包安装后,注意没法交互%preun,%postun 用脚本运行在包删除时复制代码代码如下:rpm -q –scripts packagename # 可以看到脚本的信息

例如:复制代码代码如下:%pregroupadd -g foouseradd -g foo -s /bin/false -d /var/foo -M foo%post/sbin/ldconfigchkconfig --add food%preunif [ = 0 ]thenservice food stop > /dev/null 2>&1chkconfig --del foodfi%postunif [ = 0 ]thenuserdel foogroupdel fooelse/sbin/ldconfigservice food condrestart > /dev/null 2>&1fi注意,在这个当中的数字,如果是 1 是指是第一次安装,如果是 2 是指也许是升级.如果是 0 在 %postun , 是指被完全的删除.Spec 文件之 %files

%files 任何打包的文件,都需要在这个包的详细的文件列表中,如果是目录,包的所有者的全部目录都在中间,%dir 来指定空目录,可以用%files -f /tmp/dyanmic_filelist 来指定一个文件列表.默认 %config 会替换掉配置,给原来的配置修改名字为 .rpmorig,如果不想修改的话,就用%config(noreplace) 就会给新的配置文件名字命名为 .rpmnew.%defattr(mode,user,group)%attr(mode,user,group) filename%config 配置文件%doc 文档例:复制代码代码如下: %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 是记录包的修改,比如加入一个新的补丁,修改配置,日志使用 data +”%a %b %d %Y”,需要显示包的日志改变的信息可以使用 rpm-q –changelog.例:

复制代码代码如下:%changelog? Mon Aug 5 Elvis Presley

[总结]

知道了怎么把rpm包相信大家就会知道,然后做yum 源了,做好了yum源,只需要客户端配置好使用安装源,这样是不是很方便,

如果自定义yum 源不会的,sky 改天写下吧,大概做法:centos下比较简单,安装下createrepo软件,然后再做个http服务,

Linux lnmp下无法使用mail发邮件的两种解决方法 Linux系统在配置了lnmp环境后,出现了mail函数不能发送邮件的问题,遇到这个问题该如何解决呢?其实有两种方法,一是使用sendmail组件,而是使用postfix

Linux使用git检出一个单独的分支的方法 Linux下git可以检出分支,但很多用户并不知道git可以检出一个单独的分支,使用git检出分支的方法不适用于单独分支的检出,那么Linuxgit要如何检出单独

Linux系统的服务器上配置电信网通双IP的方法 对于双线双IP的服务器来说,要解决两个问题:一、你的网站用户究竟走那个IP来访问你的服务器二、你的网站内容究竟走那个IP返回给用户对于第1个问

标签: linux 源文件

本文链接地址:https://www.jiuchutong.com/biancheng/365478.html 转载请保留说明!

上一篇:Fedora如何安装和升级虚拟机辅助工具VMware Tools(fedora23安装)

下一篇:Linux lnmp下无法使用mail发邮件的两种解决方法(linux无法使用ls)

  • 总额法和净额法会计分录对比
  • 出口退税计算公式 中华会计网校
  • 捐赠劳务支出可在企业所得税前扣除吗
  • 联营企业属于企业吗
  • 代扣代缴通用缴款书怎么打印
  • 公司买车计算方式
  • 无力支付什么意思
  • 出纳个人账户转公户
  • 单位交的社保明年能退吗
  • 经营性项目应收减少额怎么算
  • 销售商品,提供服务以及从事其他经营活动
  • 通行费电子发票可以抵扣吗
  • 企业所得税汇算清缴申报表
  • 企业关联方利息支出税前扣除的标准扣除
  • 工作未满12个月被辞退时前月平均工资怎么计算
  • 应收账款让售账务处理
  • 应付款管理参数设置的基本操作流程
  • 赞助支出为什么不算广告费
  • 预收账款多说明什么
  • 公立医院固定资产贷款相关规定
  • 增值税税控系统专用设备抵减增值税
  • 增值税普通发票查询真伪
  • 增值税留抵税额抵减欠税
  • 纳税调整的情况
  • 出口退税可以用电子专用发票吗
  • 专票的有效期是什么意思
  • 权责发生制如何计算
  • 资产减值损失汇算清缴调整表
  • 转出未交增值税科目
  • 税务稽查可以不罚款的情形
  • 营改增后销售不动产税率变化时间
  • 投标保证金退回是什么意思
  • apcu php
  • 安全模式是个啥
  • PHP:imagefilledpolygon()的用法_GD库图像处理函数
  • 单目测距精度
  • 你别找了
  • openssl 加密套件
  • phpcms怎么样
  • 个人个税汇算清缴怎么做
  • 注册资本实缴后可以减资吗
  • 基本户不注销会扣钱吗
  • 当月没有发放工资是不是就不用申报个税
  • 企业内部控制的概念
  • 无票收入不走对公账户
  • 企业所得税纳税申报表
  • 内部审计主要目的
  • 再保后赔款支出
  • 商品流通环节包括
  • 社保计提少了怎么办
  • 投资性房地产改造期间计提折旧吗
  • 公司向税务局缴纳税款
  • 小型微利企业预缴企业所得税怎么算
  • 临时账户名称是什么意思
  • 商品和服务税收分类编码是什么
  • 报销单填写发票第几页交给财务
  • 新成立的公司发朋友圈文案
  • 企业的财务战略
  • 机箱前面板是哪里
  • mac打不了字什么原因
  • windows局域网共享文件用的什么协议
  • win7系统注册表文件损坏无法开机怎么修复
  • win1021年更新
  • mac怎么卸载苹果系统
  • Win8.1不借助第三方软件怎么给文件夹加密并隐藏
  • win8删除文件不提示
  • 开机慢怎么解决 w8
  • Windows8怎么打开任务管理器
  • Windows8和Windows Phone8中IE10两者相同点和区别
  • 使用nodejs中httpProxy代理时候出现404异常的解决方法
  • portainer集群管理
  • linux的启动顺序
  • 批处理中for语句的哪个参数表示目录
  • jquery ul li
  • python如何切行
  • 怎么向税务局举报不开票行为
  • 贵州地税网上申报大厅
  • 2021税务稽查重点方向
  • 认缴股权是什么意思
  • 注销的卡补回来还能恢复以前的套餐吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设