我是 Mac 的新用户,但也是 Linux 的老用户。有人能告诉我从 .dmg 映像安装软件(如 Subversion)与在命令行上从源代码编译和安装之间的区别吗?软件最终位于同一位置吗?还存在哪些区别,例如卸载过程?您认为一种方法相对于另一种方法的优缺点是什么?
答案1
A.dmg
只是一个虚拟磁盘(“磁盘映像”),其本身与安装无关。
当磁盘映像仅包含一个应用程序时(通常会有一些说明性文字要求您将其拖到“应用程序”文件夹中),则所有代码和支持文件都包含在该文件中。该应用程序负责在首次启动时进行任何设置,并负责提供卸载机制(如果有)是稍后安装。许多开发人员正在使用火花框架来查找并安装更新。
如果磁盘映像包含软件包(.pkg
或.mpkg
),则为安装程序。运行它可以将文件安装到系统的任何位置并运行安装前和安装后脚本,并且没有内置的卸载或升级机制(不过,系统会保留已安装软件包的日志,因此,如果您稍后运行软件较新版本的安装程序包,其行为可能会与首次安装时不同)。在这种情况下,开发人员也负责卸载和更新。负责任的开发人员会将软件包安装到标准目录(/Applications
、/Library
和~/Library
、/usr
等)。
对于通常从源代码安装的命令行软件,我建议使用如下包管理器麦金塔(我的偏好)或芬克而不是使用安装程序包。这两个包管理器都设置了一个独立的目录(分别为/opt
和/sw
),其中包含它们安装的软件的所有支持文件和可执行代码(大多数包都遵守这一点),并将自己添加到您的$PATH
。使用包管理器的一大优势是它会跟踪已安装的软件并让您能够升级或卸载它。
答案2
答案3
这有点复杂,因为 DMG 内部可能有一个简单的拖放解决方案,或者一个.PKG,可以在任何位置安装东西。.pkg 通常会留下收据(通常在 /Library/Receipts 中),尽管 OS X 没有提供管理这些收据的简单方法。
Pacifist 是一款实用的应用程序,它可以在安装前检查 .pkg 文件(许多命令行应用程序都使用它来自定义安装位置),这样您就可以准确了解可能安装的位置。然后,您可以确定您的自编译版本是否会安装在同一位置,以及它们是否会与系统版本冲突:
具体来说,您需要确保如果它们安装在不同的位置,您的路径会反映您想要使用的所需版本。我怀疑安装多个版本的 subversion 不应该有问题...对于 Ruby,我使用 ruby19 作为 ruby 可执行文件的名称,以避免出现任何不兼容代码的路径问题。
有一个功能不太强大但免费的 .pkg 文件 quicklook 插件,它可以完成显示安装位置的基本工作: