前言
前几天我在给p maports 提交 PR 的时候偶然浏览了一下 PostmarketOS 的构建工作流的配置文件的时候偶然发现了这行:
1 | yes "" | pmbootstrap --aports=$PWD/pmaports -q init |
我一直以为 yes 命令
就是个不断输出 yes
的奇葩玩意儿,现在看来还可以通过管道符来实现自动输入的操作。
配置文件
让我们看看 pmbootstrap init
的流程:
1 | user@pmos-build ~> pmbootstrap init |
稳定的其中一个坏处就是软件包太老,更何况 pmbootstrap 原来是可以通过 pip 安装的:
1 | user@pmos-build ~> pip install pmbootstrap |
虽然可以用 pipx 这样的方式来解决,但是我试过不知道为什么装不了。
我一直认为 pmbootstrap 初始化后应该会保存配置的。因为你再执行一遍 pmbootstrap 的时候会显示你第一次配置过的选项。
然后我就在折腾管道符的时候知道了 --details-to-stdout
选项:
1 | $ ~> printf "%s\n" "edge" "xiaomi" "raphael" "user" "xfce4" "n" "none" "en_US" "xiaomi-raphael" "y" | ./pmbootstrap/pmbootstrap.py -q init |
然后使用 --details-to-stdout
选项运行:
1 | [05:20:52] Pmbootstrap v3.0.0_alpha (Python 3.10.12 (main, Jul 29 2024, 16:56:48) [GCC 11.4.0]) |
然后就找到了配置文件:
1 | [pmbootstrap] |
这是之前的的配置:
1 | [pmbootstrap] |
于是就有了一个大胆的想法:
我们可以先把配置文件放到指定目录然后再使用 yes 管道符进行全自动确认:
1 | - name: Initialize pmbootstrap |
当然这种对于新设备来说是不使用的,不过我们可以使用下面的方法进行初始化(未验证):
1 | - name: Initialize pmbootstrap |
-------------本文结束感谢您的阅读-------------