使用mock来编译和管理RPM软件包
buildroot
在打包时用到的spec文件中包含一些tag,这些对大小写不敏感的tag用冒号来定义。BuildRoot就是其中的一个tag。例如,在libvirt的spec文件中BuildRoot的定义如下:
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
BuildRoot设置的目录会被当作临时的根目录,%install部分安装的文件都会被临时安装到这里。之所以引入BuildRoot是为了在打包过程中不影响现在的系统。 RPM宏设定的BuildRoot默认值是~/rpmbuild/BUILDROOT, 可以在spec文件中设置该tag,或者在rpmbuild命令执行时使用- -buildroot选项来指定。
mock的功能
mock不只是将文件安装到Buildroot指定的根目录,而是创建一个打包的沙盒(sandbox),挂载一些必要的文件系统(proc,sys等),将打包过程所用到的软件包(BuildRequires指定)都安装到沙盒中,然后将指定的SRPM包进行编译,生成最终的RPM包。mock不仅可以使打包过程变得整洁,更能够测试BuildRequires是否完整。除了打包之外,mock也可以用来制作沙盒来测试软件包。
安装mock
使用YUM安装fedora维护者工具fedora-packager后,mock和koji作为依赖也被安装到系统中了。执行以下命令即可:
sudo yum install fedora-packager
简单的配置mock
在使用mock之前需要将当前用户加入到mock用户组,并使用户登陆到该用户组:
sudo usermod -a -G mock [User name] && newgrp mock
使用mock来打包
使用mock打包需要配置文件来指定安装软件包所用到的YUM仓库,/etc/mock目录下有许多这样的配置文件。配置文件可以通过-r选项来指定,如果没有指定,则使用默认的配置文件/etc/mock/default.cfg。
mock libvirt-1.2.2-1.fc20.src.rpm
将会在BUILDROOT目录下挂载一些必要的文件必要的文件系统,并安装打包过程需要用到的软件包,最终生成RPM包。
- 大数据平台搭建 Hadoop-2.7.4 + Spark-2.2.0 快速搭建
- ajax 设置Access-Control-Allow-Origin实现跨域访问
- gradle新建工程,多项目依赖,聚合工程
- Apache Hive-2.3.0 快速搭建与使用
- HBase-1.3.1 集群搭建 - 报错整理
- 分布式唯一ID生成器Twitter 的 Snowflake idworker java版本
- 使用 Phoenix-4.11.0连接 Hbase 集群 ,并使用 JDBC 查询测试
- 高并发分布式系统中生成全局唯一Id汇总
- ZooKeeper 可视化监控 zkui
- 关于RBAC(Role-Base Access Control)的理解
- Spring Boot 中使用 Kafka
- 如何评价一段代码
- java系统高并发的解决方案
- Spring Boot 中使用 Redis
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- begin backup导致的故障恢复全过程
- 通过历史控制文件恢复Oracle数据库,只需这10步
- python应用(2):写个python程序给自己用
- 基于Prometheus+Grafana监控SQL Server数据库
- 手把手教你用R语言读取CSV文件
- 6个案例手把手教你用Python和OpenCV进行图像处理
- Android 10(Q)/11(R) 分区存储适配
- Usual*** CMS 8.0代码审计
- 由一条like语句引发的SQL注入新玩法
- 《黑神话:悟空》B站弹幕、知乎回答分析
- 12岁小读者使用Python暴力破解Wi-Fi密码
- 深度学习入门Fast.ai 2.0上线!自带中文字幕,所有笔记、资源全部免费!
- 七夕节脱单“神助攻”!AI教你写情话
- Python初学者请注意!别这样直接运行python命令,否则电脑等于“裸奔”
- 一篇文章构建你的 Node.js 知识体系