You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

关于安装更新后的Deb包时保留已部署文件的技术咨询

关于安装更新后的Deb包时保留已部署文件的技术咨询

嘿,这个问题问得很接地气——很多人维护Deb包时都会碰到这种要保留旧文件的场景,我给你分享两个靠谱的解决办法:

方法一:把目标文件标记为配置文件(Conffile)

dpkg对配置文件的处理逻辑和普通文件不一样:即使新包不包含该文件,它也不会自动删除,只会保留现有版本。你可以手动修改系统上的dpkg包信息来实现:

  • 先确定你的包名,比如叫my-app-package
  • 编辑/var/lib/dpkg/info/my-app-package.conffiles文件,在末尾添加上F文件的绝对路径(比如/opt/D/F,根据你的实际路径调整)
  • 保存文件后,再执行apt install ./new-version-package.deb,此时dpkg会把F文件当作配置文件,不会删除它

方法二:用dpkg-divert转移文件,让包管理器忽略它

这个方法适合不想修改包信息的场景,通过转移文件让dpkg管理另一个副本,你的原文件就能不受影响:

  • 执行以下命令,把原F文件转移到dpkg管理的备用路径:
    dpkg-divert --add --rename --divert /path/to/D/F.dpkg-managed /path/to/D/F
    
    这条命令会把原来的/path/to/D/F重命名为/path/to/D/F.dpkg-managed,之后dpkg只会对这个重命名后的文件进行操作,你可以把原F文件放回/path/to/D/F位置,它就不会被包管理器影响了
  • 安装新包后,如果想要恢复默认的包管理逻辑,执行:
    dpkg-divert --remove /path/to/D/F
    

另外还有个临时应急方法:安装新包前先备份F文件,安装完成后再把备份文件复制回原目录——虽然简单,但如果包安装过程中有依赖处理或者文件权限变更,可能需要额外调整权限,所以优先推荐上面两种方法。

备注:内容来源于stack exchange,提问作者Ulisse Rubizzo

火山引擎 最新活动