mock知识点2——mock配置
1、mock配置文件
mock的配置文件在逻辑上可以分成两类,一类是通用配置(对于每个执行的mock命令都有效);另外一类是chroot配置(只有在选择相应的chroot时使用).
通用配置和chroot配置都可以在系统级(/etc/mock
目录)或者用户级($HOME/.config
目录下的文件)进行配置.
1.1、选择一个chroot配置
例如,要初始化Loongnix Server 8 loongarch64 chroot(使用/etc/mock/loongnix-8-loongarch64.cfg
文件(因为Loongnix Server 8衍生自CentOS 8,所以这个文件修改自/etc/mock/centos-8-x86_64.cfg
)),然后切换到chroot中,可以使用如下命令:
[huangyang@bogon ~]$ mock -r loongnix-8-loongarch64 --shell
INFO: mock.py version 3.5 starting (python version = 3.6.8, NVR = mock-3.5-2.lns8)...
Start(bootstrap): init plugins
INFO: selinux disabled
Finish(bootstrap): init plugins
Start: init plugins
......
Finish: chroot init
Start: shell
<mock-chroot> sh-4.4# ls
build
<mock-chroot> sh-4.4#
注意: 这种情况下,我们在-r
选项中没有添加chroot配置文件后缀名“.cfg”。这样,首先到用户级配置目录$HOME/.config
搜索相应的“.cfg”文件,如果没有找到,那么就去系统级配置目录/etc/mock
中查找对应的文件(并使用)。
-r
选项也可以使用相对路径名。 但路径名必须代表一个存在的文件(可从当前工作目录访问):
[huangyang@bogon ~]$ sudo mock -r ./subdir/existing-config-file.cfg --shell
[huangyang@bogon ~]$ sudo mock -r loongnix-8-loongarch64
1.2、修改通用配置
通常情况下,如果只对当前用户有效的话,可以修改$HOME/.config/mock.cfg
文件;如果需要改变的是系统mock的行为(对系统中每个用户都生效),那么就修改/etc/mock/site-defaults.cfg
文件。通用配置的具体内容及含义参见文档/usr/share/doc/mock/site-defaults.cfg
。
1.3、修改chroot配置
/etc/mock/
目录下有各种的xxx.cfg
文件用于构建各种chroot。这些文件中包含与目标发行版相关的各种兼容性设置(RPM仓库位置、使用DNF或YUM、使用的工作目录 等等)。
这些系统文件是通过mock-core-configs(或其他)提供的,不鼓励用户更改这些文件(更改会破坏使用新版软件包自动更新此类文件)。在本地目录覆盖配置文件更安全:
[huangyang@bogon ~]$ cat $HOME/.config/mock/loongnix-8-loongarch64.cfg
# include the default configuration
include("/etc/mock/loongnix-8-loongarch64.cfg")
# install make into the minimal build chroot
config_opts['chroot_additional_packages'] = 'make'
也可以复制和编辑一个现有的配置文件,然后作为新的chroot配置文件:
[huangyang@bogon ~]$ cp /etc/mock/loongnix-8-loongarch64.cfg ~/.config/mock/foo.cfg
如果Koji中正在使用的是你所需要的配置,那么你可以使用Koji客户端工具来生成配置文件:
[huangyang@bogon ~]$ koji mock-config --tag lns8-build --arch=loongarch64 lns8 > ~/.config/mock/foo.cfg
1.4、载入配置文件的顺序
Mock中读取和评估配置文件的顺序如下:
- /etc/mock/site-defaults.cfg
- /etc/mock/<buildroot>.cfg or ~/.config/mock/<buildroot>.cfg
- ~/.mock/user.cfg
- ~/.config/mock.cfg (since mock-1.2.15)
即后面的配置文件中设置的值会覆盖之前加载的文件所设置的值。