重命名由标准命名的 .deb 文件是否安全?

kef*_*500 13 packaging ubuntu debian deb

.deb文件名的既定结构是package_version_architecture.deb.
根据一段:

有些包不遵循名称结构 package_version_architecture.deb。由 dpkg-name 重命名的软件包将遵循此结构。通常这对 dselect/dpkg 安装软件包的方式没有影响,但其他安装工具可能依赖于这种命名结构。

题:

但是,是否存在.deb强烈建议重命名包文件的真实情况?.deb为我的软件提供自定义文件名是正常做法吗?

例子:

  • My Program for Linux v1.0.0 (Pro).deb — 自定义命名
  • my-program_1.0.0-1_amd64.deb — 正确的官方命名

笔记:

打算创建一个存储库,我只是.deb在我的网站上托管我的软件包以供直接下载。

Ste*_*itt 26

这些年积累了大量.deb非标准名称的包,不记得遇到过什么问题。人们现在可能会遇到的具有非标准名称的“著名”软件包包括google-chrome-stable_current_amd64.debsteam.deb。(在这两种情况下,固定的、无版本的名称可确保稳定的 URL 可用于下载,并确保稳定的名称用于安装说明。)

但是我记得遇到任何名字中带有空格的人;这也不应该导致工具出现问题,但它可能会让您的用户感到困惑(因为如果他们使用基于 shell 的工具,他们将需要引用文件名或转义空格)。

另一点要注意的是,使用与您的包名(存储在control文件中)不同的非标准名称也可能导致混淆,例如在尝试删除包时(因为包名不会是与用于安装它的名称相同)。

因此,如果您不想坚持使用规范名称,我会推荐类似my-program.debor my-program_amd64.deb(取决于您是否要支持多种架构)。如果您想允许下载旧版本,您也可以将其设为版本化文件名的符号链接。


Sim*_*ter 10

文件名的标准化主要是为了存档维护软件和本地缓存。

在过去,在将m68k架构添加到 Debian 之前,文件名使用“ package _ version .deb”,没有任何问题。当归档软件需要存储架构名称添加到文件名i386m68k相同的包和版本的包在同一个目录。由于包列表始终包含长文件名和 8.3 文件名,因此可以在不破坏客户端的情况下实现。

dpkg 通常根本不关心包的文件名。在安装运行期间,APT 会生成一个包含此安装运行的所有包文件的目录,并且每个文件都会在文件名前添加当前运行中的编号(即,如果您安装了包foo版本 1 和包bar版本 2,这foo取决于,容易将通过0-bar_2_all.deb1-foo_1_amd64.deb给dpkg)。

APT 通常假设名称对于缓存目的是唯一的。如果您重复使用一个名称,如果新文件较大,则在其缓存中已拥有此文件的用户将尝试继续下载,这将给他们留下一个无效文件,该文件随后会因校验和测试失败而被丢弃。但是,此错误会向用户显示,他们必须重新启动安装运行。