开发人员为什么不在Linux上制作安装向导?[关闭]


34

我敢肯定这不是关于懒惰之类的事情,但是我无法理解为什么什至主要面向消费者的应用程序的开发人员都没有做出任何安装向导来进行下一步。相同的应用程序通常都具有Windows和Mac OS的安装程序,那么为什么不使用Linux?

这种趋势是否有任何技术原因,还是仅仅是惯例?

编辑(2014年9月23日):并未询问此问题来启动Windows vs Linux的火焰大战。我已经使用了所有3种主要操作系统,除了Linux,其他两个(Windows和Mac OS)都具有安装程序。我尚未安装Oracle,但无论需要安装什么,都从未见过任何Linux的GUI安装程序。

是的,我知道Linux具有软件包管理器,因此开发人员无需“不需要”进行安装。但是,仍然有大量软件要么在默认程序包管理器中已过时,要么根本不可用。另外,由于Linux是针对休闲用户的Windows的替代产品(Ubuntu在该领域正在努力),因此仅向用户提供他们熟悉的内容会更有意义。

例如,设置一个LAMP堆栈。这些都是默认存储库中的所有开源软件,但是您可以在没有脚本的情况下一次性设置所有内容吗?现在查看Windows中的WAMP服务器。您只需要运行一个安装程序,它就会以相互协作的方式安装多个软件。然后,它会设置好的默认值和内容。安装程序可以做到这一点,而程序包管理器则不能。是的,您可以在网上找到该脚本,但是在哪里?哪一个?

安装程序不是过去的过时技术。它们仍然有用,并且95%的用户已经对它们感到满意。


12
没有缺少。Windows 不是 Linux。Linux 不是 Windows。
edmz 2014年

27
@ Arsalan00您错过了重要的一点。通常有一个用于程序包管理器的GUI(Ubuntu软件中心,Synaptic,YaST等)。
nyuszika7h 2014年

30
我永远无法理解此类向导的意义,无论如何,99.99%的用户都会盲目单击“继续”,因此,无提示,非交互式安装更加有意义。
2014年

7
@DebugErr一个简单的笑话让您很生气。无意冒犯。
迈克尔·汉普顿

6
这是许多迹象表明,Linux的任何当前版本仅适用于服务器和其他专用环境,不适用于消费者。普通人甚至被不熟悉或不熟悉的“软件中心”所负担。您应该给这些人一个.exe来单击,而不是一个.tar.gz或一本关于如何使基本软件正常工作的详尽指南。很抱歉让我的意见困扰。
Traubenfuchs

Answers:


63

开发人员只需要提供分发包即可。然后,每个发行版都有一种安装此软件包的方法。这种方式可以在终端(apt-get)中或通过图形界面,例如Ubuntu Software Center。

美丽之处在于,开发人员只需要关心构建适当的程序包即可。其余的由发行商负责,每个软件包的安装过程都相同。


15
+1 ...“每个软件包的安装过程相同。”
Uwe Plonus 2014年

7
好吧,开发人员只需关心要为其支持的每个发行版构建合适的程序包,因此他们将需要一个或多个不同的RPM,deb,为端口构建脚本等。程序包管理器很棒,但是尝试支持所有系统作为开发人员都很难。这就是为什么大多数维护发行版软件包的人实际上不是上游开发人员。
艾伦·舒特科

12
这种方法的严重缺点是软件包(在某些情况下很严重)已过时。在Windows上,我可以随时安装最新版本。在Linux上,我必须使用(安装并理解!)版本控制客户端来获取源代码以及不同的编译器或Make / CMake / etc。建立它。
marczellm 2014年

4
许多项目确实提供了最新的稳定版本,而无需源代码控制(除非您想要最新的开发版本...)。但是,您仍然需要编译它们,因为不可能创建一个对于每个类似于* nix的OS都可以直接使用的二进制文件(不同于Windows,这是一个非常稳定且同质的平台)。幸运的是,与Windows相比,在Linux上安装和编译器非常容易。
Rufflewind 2014年

3
@ API-Beast可以完全回答问题。开发人员不必做向导,这种繁琐的任务是由分布处理。
Florian Margaine 2014年

42

因为他们不需要。与Windows不同,Linux发行版通常具有有效的程序包管理系统,在Windows中,每个应用程序都必须一次又一次地重新实现安装和更新。


6
但是,我认识的大多数非技术人员都希望下载安装程序并运行向导,而不是打开终端并输入命令。这个程序包管理器对我们极客来说很棒,但是它确实困扰了普通的Windows用户,后者在Windows 98时代之后开始使用PC。
Arsalan Ahmad

43
@ Arsalan00将Linux模型视为AppStore-确实是同一模型。您可能会问为什么没有针对Android或iOS的向导。
Maciej Piechotka 2014年

5
Android和iOS在操作方式和让应用程序操作方面的限制要远得多。Linux与之相反。移动操作系统强制执行约定,Windows似乎建议使用约定(程序文件文件夹,注册表等),而Linux的配置要比约定更多。
Arsalan Ahmad

9
嗯...如果Windows没有“工作包管理系统”,那么Windows Installer是什么?我从未听说过开发人员必须重新实现这一点,至少在最近的10-15年中没有。
Aaronaught

5
@Aaronaught而且,我已经失去了使用Windows Installer或基于Windows Installer 的Windows程序的数量,因此IT部门不必要地难以管理。
迈克尔·汉普顿

22

大多数Linux开源,非啤酒免费软件的确带有安装向导。某些开源免费啤酒软件也是如此,至少直到大多数主要发行商都将其下载为止。对于开源软件,程序包管理器显然是一种出色的解决方案。

那么,在主要发行商选择开源软件之前的早期呢?开发人员为什么不在该阶段创建安装向导?

首先,许多开放源代码开发人员根本不关心分发。他们自己编写软件以供使用,并把它发布出去,以防他人使用,但他们认为打包分发是别人的问题。如果足够喜欢,某人将承担将其放入自己喜欢的发行版的任务。

开源开发谁有关分发保健仍然是更好的包管理系统中的工作,因为这是他们的客户。Linux用户通常不会在网上搜索软件。他们首先搜索其包管理器。如果失败,他们将搜索“社区维护”存储库,例如Ubuntu的PPA或Arch的AUR。如果您不在这些地方,则您的软件很可能不会受到关注,并且如果被注意,则不太可能受到信任。

放弃那些现有的分销渠道就像是决定超级杯广告太贵了,所以您要举办自己的足球冠军赛并在那儿做广告。它的成本可能较低,但效果也较差。

就定制配置而言,对于像Web服务器这样的软件,传统上使用配置文件更容易处理,这使得配置更易于共享,备份和还原。

对于Web浏览器之类的客户端软件,最好创建一个配置向导,该向导在新用户首次运行该软件时出现,而不是在安装时执行。主要原因是Linux是多用户操作系统,因此无论如何您都希望按用户自定义它。无论出于何种原因,这也使以后重新运行配置向导变得更加容易,而不必保留安装程序来重新安装整个软件。这种类型的向导在Linux软件中相当普遍。


14

Linux发行版(我认为也是BSD风格的Unices)具有用户友好的界面,可通过所谓的程序包管理器(或BSD情况下的端口管理)进行程序安装:pacman表示Arch,dpkg表示Debian / Ubuntu , 等等。

这些程序包管理器提供了一种通过统一配置文件安装程序的方法。一旦根据发行版的软件包管理器对所需程序进行了打包,您就可以简单地在选定的软件包上运行其安装命令(有时会针对用户进行自定义,尽管有时根本没有),而其余的则由管理器完成。

程序包管理器通常比Windows特定于程序的安装程序更加用户友好,仅用于打包程序进行安装的统一方式即可。通常,它们还允许您在程序包管理器数据库中查询所需的程序,并查看其依赖项。
它们还支持软件包的集中更新。


3
用户友好是一个主观术语。IMO,大多数计算机用户都不愿使用命令行工具,如果他们只使用向导就可以发现它更容易,更舒适。即使需要更多时间。
2014年

1
dpkgDebian和Ubuntu中都使用了APT和APT。apt-getapt-cache并且aptitude是在顶部包装dpkgdpkg很少直接使用,我想到的一个用例是从.deb文件安装软件包。
nyuszika7h 2014年

16
@ Arsalan00通常为软件包管理器提供图形用户界面,例如Ubuntu Software Center或yumex。程序包管理器!=终端。
Florian Margaine 2014年

@ Arsalan00(如果您使用Ubuntu),只需转到Opera.com/download/guide/?os=linux,下载适用于Ubuntu的Opera,然后双击下载的文件。根本不涉及任何终端。
Oliver 2014年

13

我经常问自己和其他人这个问题,在解决为什么Linux的安装程序更少的问题之前,我想先解决一下我经常提到的一个问题:

Linux发行版提供程序包管理器。

但是,我不会说Linux发行版的软件包管理器可以代替安装程序,部分原因是:

  • 这些程序包管理器在操作上没有标准化

    软件包管理器有点像提供二进制文件,然后让最终用户选择安装程序。他们可以选择终端,也可以选择具有更高级GUI的工具,但是与“传统”安装向导相比,该工具无法为您提供相同级别的过程控制。

    我所说的控制的一个例子是文档。您不能向最终用户提供“单击下一步,而您应该看到”的说明。您可以为特定工具提供命令行说明,但是您不仅要依靠用户拥有该工具的事实,而且还要失去安装向导的大部分优势(毕竟,大多数向导都提供了前端-end获取简单的命令行说明并启动脚本)。

    这也与美学联系在一起。现在,您可以依靠最终用户的分布来提供直观/适当的界面。尽管您充分了解了这一事实,但如果双击文件(在他们看来是安装程序)打开了一个丑陋的包管理器,什么也不做,或者最糟糕的是打开了一个终端,那么对于一个比较随意的用户来说,抱怨并不是没有道理的窗口。(我对用户的体验以及他们对“ dos提示” /“黑白框” /“如果他们觉得很有趣,将会删除其所有文件的东西”的厌恶可能会填满一本书)

  • 软件包格式在各个平台上均未标准化。

    有工具类系统之间的转换rpmdeb,但它不是合理期待您的最终用户,如果你使用他们的包把在将在其他平台上提供一个安装向导的情况下(即点击和全熟)。如果您具有基本的构建系统,则可以直接提供其他软件包格式的最新软件包,但是您仍在添加需要支持的新二进制文件。

    这也增加了人们不得不根据平台选择的新二进制文件(听起来很小,但是我敢肯定,这里的人可以证明必须先解释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并带有其他文本的工具绊倒了),并让他们知道何时点击该按钮“ “继续”按钮”阶段。


这是一个很好的答案,它从临时用户的角度解释了该问题。
Arsalan Ahmad

1
“打包格式并未跨平台标准化。” –所有符合LSB的发行版(大多数是主要发行版)都支持LSB软件包格式,这是RPM的子集,其中删除了所有功能,这些功能无法轻松映射到DEB。用于LSB RPM的命令行工具,API和ABI也已标准化。
约尔格W¯¯米塔格

@JörgW Mittag我很难称其为LSB合规性。在Debian上,“ LSB遵从性”使用的是我在帖子中提到的Alien工具(并且它是有限的)。同样,我们没有将安装脚本与软件包进行比较。它正在将安装向导(即使是最随意的用户也可以安装软件,而不会看到可怕的黑匣子)与软件包管理器进行比较。要求使用Alien之类的工具所提供的过程与提供安装向导的过程不同。
Selali Adob​​or 2014年

@AssortedTrailmix:LSB软件包格式经过精心设计,可以由Alien处理。最终用户永远不需要与Alien进行交互,Debian上的LSB软件包管理器负责此工作。此外,LSB中明确照顾了构建安装向导。如果安装程序向导仅链接到LSB库,则它可以在所有LSB系统上运行,并且可以调用LSB程序包管理器,因为这是标准化的,并且可以安装程序包(因为是标准化的),最后您可以最后将在Debian上的DPKG数据库中显示一个DEB,在SuSE上显示一个RPM。
约尔格W¯¯米塔格

我理解这一点,但我想我不明白您的意思。你不只是确认我说的话吗?我的意思是,安装向导和程序包管理器是不同的。我并不是在建议安装程序不能使用软件包管理器。似乎您同意我的观点,但是被一个反问“例如,您的向导会包含要安装的多种软件包格式吗?”
Selali Adob​​or 2014年

9

大体上都是两者。与传统的Windows / Mac OS X相比,Linux发行模型更接近AppStore / Play商店-甚至那些平台也从我所听说的地方转移到那里。

惯例是它更简单。AppStore / Play商店的大多数参数也适用于Linux:

  • 自动更新。在Windows上单独更新20个程序会造成破坏性且效率低下。用户需要在启动时通过Java / Flash / Adob​​e / ...更新。
  • 单个受信任的存储库。您是否检查是否通过安全连接下载?还是您没有从get.adobe.com.hackers.example.com/setup.exe的Reader更新中下载?即使做了大多数用户,尤其是没有超级用户,也不要这样做。相反,您可以转至Linux中的软件中心或类似程序并获得受信任的副本。

此外,还有以下好处,可能不适用于AppStore / Play商店:

  • 并非每个Linux都具有GUI(例如http服务器),但是大多数发行版都支持这种配置。好。并非每个人都需要一个,但迟早有人会出于任何原因使用它。
  • 各种发行版上的库的ABI可能不同。不详细介绍安装程序将使程序负责,而不是由人们在存储库中维护软件包。
  • 与上一个连接-您需要以某种方式管理依赖项。捆绑被认为是不适当的,这是有原因的-在这种情况下,您需要确保已将库更新为没有错误的版本-例如,您没有将openssl 1.0.1f包含在捆绑中。实践表明,人们确实包括具有已知安全漏洞的过时库。

5
+1 “在Windows上分别更新20个程序会造成破坏性且效率低下。”
IQAndreas

我想说,对话是破坏性的或低效的。如果程序的更新系统设计不当,一旦用户登录就会给用户加标签,并且不提供静默更新选项,则主要是该程序的错误。话虽这么说,我没有找到很多这样做的程序(大多数程序没有传统的启动程序),并且最终结果比一个提示列出需要处理的每件事的提示更具可管理性。被更新。
Selali Adob​​or 2014年

而且“单一,可信赖的存储库”有些误导。如果您要编写最终可以使用的软件,那么它实际上仅部分适用。专有软件不会轻易地出现在常见Linux发行版的受良好支持的默认存储库中。甚至默认情况下,Ubuntu上规范合作伙伴的存储库(进入系统也是很简单的)都是被禁用的,并且被许多人认为是不安全的,因为已知托管在该软件中的软件的安全风险比基于Windows的相同软件的发行时间更长其他更新方法。
Selali Adob​​or 2014年

6

通常,安装不需要与用户进行交互(apt-get例如,大多数软件包),也可以编写脚本。这使得自动化非常容易,以便在许多机器上部署软件。您无需通过向导来执行操作,而是可以通过脚本编写或通过配置文件来执行相同的操作。

考虑到在Linux世界中,终端是第一位的,并且GUI是可选的,因此很明显为什么他们没有实际的安装向导。

另一方面,Windows非常面向用户。大多数MSI文件可以轻松地以无人值守的方式进行部署,就像可以无人值守Windows的安装一样(使WAIK正常工作的难易程度是不同的主题)。这也意味着一堆Windows应用程序不基于MSI,并且不可编写脚本。例如,在企业级应用程序中,Adobe产品以脚本方式安装相当困难。


1
这是一个容易解决的问题。许多Windows安装程序都具有静默选项,并且预先填充了良好的默认设置,因此用户仅需按“下一步”按钮就无需执行其他任何操作。
2014年

5
我讨厌按下一个按钮,因为开发人员无法以更简单的方式进行操作。
Silviu Burcea 2014年

@ Arsalan00:“用户 ... 以外无需执行其他任何操作”破坏了自动化。如果用户必须执行任何操作,则无法自动化。理想情况下,您应该能够打开计算机并使其通过PXE引导,安装操作系统,然后安装和配置所需的一切,而无需用户进行任何交互。使用Linux,您可以做到这一点(也许除了一些应用程序外,但到目前为止我还没有遇到过)。
2014年

1
@MainMa您的编辑确实非常有用。如果开发人员需要,他们可以使安装程序可编写脚本或保持安静。但是向导系统确实可以帮助新手用户了解设置的内容,并且向导会像软件包管理器一样通知用户。离线安装是许多人的主要需求。
Arsalan Ahmad 2014年

2
@ Arsalan00通常,程序包管理器可以询问是否确实需要。软件包管理器可以进行脱机安装,就像下载和安装文件时一样,只需先下载软件包即可。最后,它更加用户友好,大多数新手用户都不必关心“您想在哪里安装此工具”等,它应该“可以正常工作”。
iveqy 2014年

-1

目标受众是不同的。Unix和类似Unix的系统通常由专业程序员,系统管理员,工程师和认真的业余爱好者使用,他们根据需要定制每个系统。任何“安装向导”都只会限制他们的选择,而不是访问他们所需的所有变量。现在那里的人仍然可以。

Windows并非以相同的方式针对专业人士,因此,有更多的通用安装程序面向“用户”,他们只希望安装该程序。Linux吸引了更多这类用户,他们可能会喜欢这种东西,但是,大多数发行版仍会考虑专业人士。


4
通过安装向导,您不仅可以定制Linux上通常使用的软件包管理器,还可以对其进行更多定制。
iveqy 2014年

@iveqy任何文本配置文件都将为您提供比任何安装“向导”都更多的功能。如果这些向导可以做得更好,它们将存在,但事实并非如此。
罗布2014年

4
是的,但是编辑文本配置文件不是大多数程序包管理器安装过程的一部分。Windows安装过程中的典型问题是“您要将它放在哪里”,程序包管理器已经在linux环境中确定了这个问题,“您要安装该程序的哪些组件”已经确定了。对于软件包管理器,是软件包维护者。您可以看到,由于程序包管理器用于android和iphone(应用商店和Google Play),因此更加易于使用。
iveqy 2014年

@iveqy我刚刚意识到我们已经脱离话题了。这与我最初所说的无关,您仍然看不到这些向导是我所说的进一步的证据。
罗布
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.