Closed holymonson closed 2 years ago
source 某些 PKGBUILD 會有意外的輸出,還有可能執行到意外的代碼。 archlinuxcn/repo 裏面跑 pre-commit 的時候用了個精簡過的 parse-pkgbuild 去 source PKGBUILD 然後輸出 .SRCINFO 的格式 https://github.com/archlinuxcn/repo/blob/master/parse-pkgbuild pre-commit 只是檢查,我還沒考慮好能不能把 parse-pkgbuild 搬來 lilac 用
呃,你改错地方了。package.list 是 repocleaner 需要的,而它是不执行 PKGBUILD 的。
@lilydjwg 一样的逻辑,重复的代码,这里统一改了,repocleaner import 再调用不好吗。。 @farseerfc PKGBUILD本身就要求是安全的,不然makepkg的时候就出问题了。意外情况能举个例子?
repocleaner 不执行 PKGBUILD。我是不会让 repocleaner 这类具有 root 权限的程序执行 PKGBUILD 这种外来不安全的代码的。
你要说降权执行倒也还行。但依旧有风险:如果因为某种原因降权后执行失败,那打出来的包就没了。
实际上我都想把 lilac 在 chroot 外执行 PKGBUILD 的代码装进沙盒里执行了。不然哪天遇到个 rm -rf /*
就很惨。
直接在obtain_array
包装,把source PKGBUILD的subprocess的权限设成nobody,我晚点可以给个commit。
好,不过注意 lilac 没权限 setuid,nobody 也没权限读 PKGBUILD。
另外你不要改 lilac2/packages.py 那边。那里要读取的是 pkgbase 不是 pkgname。
lilac2/packages.py 就是读的pkgname啊,一模一样的逻辑。 能先把这个PR打开么?好对着代码说。
咦还真是。这个函数被 in-official-cleaner 用到了,repocleaner 里的是一份副本。
同名函数还不一样的输出。。repocleaner加句下面的可以吧
from lilac.api import get_all_managed_packages
another_get_all_managed_packages = lambda:(t[1] for t in get_all_managed_packages())
repocleaner 复制代码是因为这样部署维护更简单。不是同一用户,无法引用到对方的文件。
checkout stable branch,放固定的地方,让 misc_scripts 里的脚本都可以用? 或者让 misc_scripts submodule lilac 的 stable branch?
checkout stable branch,放固定的地方,让 misc_scripts 里的脚本都可以用? 或者让 misc_scripts submodule lilac 的 stable branch?
还是权限的问题。这个共有的地方由谁的管理?
这个 repocleaner 脚本基本上是 self-contained 的。如果非要共享,最好的做法是和那个 archpkg 模块一样,把对应的文件复制一份。所以共享的部分会从 lilac2 这个包独立出来。
repocleaner 本质上是软件仓库的管理者(和 archrepo2 类似),而 lilac(以及其它几个操作 git repo 的脚本)是打包脚本的管理者。两者角色上有差异。
这个 repocleaner 脚本基本上是 self-contained 的。如果非要共享,最好的做法是和那个 archpkg 模块一样,把对应的文件复制一份。所以共享的部分会从 lilac2 这个包独立出来。
把这个共享的部分扩展一下,就是 misc_scripts submodule lilac,你不手动更新,那就是静态的。只要函数接口不大变,基本不会有太大问题?
差不多是这个意思。
get_all_managed_packages()
中统一用source PKGBUILD去获得pkgname
,就不需要package.list
了。 commit是盲打的,没有经过测试。 fix https://github.com/archlinuxcn/repo/pull/1554#issuecomment-607618213