【问题标题】:Choose when files gets unpacked when installing .deb file安装 .deb 文件时选择文件何时解压
【发布时间】:2020-10-06 10:04:07
【问题描述】:

我正在创建一个 Debian 软件包,我有 3 个名为 /backup /usr 和 /var 的主目录。我想解压 /backup 文件夹,然后在解压其余文件夹(/usr 和 /var)之后对里面的内容做一些事情。我在备份文件夹中有一些文本文件,其中包含我需要在 Debian 软件包解包并覆盖所述目录中的文件之前在 /usr 和 /var 目录中备份的文件信息。

【问题讨论】:

  • 不确定我是否理解。 “解包”阶段是覆盖文件(来自 .deb)。 BTW /backup 是一个可怕的目录选择 [使用 /var/lib/yourpackage/backup)。我认为您应该以标准方式使用 .deb,或者您应该更多地研究它是如何工作的。在这种情况下,我认为您需要一个 preinst 脚本来备份文件。目录的创建通常较早完成。
  • 感谢您的回复。无论备份目录位于何处,我面临的问题是在复制目录之前 preinst 触发。我需要在 preinst 之前存在备份文件夹及其内容。之后,应创建/安装其余目录及其内容
  • 您需要备份的内容吗?或者只是创建正确的目录?如果不在 /usr 中安装东西,而是在 /var/lib 中安装东西,然后 postisnt 会在你想要的时候覆盖文件 [但我觉得它很难看,因为现在你没有跟踪哪些文件属于哪个包]。我很难理解你在做什么[所以重新定义]。而不是备份,你应该有原始包,来恢复文件[通常的方式]
  • 让我解释一下,我们开发自己的内部软件。该软件安装在 /usr/local/x/y/z 和 /var/www/html/x/y/z 中。我在我们的 git 服务器上运行管道来编译新的/修改的文件。然后,我们使用这些文件创建一个 debian 包,以修补/更新到新版本。我们读取管道中已更新和修改的文件并将其写入文本文件。该文本文件位于包的备份目录中。我想阅读该文本文件,以便在替换新文件之前备份旧文件。希望这更有意义。
  • 对于可执行文件我看到了一些问题:用户如何选择要安装的补丁?第一次安装?您应该在补丁之前强制主程序。对于二进制部分,我只会分发一个包含所有二进制文件的软件包(我们 [Debian] 更改软件包的版本,就在我们更改维护者时(所以只是元数据)。磁盘,网络很便宜。[/usr/local 用于 sys管理员(本地更改)。/opt 对外部包可能更好]。对于 html 我不知道,但第一点(如何更新,选择)让我明白了。但也许 .deb 不是最好的方法部署。

标签: debian deb dpkg


【解决方案1】:

您似乎正在尝试重新实现存储库和 dpkg 应该做的事情。

如果文件已经在 git 中,那么备份这些文件有什么意义?您可以只保留所有生成的 .debs,并且您会自动为每个“快照”备份。

如果由于某种原因您正在删除这些软件包,并且仍想生成备份,我认为尝试从 dpkginvoke 挂钩中挂钩 dpkg-repack 可能更简单,这样您就可以生成 .debs out安装新版本之前的已安装文件。如果这也不起作用,因为有太多的文件会使 .deb 膨胀,我想另一种选择是将列表直接注入到 preinst 脚本中,而不是将其保存在 filsystem 中,正如你所说的那样不会在执行 maintscript 时可用。但是 TBH,所有这些似乎都在使用错误的工具来完成这项工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多