【问题标题】:Will it be practical to implement deb preinst, postint, etc. scripts in Python, not in sh在Python中实现deb preinst,postint等脚本是否实用,而不是在sh中
【发布时间】:2012-07-06 01:13:54
【问题描述】:

我对使用 Python 进行 deb 包流控制脚本(preinst、postinst 等)时可能存在的缺陷(目标系统中未安装 Python 除外)感兴趣。在 Python 中而不是在 sh 中实现这些脚本是否可行?

据我所知,这至少是可能的。

【问题讨论】:

  • 您可以使用任何语言,只要 preinst 或任何可执行文件。它可以是带有适当 hashbang 的 chmod +xed 脚本或已编译的 C 程序。
  • tcc 用于将 c 编译为脚本语言 ;)
  • 你可以,但你为什么要呢? sh 和它的功能一样好,它是一种用于调用各种程序的胶水语言。流控制脚本中没有太多逻辑,甚至没有计算——它主要是移动文件、更改权限、创建符号链接......
  • +1 反对恕我直言毫无根据的接近投票。

标签: python debian packaging deb


【解决方案1】:

afaik 不常这样做的唯一原因是它不符合惯例,而且对于维护者脚本所做的各种事情,Python 通常并不比普通的 shell 脚本更有用或更直接。当它更有用时,您通常可以将需要 Python 的功能分解为单独的 Python 脚本,由维护者脚本调用。

在这种情况下遵循惯例会有所帮助,因为有很多有用的工具和脚本(例如 Lintian、Debhelper)通常假定维护者脚本使用 bash。如果他们不这样做,那没关系,但这些工具可能不如其他工具有用。我认为您需要注意的唯一另一个问题是,如果您的 preinstpostrm 脚本需要 Python,那么 Python 需要成为您的包的预依赖项 (Pre-Depends) 而不仅仅是 @987654324 @。

也就是说,我发现以前在维护者脚本中使用 Python 很有用。

【讨论】:

  • 哦,我还想过要从 main sh 调用单独的 Python 脚本,因为仍然可以在 Python 中更好地实现一些逻辑。我认为 python 作为依赖项并不是什么大问题,因为它通常预装了几乎所有流行的基于 debian 的操作系统。我看到此类脚本支持的最大问题。基本上你需要小心 Python 版本,因为它不像 sh 那样稳定。感谢您的回答。
  • 这确实带来了另一个有效的问题;如果您针对特定的 Python 版本,您将无法支持所有当前流行的基于 Debian 的操作系统。例如,最老的 Ubuntu LTS 版本(8.04)只支持 Python 2.5,而 Ubuntu 10.04 只支持 Python 2.6,Ubuntu 12.04 只支持 Python 2.7。但是如果你能写出兼容的 Python(不是那么难),你应该没问题。
猜你喜欢
  • 2018-03-04
  • 1970-01-01
  • 2016-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多