我经常问自己和其他人这个问题,在解决为什么Linux的安装程序更少的问题之前,我想先解决一下我经常提到的一个问题:
Linux发行版提供程序包管理器。
但是,我不会说Linux发行版的软件包管理器可以代替安装程序,部分原因是:
这些程序包管理器在操作上没有标准化
软件包管理器有点像提供二进制文件,然后让最终用户选择安装程序。他们可以选择终端,也可以选择具有更高级GUI的工具,但是与“传统”安装向导相比,该工具无法为您提供相同级别的过程控制。
我所说的控制的一个例子是文档。您不能向最终用户提供“单击下一步,而您应该看到”的说明。您可以为特定工具提供命令行说明,但是您不仅要依靠用户拥有该工具的事实,而且还要失去安装向导的大部分优势(毕竟,大多数向导都提供了前端-end获取简单的命令行说明并启动脚本)。
这也与美学联系在一起。现在,您可以依靠最终用户的分布来提供直观/适当的界面。尽管您充分了解了这一事实,但如果双击文件(在他们看来是安装程序)打开了一个丑陋的包管理器,什么也不做,或者最糟糕的是打开了一个终端,那么对于一个比较随意的用户来说,抱怨并不是没有道理的窗口。(我对用户的体验以及他们对“ dos提示” /“黑白框” /“如果他们觉得很有趣,将会删除其所有文件的东西”的厌恶可能会填满一本书)
软件包格式在各个平台上均未标准化。
有工具类系统之间的转换rpm
和deb
,但它不是合理期待您的最终用户,如果你使用他们的包把在将在其他平台上提供一个安装向导的情况下(即点击和全熟)。如果您具有基本的构建系统,则可以直接提供其他软件包格式的最新软件包,但是您仍在添加需要支持的新二进制文件。
这也增加了人们不得不根据平台选择的新二进制文件(听起来很小,但是我敢肯定,这里的人可以证明必须先解释x86 vs x64 [是的,有很多方法可以从中推论出正确的平台。浏览器,但随后您将陷入更加复杂且难以支持的过程])
软件包管理器对开源软件“比较敏感”。
这并不是说您不能与软件包管理系统共享闭源软件,这绝对可以做到。但是,一旦您尝试在Linux发行版上共享近源软件,就涉及将软件放入通用存储库的选择而言,您将陷入困境。PPA或openSUSE Build Service之类的东西都不可用了,默认情况下甚至不启用Canonical合作伙伴存储库。
这意味着,除非您提供自己的存储库,否则软件包管理系统将无法拥有许多主要功能,包括自动更新。我认为,这是使用这些系统的大多数平台(例如iOS,Android和Windows Store)的最重要优势。
即使您提供了一个存储库(另一个琐碎的可变工作),您仍然需要让用户对其进行设置(这是另一层支持,另一组非标准方法,以及从原始点的另一种转移)。安装程序)
现在,尽管如此,我仍然没有解决最初的问题,尽管有这些因素(除其他因素外),为什么安装程序在Linux上却不那么常见。最初的问题询问它是技术性的还是基于约定的,并且部分基于两者。
如果您看一下我提到的上述因素,对于“类似向导”的安装程序,它们也会使事情变得更加复杂。例如,您的向导会包含多种要安装的软件包格式吗?您如何处理各个发行版本的外观?清单还在继续,该软件包确实为您提供了一件事,那就是只要您提供正确的软件包,这些都不是您的问题(无论好坏)。并且,根据项目的性质,您可以开始利用那些更多的“专业”资源,例如将应用程序提交到Ubuntu软件中心。这都与技术有关。
但是我个人认为是推动力的方面是惯例。(我希望我已经把它埋得足够深,以至于那些对遗忘的其他答案持否定态度的人已经停止阅读。)
我觉得发帖人有一点要说,但可能直言不讳,实际上并没有提供客观的理由。如果您检查了我为软件包管理器和安装程序所说的差异,如果您发现它们中的大多数几乎不是问题(甚至可能是学究式的),我不会感到惊讶。但是(请原谅,我希望这是对ad hominem参数的合法使用),我们还是程序员的现场用户。我认为Linux发行版是休闲用户的绝佳Windows替代品(显然还有很多其他事情)。不提供所有这些用户都可以使用的通用定义的单击并完成过程并不是理想的imo。
但是同时,我也没有发现Linux中有很多事情对于该小组来说尤其理想。当然有些发行版有基于GUI的软件包管理器,但是这意味着这些人不得不开始寻找到如何使用一个单独的工具,对不严格专注于你的程序的安装(比较这个和这个来此)。
自然,您可以使用GUI来完成一般休闲用户所需的大部分工作,尤其是在某些发行版中(讽刺的是,这些发行版的工作并不总是被开源社区所接受[请查看有关Ubuntu的抱怨,花园”])但是,我认为Linux约定不赞成使用CLI的人是不值得的,或者至少不会致命地担心它的出现意味着他们做了非常可怕的错误。
我并不是说这是他们的目标,但我确实看到了这些约定。Linux中的软件包管理系统似乎也遵循了这一点。毕竟,如果您的最终用户对基本概念更满意,那么它们的大多数“缺点”几乎是不存在的。
大多数其他平台上的安装程序并没有真正受此影响,因此设计为对以下问题发表评论:“ 99.99%的用户[可以]盲目单击”继续”。软件包管理的问题是使这些用户一个“继续”按钮,让他们知道“继续”按钮是什么(我见过用户被那些说按Enter并带有其他文本的工具绊倒了),并让他们知道何时点击该按钮“ “继续”按钮”阶段。