嗯,想把一些想法实现了…目前主要有以下三个:
- installed packages,instdpkg 想要解决这么一个情境:我就更新了一下,就不能用了。我也不知道/忘了更新过什么。其实 zypper 的 log 一直都存着,只是许多人不会看(能这么提问自然不会看日志的居多)。
主要结构就是一个 filter + parser,按日期和时间把那次操作安装的包筛选出来,然后用漂亮的格式显示在终端上面。结合下面要说一个想法到时甚至能把文件变动都找出来。
这样不但方便了用户(提供信息更加靠谱),也方便了帮忙的人(更稳了,也不用肉眼去筛日志了)。
- packman switcher,pkmswch 想要解决的情境是:我把解码器包切到 packman 源了,但是可能没有切换完全,造成比如之前解决过的一个问题那样,ffmpeg 能剪切视频但是因为用的 oss 的 libavformat57 导致不能封装成 mp4。这样的问题很难调试,尤其在用户言之凿凿地告诉你他用的就是 packman 的包时。一个 pkmswch 甩过去,全知道了。
做起来也挺方便的,就是把 oss 里对应包的版本找出来,只要 release number 一样就可以判断是同一个包啦(在 packman 编译和 obs 编译出的包的 release number 鲜有相同)
- tw-wayback,wayback 想要解决的事情就是,给 openSUSE_Tumbleweed 加一个 rollback machine。但要足够简单,像 Arch Linux Archive 那样的是不行的,因为第一没有服务器,第二运维的工作量太大。
目前的想法是做一个在服务区和本地都能跑的。目标是在本地存储的东西尽量少。想法是先存一下 tumbleweed 的 metadata,里面包括了那个基准版本的源里所有软件的版本号,下次 tw 更新时(这个没必要做 watchdog,因为用户自行运行的话,只需要现在所用系统的关键软件的版本号,也就是说,他升级完了自己存一份 metadata 就行了,服务器另当别论),再下一份最新的 metadata,与老的比较,把更新的软件筛出来,然后利用 deltarpm 工具做一个可以用它把新版本降为老版本的差值rpm,保存即可。tw 每次更新都不大,所以存储空间应该也不大。
这样,某个包出问题就可以回退,甚至直接回滚到上一个版本的 tumbleweed。当然用 snapper 更好一些,可是不是每个人都会用也不是每个人都有 btrfs 分区。
从我的 iPhone 发送,使用 Tapatalk