就是那个问题!
好吧,抛开这些愚蠢的言论,我真的被迫做出一个艰难的决定。我的应用程序是用 C++ 编写的,允许其他脚本通过 XML-RPC 调用方法。其中一个脚本是用 Python 编写的 Nautilus 扩展。该扩展与应用程序的其余部分一起打包,并在安装时复制到适当的位置(/usr/share/nautilus-python/extensions
)。
现在的问题是 Nautilus 扩展需要python-nautilus要安装的包才能运行。因此我有三个选择:
使该
python-nautilus
包成为依赖项。此选项将确保安装我的软件包的任何人都可以使用 Nautilus 扩展。但是,此选项对 XFCE 或 KDE 用户来说并不具有吸引力 - 大量python-nautilus
的依赖项将安装在他们的机器上并占用大量空间 - 即使他们从未使用过 Nautilus。将包裹放入或字段
python-nautilus
中。suggests:
recommends:
此选项为最终用户提供了一种避免安装软件包的方法python-nautilus
(通过提供--no-install-suggests
或--no-install-recommends
参数apt-get
)。但是,当用户在软件中心安装软件包时,这将不起作用。(我总是搞不清楚这两个字段中的哪一个是默认安装的。)在应用程序安装或首次启动时提示用户。此选项比其他选项更复杂,但它提供了最佳折衷方案,既便于用户安装(无需技术解释),又可在用户不需要(或不想要)时不安装。我猜实现此方案的最佳方法是在用户想要安装软件包时
python-nautilus
调用简单的提示。apt-get
根本不要安装该包。此选项可确保没有人
python-nautilus
除非用户想要,否则我的 Nautilus 扩展将无法在最终用户的机器上运行,除非他们手动安装该软件包。
哪一个选项似乎是最佳选择?我是否遗漏了每个选项的利弊?
答案1
他们的机器上将安装大量 python-nautilus 的依赖项
你知道,我想“让我们看看这是非洲吨还是欧洲吨”,然后......
python-nautilus 依赖: libc6 依赖: libglib2.0-0 依赖: libgtk-3-0 依赖: libnautilus-extension1a 依赖: libpython2.7 依赖: python-gi 依赖: gir1.2-nautilus-3.0
在XFCE/Xubuntu和桌面环境/Lubuntu:
将会安装以下额外的软件包: gir1.2-nautilus-3.0 将会安装以下新软件包: gir1.2-nautilus-3.0 python-nautilus 升级了 0 个,新安装了 2 个,删除了 0 个,并且未升级 3 个。 需要获得25.2 千字节的档案。 这次手术后,410 kB 额外磁盘空间将会被使用。
在KDE/Ubuntu:
将会安装以下额外的软件包: gir1.2-atk-1.0 gir1.2-freedesktop gir1.2-gdkpixbuf-2.0 gir1.2-gtk-3.0 gir1.2-nautilus-3.0 gir1.2-pango-1.0 libgtk-3-0 libgtk-3-bin libgtk-3-common libnautilus-扩展1a 建议的软件包: librsvg2-通用 gvfs 将会安装以下新软件包: gir1.2-atk-1.0 gir1.2-freedesktop gir1.2-gdkpixbuf-2.0 gir1.2-gtk-3.0 gir1.2-nautilus-3.0 gir1.2-pango-1.0 libgtk-3-0 libgtk-3-bin libgtk-3-common libnautilus-extension1a python-nautilus 升级了 0 个,新安装了 11 个,删除了 0 个,并且未升级 2 个。 需要获得2,835 千字节的档案。 这次手术后,8,672 kB 额外磁盘空间将会被使用。
因此,对于 XFCE/LXDE 来说几乎没有什么,而对于 KDE 来说只有 8.5MB(这并不是世界末日)。
我建议制定...建议。除非另有说明,否则将由 /Synaptic/Software Centerpython-nautilus
作为依赖项进行安装。apt-get
对于少数拒绝使用apt-get
但知道推荐和依赖项之间的区别并且不想要推荐的用户,APT::Install-Recommends=0
Synaptic 和软件中心都会接受该属性。可以从 Synaptic 首选项中以图形方式设置该属性,也可以通过 手动设置/etc/apt/apt.conf.d/
。
答案2
这取决于 Nautilus 扩展对于你的应用程序有多重要:
python-nautilus
如果你的应用程序没有依赖就无法使用- 如果你的应用程序没有它也可以正常使用,但缺少一些重要功能,那么就将其作为
Recommends
- 如果只是让它成为一个
Suggests
我更愿意将扩展作为自己的包,而不是使用Suggests
。这样,如果用户想使用该扩展,他就可以更轻松地找到需要安装的内容。