linux怎么打开mok模式,Linux之Mock使用方法

在进行编包的时候大多数人会使用rpmbuild命令在本机进行编译,这样可以使一些依赖及本地相关包的修改可以生效,但在开发过程中必须模拟用户的环境或是构建一个“干净的”环境(既没有任何其他依赖的改动,直接从yum下载构建一个纯用户环境),这样我们就需要

在进行编包的时候大多数人会使用rpmbuild命令在本机进行编译,这样可以使一些依赖及本地相关包的修改可以生效,但在开发过程中必须模拟用户的环境或是构建一个“干净的”环境(既没有任何其他依赖的改动,直接从yum下载构建一个纯用户环境),这样我们就需要mock命令来构建这样一个编译的纯环境来进行编译软件包。

1,安装mock

mock的安装方法比较简单,请参照这篇文章即可。

2,mock使用方法

mock编译过程最好不要用root身份,先建立一个普通的用户。

[root@test ~]# useradd mockbuilder

[root@test ~]# usermod -a -G mock mockbuilder

[root@test ~]# su - mockbuilder

使用内置的mock配置文件来进行编译

mock 的配置文件在/etc/mock/目录下,系统默认内置了fedora、epel-5、epel-6等系统的配置文件,通过查看这些.cfg的配置文件,可以了解到Mock的原理,即软件使用yum来下载一个最小化的系统,并放入chroot环境中。

下面以编译fedora 15 64位系统的软件包来举例(对应的配置文件为fedora-15-x86_64.cfg)

[root@test ~]# mock -r fedora-15-x86_64 init #初始化,不需要加.cfg后缀

[root@test ~]# mock -r fedora-15-x86_64 rebuild package-1.2-3.src.rpm #开始编译过程

初始化以后的chroot环境位于:/var/lib/mock/fedora-19-x86_64/root目录下,可以用chroot命令切换此最小化环境。

编译后的信息和软件包会保存在:/var/lib/mock/fedora-19-x86_64/result。

3,自定义配置文件来编译

要定义自己的配置文件,首先需要指定一个yum源(.xml文件),并且该yum源中必须含有sysbuild分组。

这里先创建一个1.xml文件,指定sysbuild分组包含的软件包。然后根据1.xml生成repodata目录

在Yum源服务器上作些准备工作

[root@os1 os]# yum install createrepo

[root@os1 os]# ls

drpms Packages repodata

[root@os1 os]# mv repodata repodata-bak

[root@os1 os]# vim 1.xml 内容如下:

sysbuild

sysbuild

true

false

bash

bzip2

coreutils

cpio

diffutils

findutils

gawk

gcc

gcc-c++

grep

gzip

info

make

patch

sed

shadow-utils

tar

unzip

util-linux-ng

which

curl

git

gnupg

make

shadow-utils

redhat-release-server

redhat-rpm-config

rpm-build

?

sysbuild

sysbuild

mock mini require

60

sysbuild

在Yum源服务器上使用1.xml创建repodata

[root@os1 os]# createrepo -g 1.xml ./ #在./下生成新的repodata目录

[root@os1 os]# ls

1.xml drpms Packages repodata repodata-bak

在Mock服务器上创建自己的配置文件

[root@test ~]# cd /etc/mock

[root@test ~]# vim mock123.cfg 内容如下

config_opts['root'] = 'mock123-x86_64'

config_opts['target_arch'] = 'x86_64'

config_opts['chroot_setup_cmd'] = 'groupinstall sysbuild' #sysbuild要和1.xml文件定义的group标签中的name字段一致

config_opts['dist'] = 'mock123' #only useful for --resultdir variable subst

config_opts['plugin_conf']['ccache_enable'] = False

config_opts['yum.conf'] = """

?

[main]

cachedir=/var/cache/yum

debuglevel=1

logfile=/var/log/yum.log

reposdir=/dev/null

retries=20

obsoletes=1

gpgcheck=0

assumeyes=1

?

[local]

name=local

baseurl=http://localhost/x86_64/os #填写repodata目录的上一级目录

cost=2000

enabled=1

"""

拷贝过去的时候需要注意去掉注释,否则python会报SyntaxError: Non-ASCII的错误。

在Mock服务器上使用自己的配置文件进行编绎

[root@test ~]# su - mockbuilder

[mockbuilder@test ~]# mock -r mock123 --init

[mockbuilder@test ~]# mock -r mock123 --rebuild packages-1.2.3.src.rpm

如果修改了/etc/mock/mock123.cfg文件,则需要重新初始化chroot环境

[mockbuilder@test ~]# mock -r mock123 --clean all

[mockbuilder@test ~]# mock -r mock123 --init

你可能感兴趣的:(linux怎么打开mok模式)