这就是软件安装程序在windows、macos和linux上的工作方式

现代操作系统为您提供了设置新应用程序的简单方法。但是当你运行安装程序或者发出命令时,会发生什么呢?...

现代操作系统为您提供了设置新应用程序的简单方法。其中包括自动安装程序包以及一次安装多个软件位的命令。但是当你运行安装程序或者发出命令时,会发生什么呢?

windows-mac-linux-installation

让我们看看软件是如何安装在三大桌面平台上的:Windows、macOS和Linux。

软件安装方法

有几种不同的方法可以让新应用程序在计算机上运行。按照复杂性增加的顺序,包括:

  • 软件编译——从源代码构建应用程序。仅适用于大多数技术用户。
  • 软件归档——解压压缩文件之类的归档文件,并从任何地方运行程序。这可能需要一些额外的调整。
  • 安装程序包——找到一个安装程序文件并(双击)开始安装。
  • 软件经理/商店——从一个漂亮的界面上选择应用程序,然后点击一个大的“安装”按钮。太神奇了!

在本文中,我们将研究安装程序包,因为大多数软件经理/商店最终都会在幕后处理这些类型的包。对于今天的主要桌面平台——Windows、macOS和Linux——我们将了解这些软件包的组成,以及安装它们时会发生什么。

微软视窗

您可能会遇到的Windows安装程序包有两种主要风格。可执行文件(EXE)可以通过将文件放置在正确的位置和执行Windows注册表更新来设置程序。WindowsInstaller软件包(MSI)通过提供标准化的服务(如卸载)来增加这一点。

您可以通过使用7-Zip打开归档文件来检查exe或msi的内容。如果您使用它来查看7-Zip自己的EXE安装程序,您会在其中找到许多不同的文件:

anatomy software package 7zip contents

虽然这些文件在安装程序中没有包含文件夹,但开发人员会将每个文件指向一个目标目录。它们中的大多数最终都会出现在“默认安装位置”——这与您通常看到的“C:\Program Files\[Program name]”或“C:\Program Files(x86)\[your new app]”等文件夹的建议相同

当使用像InstallShield这样的复杂工具来创建安装程序包时,应用程序开发人员可以自定义安装。例如,它们可以指定要安装的Windows版本,在“开始”菜单和/或桌面上设置要创建的快捷方式,或收集用户信息,如名称、地址等。下图中的示例InstallShield项目显示了用于设置是否应创建或更新Windows注册表项的屏幕。

anatomy software package installshield registry

使用InstallShield,应用程序文件和其他自定义项将打包在一个安装程序.exe文件。用7-Zip打开它会显示里面是一个MSI包,当运行时,它看起来就像我们都习惯的安装。让我们回顾一下在这个过程中发生了什么。

anatomy software package installshield install

windows安装过程

安装程序将采取以下步骤设置应用程序以供使用(具体顺序可能因开发人员的自定义而有所不同):

  1. 安装程序可以包含其他存档,如前面提到的MSI或CAB格式。作为第一步,安装程序将提取这些到一个临时位置。
  2. 接下来,它将检查已设置的任何依赖项是否可用。如果缺少任何东西,它将下载它如果可能,或退出安装程序与一个错误,如果没有。
  3. 如果需要任何依赖项,则将首先使用随附的任何安装程序安装它们(是否中断过.NET Framework的安装?)。
  4. 接下来,安装程序将开始复制应用程序的文件,并将它们放置在正确的位置。
  5. 如果开发人员配置了任何快捷方式,安装程序将创建这些快捷方式并将它们指向实际的安装路径(请记住,您可以在安装程序运行时对此进行更改)。
  6. 将执行对Windows注册表的更改(如果有)。
  7. 最后,安装程序可能会提示用户输入诸如名称或网站地址之类的信息。

与列表中的下一个操作系统相比,这个过程可能看起来很复杂。让我们看看在macOS上安装软件。

苹果macos

Windows安装程序有很多秘密。但是如果你使用过Mac,你就知道安装应用程序通常和下载应用程序副本、打开磁盘映像(DMG)以及遵循一些简单的提示一样简单。有时下载甚至会提供一个“拖到这里!”偶像。

让我们深入了解应用程序包及其对应的PKG安装程序。

macos包结构

表面上的应用程序文件实际上比Windows简单,主要有两个原因。首先,它是一个标准文件夹。唯一的区别是它以“.APP”后缀结尾。如果您在Windows上下载其中一个,您将看到它的显示方式与资源管理器中的任何其他文件夹一样。其次,应用程序文件要求包含程序所需的所有内容。对于这些类型的安装程序,不必担心缺少依赖项。

这些包必须在名为“Contents”的文件夹中包含三个内容:1)一个信息列表包含应用程序元数据的文件,如名称、语言、版本号等;2)保存主可执行文件的“MacOS”目录;3)保存应用程序运行所需资产的“Resources”目录(如应用程序图标)。还有其他可选文件夹,如“Frameworks”(不是特定于应用程序的功能包)、“Plug-Ins”(运行应用程序不需要的功能)和“SharedSupport”(与模板无关的数据)。

mac app folders

相反,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上的。

mac pkg structure

我使用了Windows版本的7-Zip来说明这一点,而不是只使用命令行的Linux版本。

macos应用程序安装过程

当你把这个应用程序文件放到你的应用程序文件夹中时,它并没有改变那么多。记住,运行程序所需的一切都是独立的。与标准拖放的唯一区别是信息列表“文件在系统中注册。

mac app copy

这将配置诸如启动应用程序时调用哪个可执行文件、显示哪个图标、它支持的文件类型等等。但是你的应用程序(比如下面显示的Atom编辑器的应用程序包)现在已经可以使用了。

mac app installed

macos包安装过程

另一方面,打开PKG文件会启动“向导式”安装程序。对于简单的程序,这通常是一个组件安装程序,通常会经历以下步骤:

  1. 运行预安装脚本。
  2. 将“有效载荷”内容物开箱放入机器。
  3. 运行安装后脚本。

mac pkg install

然后,开发人员可以将多个组件组合到单个产品归档安装中。这将添加一些选项,例如显示供用户接受的EULA、从用户收集信息以及选择要安装的组件。同时,苹果安装程序负责在后台逐个安装必要组件的所有细节。

说到基于Unix的安装程序,我们将在下一节继续讨论两种主流的Linux包格式。

ubuntu和fedora linux

啊,黛比和转速。一场伟大的火焰之战,只被vi对emacs或KDE对GNOME这样的对手打败。然而,这些格式与其说是不同的,不如说是相似的。我们来看看。

linux包文件结构

要查看DEB文件的内部,可以尝试使用GUI归档管理器。否则,请使用ar命令。在终端中输入的以下命令将提取Debian包的内容:

ar -x name-of-your-package.deb

这将产生三个文件:

  • 控件.tar.gz--这又包含一个主文件Control,其中包含有关包的元数据,例如包的正式名称、版本和依赖关系。它还可能包含其他文件,如安装过程中要运行的脚本或默认配置文件。
  • 数据.tar.gz--构成应用程序本身的文件位于焦油.GZ档案文件。所有内容,包括二进制文件、文档和默认配置都在这里。在示例包kde-service-menu-encfs\u 0.5.2中_全部.deb,它包含如下图所示的文件和目录。
  • debian二进制文件——这是一个文件,用于定义该文件使用的debian包格式的版本。对于现代发行版,这只在一行中包含“2.0”。

deb main control

在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软件包的结构,那么让我们来研究一下实际安装它们时会发生什么。

linux软件包安装

当您安装任何一种格式的软件包时,不管前端是什么,都会发生一组类似的步骤:

  1. 包系统检查包的内容以确定是否缺少依赖项。根据工具的不同,它要么警告您,要么设置为下载它们。
  2. 如果软件包包含预安装脚本或命令,则它们将在下一步运行。
  3. 然后包系统实际提取包的文件。
  4. 安装好文件后,运行安装后脚本。
  5. 最后,该包使用其元数据在内部数据库中注册,以便以后卸载。

知道软件是如何安装的是一件好事

因为操作系统的开发人员和在其上运行的软件在简化软件安装方面做了大量的工作,所以您实际上不需要关注细节。但是对幕后发生的事情有一些了解会让你对安装在你系统上的东西心平气和,同时也有助于排除故障。

上面的软件安装方法你做了多少?你喜欢DEB还是RPM?或者Mac的应用捆绑包代表了易用性的顶峰?噩梦发生过吗?请在下面的评论中告诉我们!

  • 发表于 2021-03-14 18:20
  • 阅读 ( 266 )
  • 分类:IT

你可能感兴趣的文章

你能在linux上运行它吗?11个在linux上运行的windows应用程序

... 作为开源媒体软件,VLC媒体播放器可以在Linux上使用。具体而言,VLC media player的版本可用于: ...

  • 发布于 2021-03-11 00:39
  • 阅读 ( 310 )

切换到linux时应该知道的5件事

...你选择的Linux发行版提供的。在这一点上,你唯一的方法就是从外部安装它。许多Linux指南建议您这样做,并指导您完成整个过程。 ...

  • 发布于 2021-03-11 19:57
  • 阅读 ( 193 )

ubuntu:初学者指南

...少的投入,但是它可能会影响Ubuntu性能的质量和速度。也就是说,有些Linux操作系统可能更适合运行USB驱动器。 ...

  • 发布于 2021-03-12 17:29
  • 阅读 ( 305 )

5个原因linux现在是任何人的最佳选择

...售带有自己定制的Linux发行版的笔记本电脑。你所要做的就是把笔记本电脑从盒子里拿出来,开始使用Linux。 ...

  • 发布于 2021-03-13 10:08
  • 阅读 ( 206 )

你的生活100%免费和开源的完整指南

...闭源代码软件的原因是有原因的,通常是市场驱动的。这就是为什么侵犯隐私的行为继续困扰着最新版本的Windows。这就是为什么改用Chromebook和使用Google服务只会意味着交出更多的信息。这就是为什么联想电脑带有恶意软件。 ...

  • 发布于 2021-03-13 18:00
  • 阅读 ( 263 )

xfce解释道:看看linux最快的桌面之一

...“发行版”)之后,您发现您的硬件仍然太慢。除非,也就是说,您安装了类似Xfce的东西。 ...

  • 发布于 2021-03-14 08:40
  • 阅读 ( 423 )

哪种linux桌面环境最适合您的个性?

...中的默认桌面环境,它很快将成为Ubuntu中的默认环境。也就是说,可以安装GNOME是大多数Linux发行版。openSUSE提供了一个默认为GNOME的livecd。如果您刚刚开始使用Linux,那么这三个发行版中的任何一个都是一个很好的切入点。 ...

  • 发布于 2021-03-14 15:39
  • 阅读 ( 454 )

为什么linux对自由职业者来说很好

...线,我这样做是使用Linux。很早的时候,为了使用特定的软件,我不得不随身携带一台Windows电脑,但这是一个只有一个客户要求的需求。其他任何地方都允许我靠一台Linux笔记本电脑谋生。 ...

  • 发布于 2021-03-15 01:40
  • 阅读 ( 194 )

如何在macos上运行android应用程序

...呢?可以在macOS上运行Android应用程序。你需要一些第三方软件,你需要愿意花一些时间来设置它。完成后,您甚至可以访问googleplay商店。 ...

  • 发布于 2021-03-15 05:14
  • 阅读 ( 452 )

切换到linux?4种操作系统,让人感觉宾至如归

...述不同之处在于它不是主题,甚至不是桌面环境。它本身就是一个操作系统——当您下载ISO文件时,您可以将其刻录到DVD或USB驱动器,然后从中启动计算机。不过,它还提供了一种“Linux托管”模式,在这种模式下,您可以将桌...

  • 发布于 2021-03-15 06:42
  • 阅读 ( 208 )