为了我做的一些东西(这过去只是口头传播,只有非常狭窄的、通常是非技术性的用户群感兴趣),我希望能够提供一个.deb
文件以便于安装。
该东西没有任何需要在系统中安装的实际文件。相反,它需要向现有文件(属于xkb-data
Debian 派生发行版上的包)添加一些行。据我所知,在搜索和询问之后,没有办法将这些行放入新的单独文件中,并且仍然让系统拾取它们,所以我写了一个耙文件进行安装。这很有效,但需要用户与命令行交互,而命令行并不总是那么有效。另外,每当xkb-data
通过包管理器更新时,都需要手动再次运行 rake 任务,这很麻烦。
我知道关于Dpkg推迟和Dpkg触发器,但这些似乎都不适合或适合处理上述问题(不过,如果我错了,请纠正我!)
有没有办法获得 Debian 软件包自动地根据其一个或所有依赖项刚刚更新的条件导致其自行重新安装?我显然也对一种黑客方式感兴趣,不要破坏Debian该死的。
答案1
解决此问题的一种合理方法如下:
- 转移您修改的所有文件,以便
dpkg
不再替换它们,而是使用不同的名称安装它们; - 让您
Rakefile
使用新命名的文件而不是原始文件来完成工作,读取新命名的文件并写入原始文件; - 安装一个调用后
dpkg
钩子,在/etc/dpkg/dpkg.cfg.d
其中运行Rakefile
后运行dpkg
。
您可以添加额外的检查,例如,仅Rakefile
在原始文件的校验和自上次生成修改文件以来发生更改时才运行,但这与Rakefile
每次dpkg
运行相比可能不会节省太多时间,并且会增加相当多的时间维护复杂性。 (我写这篇文章是假设你的Rakefile
行为像一个 Makefile,IE如果其目标比其先决条件更新,则不会执行任何操作,但我的印象是这里的情况并非如此,因此添加额外的检查或更改为Rakefile
在无事可做的情况下不执行任何操作可能更相关。或者您可以在 Makefile 中重写您的处理。)
我想您已经想到了这一点,但我认为理想的解决方案是添加新的键盘类型,而不是更改现有的键盘定义;但这很可能存在一些我没有想到的问题。