2

如果我创建了一个 FOSS 命令行实用程序(即应用程序而不是)并且我想将它作为一个包分发以方便安装,那么通过以下方式执行此操作是否更好

注意。如果您认为没有普遍正确的做法,而是认为在特定情况下一种或另一种方法显然是最好的,那么这些情况是什么?

4

2 回答 2

1

根据这篇博文,你应该这样做的主要原因

切勿在 Debian 系统上使用 setuptools/ez_setup 在系统范围内安装 Python 模块

  1. 您可以在不同的安装路径中拥有相同 Python 模块的不同版本(通过easy_install和安装aptitude

  2. 没有easy_uninstall。(但是,pip似乎能够做到这一点:如何删除使用 Python 的 easy_install 安装的软件包?

这同样适用于 CLI 工具,它也是某种(Python)模块。

当然,easy_install与所有系统包管理器的打包相比,打包所需的工作更少。但是,您为什么不打包您的工具,easy_install并向熟悉针对特定目标打包的人寻求帮助呢?submit@bugs.debian.org(对于 Debian,您可以尝试发送主题以“[needs-packaging]”开头的电子邮件。)

让我仅从我作为用户的有限经验——Python 和 Debian/Ubuntu 来说明。当我最终从 Windows 切换到 Ubuntu 时,主要原因之一是可以轻松安装几乎所有为 Debian 打包的软件。第一个过渡时期的问题之一是:

“最近的多路diff工具是什么?好的,有融合和扩散。让我们看看……”

sudo apt-get install meld diffuse

“好的。这个剪贴板管理器叫做 Parcellite?”

sudo apt-get install parcellite

“我喜欢Task Coach。他们有吗?”

sudo apt-get install taskcoach

“现在为什么svn不安装开箱?”

sudo apt-get install svn
... (some error)
apt-file search svn
... (tl;dr)
apt-file search svn | grep /svn$
sudo apt-get install subversion

如此多的方便包装。请注意,至少提到的前两个工具是纯 Python 工具,但我不在乎——系统包管理器为我做了一切。如果这是唯一的选择,也许我什至会使用它来安装它们easy_install,但是我本可以意识到使用easy_install.

于 2012-06-28T19:34:26.730 回答
0

在我看来,对于用户对其分发方式感到满意的应用程序而言,所遵循的程序大致如下:

在此处输入图像描述

举个例子:

  • Bundler:用 Ruby 编写,对 Ruby 开发人员有用;通过应用程序级包分发。
  • fwknop:用 Perl 编写(至少最初是),对最终用户有用;通过系统级包/安装程序分发。
  • Pandoc:用 Haskell 编写,可能对 Haskell 开发人员在开发 Haskell 应用程序的过程中有用,但对其他人也有用;通过应用程序级和系统级 分发。

可能有比这些更好的例子。此外,到目前为止,我的结论只是观察性结论:我还​​没有找到明确列出此决策流程的参考资料。因此,我欢迎更全面的答案。

注意。流程图的代码是在线的,以防您想根据自己的答案对其进行调整。为了能够使用它,你需要一个工作的 LaTeX 安装。

于 2012-06-29T05:22:01.707 回答