[Linux] Ubuntu 如何離線安裝套件,解決相依性套件問題


通常我們在安裝軟體套件的時候都是在網路下進行,但某些情況下,可能會遇到主機的所在的位置是無法連上網路的,那麼這個時候該如何「 離線安裝套件 」,而且又可能解決套件相依性的問題呢?以我自己的經驗來說,Ubuntu和CentOS這二個我最常用的Linux系統來說,方法就不太一樣,本文將先以Ubuntu來說明如何操作才能達到離線安裝套件的目的,而CentOS則另外再開文說明囉。

在此,先來說明一下何謂套件的相依性 (Dependency) ,簡單的來說,在安裝A套件的時候,它可能還會需要B、C、D…等不同的套件才可以正常的運作,因此,在離線安裝套件時,最大的麻煩就是要解決這些相依套件的問題,必需要全部都把需要的套件安裝完整,程式運作起來才會正常。

本文示範OS:Ubuntu 18.04 Server 英文版 (註:請用root權限執行範例指令)

離線安裝套件 / 相依性套件安裝教學

首先,先讓大家了解一下本文介紹的方法:基本上就是利用指令,把套件的相關檔案(即deb安裝檔)都下載下來,後續便可利用這些檔案進行離線的安裝。另外,預設使用 apt-get 在安裝套件時,其下載的deb檔案會存放在 /var/cache/apt/archives 目錄下。

1. 事先準備

先到「archives」目錄,並查看該目錄下有哪些檔案 (可以先用筆或擷圖記下來)

# cd /var/cache/apt/archives (進入檔案存放的目錄)
# ll (列出該目錄下的檔案)

不過,我建議可以把此目錄下不必要的檔案先刪除,指令如下:

# apt-get clean

清除檔案後,目前預設會只剩下「lock」與「partial」,這樣就更好識別了

apt-get clean

2. 下載安裝套件

下載離線安裝用的套件不難,其實只要在安裝指令後面加上「–download-only」即可(指令前面為二個減號),格式如下:

# apt-get install --download-only 套件名稱 (格式)

在此,先以套件「vsftpd」為範例進行說明,請執行以下指令進行套件下載,預設則會把下載的檔案存至 /var/cache/apt/archives 」目錄下

# apt-get install --download-only vsftpd (範例)

執行後查看「archives」目錄,會發現多了其他的檔案,代表要安裝「vsftpd」套件時,就需要把這些檔案全裝上才可正常運作

apt-install download only

要注意的是上述提到的方式,必需在你的系統中沒有安裝過該套件,如果在下載套件前,套件已經安裝過了,那麼系統可能會告訴你並沒有做任何的更新 (同版本之類),如下圖的「iftop」套件。

apt-get install

3. 離線安裝套件

將步驟二下載的deb檔,全部移到欲安裝套件的主機中,執行安裝的指令即可:

# sudo dpkg -i *.deb

 離線安裝套件

本例是以「vsftpd」為例,可以再安裝過後,測試一下vsftpd,看是否已可以運作

run vsftpd

4. download-only 和 download 有什麼不同?

  • –download-only:可以簡化成 -d ,即
  • #apt-get install --download-only 等於 apt-get install -d

    該指令會把下載的.deb檔存放至「/var/cache/apt/archives」目錄下,而且會把相依性套件一併下載

  • download:範例指令如下
  • #apt-get download 套件名稱

    該指令下載的.deb檔會存放在目前的目錄,而且不會把相依性套件一起下載

推薦閱讀:
[Linux] Tcpdump 擷取封包指令範例教學
[Linux] vnStat 網路流量監控工具使用教學