這就是軟體安裝程式在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
  • 閱讀 ( 47 )
  • 分類:科技

你可能感興趣的文章

你能在linux上執行它嗎?11個在linux上執行的windows應用程式

... 作為開源媒體軟體,VLC媒體播放器可以在Linux上使用。具體而言,VLC media player的版本可用於: ...

  • 發佈於 2021-03-11 00:39
  • 閲讀 ( 54 )

如何在沒有瀏覽器的情況下使用web

...軟、Canonical、育碧和其他公司都使用它來分發作業系統和軟體安裝程式檔案。 ...

  • 發佈於 2021-03-11 17:22
  • 閲讀 ( 61 )

切換到linux時應該知道的5件事

...你選擇的Linux發行版提供的。在這一點上,你唯一的方法就是從外部安裝它。許多Linux指南建議您這樣做,並指導您完成整個過程。 ...

  • 發佈於 2021-03-11 19:57
  • 閲讀 ( 49 )

ubuntu:初學者指南

...少的投入,但是它可能會影響Ubuntu效能的質量和速度。也就是說,有些Linux作業系統可能更適合執行USB驅動器。 ...

  • 發佈於 2021-03-12 17:29
  • 閲讀 ( 81 )

5個原因linux現在是任何人的最佳選擇

...售帶有自己定製的Linux發行版的膝上型電腦。你所要做的就是把膝上型電腦從盒子裡拿出來,開始使用Linux。 ...

  • 發佈於 2021-03-13 10:08
  • 閲讀 ( 55 )

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

...“發行版”)之後,您發現您的硬體仍然太慢。除非,也就是說,您安裝了類似Xfce的東西。 ...

  • 發佈於 2021-03-14 08:40
  • 閲讀 ( 46 )

linuxpas:安裝、刪除和安全性

PPA代表個人包裹檔案。它們提供的軟體沒有捆綁在預設的Linux作業系統中。Linux上的軟體安裝與Windows和Mac上的有點不同。相反,軟體來自於儲存庫。但PPA提供對第三方程式的訪問。 ...

  • 發佈於 2021-03-14 09:45
  • 閲讀 ( 44 )

哪種linux桌面環境最適合您的個性?

...中的預設桌面環境,它很快將成為Ubuntu中的預設環境。也就是說,可以安裝GNOME是大多數Linux發行版。openSUSE提供了一個預設為GNOME的livecd。如果您剛剛開始使用Linux,那麼這三個發行版中的任何一個都是一個很好的切入點。 ...

  • 發佈於 2021-03-14 15:39
  • 閲讀 ( 65 )

linux上的小部件:5個plasma小程式,你應該試試

...位置。其中一些甚至可以在系統托盤中使用。你所要做的就是用滑鼠右鍵單擊它的設定,然後從“額外專案”部分啟用它。 ...

  • 發佈於 2021-03-15 09:25
  • 閲讀 ( 52 )

如何在raspberry pi上安裝作業系統

... 你所需要做的就是依次點選每一個。從Select Image開始,然後瀏覽到所選作業系統的ISO或IMG檔案。接下來,單擊選擇驅動器以選擇SD卡。蝕刻機足夠智慧,可以檢測到任何連線到電腦或**...

  • 發佈於 2021-03-21 13:44
  • 閲讀 ( 49 )