通常我們在安裝軟體套件的時候都是在網路下進行,但某些情況下,可能會遇到主機的所在的位置是無法連上網路的,那麼這個時候該如何「 離線安裝套件 」,而且又可能解決套件相依性的問題呢?以我自己的經驗來說,Ubuntu和CentOS這二個我最常用的Linux系統來說,方法就不太一樣,本文將先以Ubuntu來說明如何操作才能達到離線安裝套件的目的,而CentOS則另外再開文說明囉。
在此,先來說明一下何謂套件的相依性 (Dependency) ,簡單的來說,在安裝A套件的時候,它可能還會需要B、C、D…等不同的套件才可以正常的運作,因此,在離線安裝套件時,最大的麻煩就是要解決這些相依套件的問題,必需要全部都把需要的套件安裝完整,程式運作起來才會正常。
本文示範OS:Ubuntu 18.04 Server 英文版 (註:請用root權限執行範例指令)
離線安裝套件 / 相依性套件安裝教學
首先,先讓大家了解一下本文介紹的方法:基本上就是利用指令,把套件的相關檔案(即deb安裝檔)都下載下來,後續便可利用這些檔案進行離線的安裝。另外,預設使用 apt-get 在安裝套件時,其下載的deb檔案會存放在
1. 事先準備
先到「archives」目錄,並查看該目錄下有哪些檔案 (可以先用筆或擷圖記下來)
# ll (列出該目錄下的檔案)
不過,我建議可以把此目錄下不必要的檔案先刪除,指令如下:
# apt-get clean
清除檔案後,目前預設會只剩下「lock」與「partial」,這樣就更好識別了
2. 下載安裝套件
下載離線安裝用的套件不難,其實只要在安裝指令後面加上「–download-only」即可(指令前面為二個減號),格式如下:
# apt-get install --download-only 套件名稱 (格式)
在此,先以套件「vsftpd」為範例進行說明,請執行以下指令進行套件下載,預設則會把下載的檔案存至
# apt-get install --download-only vsftpd (範例)
執行後查看「archives」目錄,會發現多了其他的檔案,代表要安裝「vsftpd」套件時,就需要把這些檔案全裝上才可正常運作
要注意的是上述提到的方式,必需在你的系統中沒有安裝過該套件,如果在下載套件前,套件已經安裝過了,那麼系統可能會告訴你並沒有做任何的更新 (同版本之類),如下圖的「iftop」套件。
3. 離線安裝套件
將步驟二下載的deb檔,全部移到欲安裝套件的主機中,執行安裝的指令即可:
# sudo dpkg -i *.deb
本例是以「vsftpd」為例,可以再安裝過後,測試一下vsftpd,看是否已可以運作
4. download-only 和 download 有什麼不同?
- –download-only:可以簡化成
-d ,即
#apt-get install --download-only 等於 apt-get install -d
該指令會把下載的.deb檔存放至「/var/cache/apt/archives」目錄下,而且會把相依性套件一併下載
#apt-get download 套件名稱
該指令下載的.deb檔會存放在目前的目錄,而且不會把相依性套件一起下載
推薦閱讀:
.[Linux] Tcpdump 擷取封包指令範例教學
.[Linux] vnStat 網路流量監控工具使用教學