mock编译环境搭建

对于做操作系统的开发者来讲,一个干净的环境尤为重要。就我所接触的,能够实现自己的环境不被其他人“打扰”,有容器,chroot和mock环境了。前面两个超级简单,一个直接run镜像,一个就是chroot到某个文件系统,稍微复杂一点就是如何搭建属于自己的mock环境了,接下来就实操一下。

操作系统环境

[root@localhost ~]# cat /etc/.productinfo

KYLIN Linux Advanced Server

Release V10(SP1)/(Tercel)-sw64-Build22.1-20210702-JUN

[root@localhost ~]#

mock版本

[root@localhost ~]# rpm -q mock

mock-1.4.14-1.p02.ky10.noarch

[root@localhost ~]#

装完mock这个安装包之后,我们只需要准备一个cfg文件,默认自带有一个cfg文件

[root@localhost ~]# rpm -ql mock|grep cfg

/etc/mock/site-defaults.cfg

这里过于复杂,我这里有一个模板,直接拿来套用即可

[root@localhost ~]# cat /etc/mock/leechm.cfg

config_opts['package_manager'] = 'yum'

config_opts['chroothome'] = '/builddir'

config_opts['use_host_resolv'] = False

config_opts['basedir'] = '/var/lib/mock'

config_opts['rpmbuild_timeout'] = 86400

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

keepcache=1

install_weak_deps=0

strict=1

# repos

[NeoKylin-Base]

name=NeoKylin-Base

priority=1

failovermethod=priority

#baseurl=http://10.1.82.10/kojifiles/repos/ns7.4-build/latest/mips64el/

baseurl=http://172.25.130.201/kojifiles/repos/swky10-build/latest/sw_64

[NeoKylin-Fedoradd]

name=NeoKylin-Fedora

priority=11

failovermethod=priority

baseurl=http://172.25.130.201/kojifiles/internal-repos/

"""

#config_opts['chroot_setup_cmd'] = 'install bash bzip2 coreutils cpio diffutils findutils gawk gcc gcc-c++ glibc-all-langpacks grep gzip info fedora-release kylin-rpm-config make patch rpm rpm-build sed shadow-utils tar unzip util-linux which xz vim wget lrzsz'

config_opts['chroot_setup_cmd'] = 'install @build'

config_opts['target_arch'] = 'sw_64'

config_opts['root'] = 'leechm'

config_opts['plugin_conf']['root_cache_enable'] = False

config_opts['plugin_conf']['yum_cache_enable'] = False

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

config_opts['macros']['%_host'] = 'sw_64-koji-linux-gnu'

config_opts['macros']['%_host_cpu'] = 'sw_64'

config_opts['macros']['%vendor'] = 'KylinSoft'

config_opts['macros']['%distribution'] = 'KylinSoft'

config_opts['macros']['%_topdir'] = '/builddir/build'

config_opts['macros']['%_rpmfilename'] = '%%{NAME}-%%{VERSION}-%%{RELEASE}.%%{ARCH}.rpm'

config_opts['macros']['%packager'] = 'Kylin Linux'

[root@localhost ~]#

1. repo改成自己仓库的地址

2. 红色字体根据自己宿主机的情况修改

3. 其他不变

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

[root@localhost ~]# useradd leechm

[root@localhost ~]# usermod -a -G mock leechm

[root@localhost ~]# su - leechm

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

[leechm@localhost ~]$ mock -r leechm --init          #初始化,不需要加.cfg后缀,第一步必须先init一下

[leechm@localhost ~]$mock -r leechm shell #进入到mock环境中

[leechm@localhost~]$ mock -r leechm --rebuild package-1.2-3.src.rpm   #开始搭建环境并编译,使用此命令每次都会清空原有环境,重新搭建编译环境。

[leechm@localhost~]$ mock -r leechm --no-clean --rebuild package-1.2-3.src.rpm  # 不对环境进行清理,检测并安装依赖的包后,进行编译。

 [leechm@localhost~]$ mock -r leechm --install yum --no-clean #在mock环境中装包,当然也可以shell进去之后直接yum装

其实mock环境跟chroot环境类似,在/var/lib/mock/leechm/root下其实就是一个chroot环境

[leechm@localhost ~]$ mock -r leechm shell

INFO: mock.py version 1.4.14 starting (python version = 3.7.4)...

Start: init plugins

INFO: selinux disabled

Finish: init plugins

Start: run

Start: chroot init

INFO: calling preinit hooks

INFO: enabled HW Info plugin

Finish: chroot init

Start: shell

sh: /sbin/ip: No such file or directory

Welcome to 4.19.90-25.0.v2101.ky10.sw_64

System information as of time: 2021年 10月 08日 星期五 20:22:02 CST

System load: 0.21

Processes: 681

Memory used: 5.2%

Swap used: 0.0%

Usage On: 89%

IP address:

Users online: 0

<mock-chroot> sh-5.0# ls

bin etc lib mnt root sys var

boot grafana-6.7.4-1.ky10.ky10.src.rpm maude-2.7.1 mpir-3.0.0-12.fc34.src.rpm run tamarin-prover yum

builddir home Maude-2.7.1.tar.gz opt sbin tmp

dev leveldbjni-1.8-20.ky10.src.rpm media proc srv usr

<mock-chroot> sh-5.0#


[root@localhost root]# ls

bin etc lib mnt root sys var

boot grafana-6.7.4-1.ky10.ky10.src.rpm maude-2.7.1 mpir-3.0.0-12.fc34.src.rpm run tamarin-prover yum

builddir home Maude-2.7.1.tar.gz opt sbin tmp

dev leveldbjni-1.8-20.ky10.src.rpm media proc srv usr

[root@localhost root]#

总结一下:

总的来说,就是一个cfg文件,放到/etc/mock/下,然后就是绑定普通用户属性,进入普通用户先init初始化,然后shell进入mock环境中,在mock环境中就可以放飞自我了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值