![全局目录中的文件持久性](https://linux22.com/image/961034/%E5%85%A8%E5%B1%80%E7%9B%AE%E5%BD%95%E4%B8%AD%E7%9A%84%E6%96%87%E4%BB%B6%E6%8C%81%E4%B9%85%E6%80%A7.png)
在我看来,我写入全局目录(例如 /usr)的某些文件不是持久的。具体来说,我发现一些自编译软件(webkit-qt)在全局目录中的安装会在一段时间后中断,直到我重新安装它。相关的 webkit 安装由包管理同时安装以完成依赖关系。所以每次安装时,我肯定会覆盖其中一些文件。请不要告诉我这样做不好。我知道这一点。我只是想知道 ubuntu 中是否有某种机制可以恢复文件的旧版本(当然,除了我重新安装某些包时的包管理之外)!
答案1
如果您想要转移与已安装(或打算安装)的软件包相关的文件,以便可以用自己的文件替换它们,但稍后再恢复它们,您应该使用命令dpkg-divert
。
由于我不了解您的情况的所有细节,因此除了手册页中提供的信息之外,我很难推荐具体的语法。
除了软件包管理器及其工具(包括dpkg-divert
)之外,Ubuntu 的任何部分都不会修改 中的文件/usr
,但如果您下载并运行安装程序可执行文件,或者从源代码构建软件并指定安装前缀/usr
,则文件将被添加或覆盖。您从源代码构建并安装的大多数软件sudo make install
默认都有PREFIX=/usr/local
,但有些软件默认为 ,因此在构建和安装软件之前,PREFIX=/usr
值得通过运行./configure --help
或阅读进行检查。Makefile
另一个例外是,/usr
像/usr/local
这样的部分旨在由包管理器以外的工具进行更改。但你似乎没有问这个。像/usr/bin
和这样的目录的内容/usr/lib
只能由包管理器修改,除非你手动修改它们或告诉第三方安装程序或构建过程将文件放在那里。