系统级与应用程序级软件包分发

时间:2012-06-20 16:15:34

标签: rubygems package packaging easy-install software-distribution

如果我创建一个FOSS命令行实用程序(即应用程序而不是)并且我想将其作为包分发以方便安装,通过

进行此更好的做法

NB。如果您认为没有一般正确的做法,而是在某种情况下,其中一种或另一种方法明显最佳,那么这些情况又是什么呢?

2 个答案:

答案 0 :(得分:1)

根据this blog entry,您应该

的主要原因
  

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

  1. 您可以在不同的安装路径中使用相同的Python模块的不同版本(通过easy_installaptitude安装)

  2. 没有easy_uninstall。 (但是,pip似乎可以执行此操作:How do I remove packages installed with Python's easy_install?

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

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

    让我仅从我作为用户的有限经验 - Python和Debian / Ubuntu来讲述。当我最终从Windows切换到Ubuntu时,其中一个主要原因是几乎所有为Debian打包的软件的无痛安装。第一个过渡期间的一个问题是:

    “最新的多向差异工具是什么?好吧,有融合和弥漫。让我们看看......”

    sudo apt-get install meld diffuse
    

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

    sudo apt-get install parcellite
    

    “我喜欢任务教练。他们有吗?”

    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了解系统范围安装的风险,并且会丢弃它。

答案 1 :(得分:0)

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

enter image description here

举个例子:

  • Bundler :用Ruby编写,对Ruby开发人员有用;通过应用程序级包分发。
  • fwknop :用Perl编写(最初,至少),对最终用户有用;通过系统级软件包/安装程序分发。
  • Pandoc :用Haskell编写,在开发Haskell应用程序的过程中可能对Haskell开发人员有用,但对其他人有用;分发两者 via application-level and via systems-level packages

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

NB。流程图的代码为online,以防您希望根据自己的答案进行调整。为了能够使用它,您需要一个有效的LaTeX安装。