现代操作系统为您提供了设置新应用程序的简单方法。其中包括自动安装程序包以及一次安装多个软件位的命令。但是当你运行安装程序或者发出命令时,会发生什么呢?
让我们看看软件是如何安装在三大桌面平台上的:Windows、macOS和Linux。
有几种不同的方法可以让新应用程序在计算机上运行。按照复杂性增加的顺序,包括:
在本文中,我们将研究安装程序包,因为大多数软件经理/商店最终都会在幕后处理这些类型的包。对于今天的主要桌面平台——Windows、macOS和Linux——我们将了解这些软件包的组成,以及安装它们时会发生什么。
您可能会遇到的Windows安装程序包有两种主要风格。可执行文件(EXE)可以通过将文件放置在正确的位置和执行Windows注册表更新来设置程序。WindowsInstaller软件包(MSI)通过提供标准化的服务(如卸载)来增加这一点。
您可以通过使用7-Zip打开归档文件来检查exe或msi的内容。如果您使用它来查看7-Zip自己的EXE安装程序,您会在其中找到许多不同的文件:
虽然这些文件在安装程序中没有包含文件夹,但开发人员会将每个文件指向一个目标目录。它们中的大多数最终都会出现在“默认安装位置”——这与您通常看到的“C:\Program Files\[Program name]”或“C:\Program Files(x86)\[your new app]”等文件夹的建议相同
当使用像InstallShield这样的复杂工具来创建安装程序包时,应用程序开发人员可以自定义安装。例如,它们可以指定要安装的Windows版本,在“开始”菜单和/或桌面上设置要创建的快捷方式,或收集用户信息,如名称、地址等。下图中的示例InstallShield项目显示了用于设置是否应创建或更新Windows注册表项的屏幕。
使用InstallShield,应用程序文件和其他自定义项将打包在一个安装程序.exe文件。用7-Zip打开它会显示里面是一个MSI包,当运行时,它看起来就像我们都习惯的安装。让我们回顾一下在这个过程中发生了什么。
安装程序将采取以下步骤设置应用程序以供使用(具体顺序可能因开发人员的自定义而有所不同):
与列表中的下一个操作系统相比,这个过程可能看起来很复杂。让我们看看在macOS上安装软件。
Windows安装程序有很多秘密。但是如果你使用过Mac,你就知道安装应用程序通常和下载应用程序副本、打开磁盘映像(DMG)以及遵循一些简单的提示一样简单。有时下载甚至会提供一个“拖到这里!”偶像。
让我们深入了解应用程序包及其对应的PKG安装程序。
表面上的应用程序文件实际上比Windows简单,主要有两个原因。首先,它是一个标准文件夹。唯一的区别是它以“.APP”后缀结尾。如果您在Windows上下载其中一个,您将看到它的显示方式与资源管理器中的任何其他文件夹一样。其次,应用程序文件要求包含程序所需的所有内容。对于这些类型的安装程序,不必担心缺少依赖项。
这些包必须在名为“Contents”的文件夹中包含三个内容:1)一个信息列表包含应用程序元数据的文件,如名称、语言、版本号等;2)保存主可执行文件的“MacOS”目录;3)保存应用程序运行所需资产的“Resources”目录(如应用程序图标)。还有其他可选文件夹,如“Frameworks”(不是特定于应用程序的功能包)、“Plug-Ins”(运行应用程序不需要的功能)和“SharedSupport”(与模板无关的数据)。
相反,PKG格式是类Windows安装程序与类Unix结构的组合。7-Zip应用程序还将打开一个以xar格式压缩的PKG文件。其中包含一个或多个有效负载文件,这也是一个存档文件。要提取其内容,请在Mac或Linux终端中使用以下命令链(cpio是一种存档格式,也是一个用于操作它们的程序):
cat Payload | gunzip -dc | cpio -i完成后,您将看到一个熟悉的类Unix目录树。
在下面的示例中,我使用了文档转换器Pandoc。它包括/usr/local/bin中的二进制文件和/usr/local/share/man中的一些文档。这些东西到底是如何到位的?我们来看看每一个都是如何安装到你的Mac上的。
我使用了Windows版本的7-Zip来说明这一点,而不是只使用命令行的Linux版本。
当你把这个应用程序文件放到你的应用程序文件夹中时,它并没有改变那么多。记住,运行程序所需的一切都是独立的。与标准拖放的唯一区别是信息列表“文件在系统中注册。
这将配置诸如启动应用程序时调用哪个可执行文件、显示哪个图标、它支持的文件类型等等。但是你的应用程序(比如下面显示的Atom编辑器的应用程序包)现在已经可以使用了。
另一方面,打开PKG文件会启动“向导式”安装程序。对于简单的程序,这通常是一个组件安装程序,通常会经历以下步骤:
然后,开发人员可以将多个组件组合到单个产品归档安装中。这将添加一些选项,例如显示供用户接受的EULA、从用户收集信息以及选择要安装的组件。同时,苹果安装程序负责在后台逐个安装必要组件的所有细节。
说到基于Unix的安装程序,我们将在下一节继续讨论两种主流的Linux包格式。
啊,黛比和转速。一场伟大的火焰之战,只被vi对emacs或KDE对GNOME这样的对手打败。然而,这些格式与其说是不同的,不如说是相似的。我们来看看。
要查看DEB文件的内部,可以尝试使用GUI归档管理器。否则,请使用ar命令。在终端中输入的以下命令将提取Debian包的内容:
ar -x name-of-your-package.deb这将产生三个文件:
在Fedora中,可以使用rpm2cpio和cpio命令提取RPM包并浏览其文件:
rpm2cpio name-of-your-package.rpm | cpio -idvm对于kde-cli-tools-5.9.4-2.fc26.x86_64.rpm包,您将看到一个类似于DEB包的文件树。但它不提供元数据,至少在二进制包中不提供。您需要下载源RPM(。SRC.RPM转速)对应于二进制版本,然后对该文件使用上面相同的命令。其中包括一个SPEC文件,其中包含许多与Debian包中的控制文件相同的项。
既然我们已经了解了Linux软件包的结构,那么让我们来研究一下实际安装它们时会发生什么。
当您安装任何一种格式的软件包时,不管前端是什么,都会发生一组类似的步骤:
因为操作系统的开发人员和在其上运行的软件在简化软件安装方面做了大量的工作,所以您实际上不需要关注细节。但是对幕后发生的事情有一些了解会让你对安装在你系统上的东西心平气和,同时也有助于排除故障。
上面的软件安装方法你做了多少?你喜欢DEB还是RPM?或者Mac的应用捆绑包代表了易用性的顶峰?噩梦发生过吗?请在下面的评论中告诉我们!
... 作为开源媒体软件,VLC媒体播放器可以在Linux上使用。具体而言,VLC media player的版本可用于: ...
...你选择的Linux发行版提供的。在这一点上,你唯一的方法就是从外部安装它。许多Linux指南建议您这样做,并指导您完成整个过程。 ...
...少的投入,但是它可能会影响Ubuntu性能的质量和速度。也就是说,有些Linux操作系统可能更适合运行USB驱动器。 ...
...售带有自己定制的Linux发行版的笔记本电脑。你所要做的就是把笔记本电脑从盒子里拿出来,开始使用Linux。 ...
...闭源代码软件的原因是有原因的,通常是市场驱动的。这就是为什么侵犯隐私的行为继续困扰着最新版本的Windows。这就是为什么改用Chromebook和使用Google服务只会意味着交出更多的信息。这就是为什么联想电脑带有恶意软件。 ...
...“发行版”)之后,您发现您的硬件仍然太慢。除非,也就是说,您安装了类似Xfce的东西。 ...
...中的默认桌面环境,它很快将成为Ubuntu中的默认环境。也就是说,可以安装GNOME是大多数Linux发行版。openSUSE提供了一个默认为GNOME的livecd。如果您刚刚开始使用Linux,那么这三个发行版中的任何一个都是一个很好的切入点。 ...
...线,我这样做是使用Linux。很早的时候,为了使用特定的软件,我不得不随身携带一台Windows电脑,但这是一个只有一个客户要求的需求。其他任何地方都允许我靠一台Linux笔记本电脑谋生。 ...
...呢?可以在macOS上运行Android应用程序。你需要一些第三方软件,你需要愿意花一些时间来设置它。完成后,您甚至可以访问googleplay商店。 ...
...述不同之处在于它不是主题,甚至不是桌面环境。它本身就是一个操作系统——当您下载ISO文件时,您可以将其刻录到DVD或USB驱动器,然后从中启动计算机。不过,它还提供了一种“Linux托管”模式,在这种模式下,您可以将桌...