我可以將特定軟體包的安裝目錄轉移到另一台電腦上以避免安裝步驟嗎?

我可以將特定軟體包的安裝目錄轉移到另一台電腦上以避免安裝步驟嗎?

我在我的 Linux 機器上安裝了一個軟體包,並且我想在另一台 Linux 機器上安裝相同的軟體包。我可以直接將安裝目錄從一台電腦複製到另一台電腦嗎?我的意思是克隆安裝目錄。

答案1

考慮使用 APT/DPKG 安裝的軟體

在大多數 Linux 系統(包括 Ubuntu)上,軟體包沒有單一的安裝目錄,儘管有時第 3 方軟體可能會將其所有檔案放在一個目錄中。

相反,包包含一組放置在多個檔案系統位置的檔案。在包上運行whereis會顯示包含其主要部分的目錄:

$ whereis gimp
gimp: /usr/bin/gimp /usr/lib/gimp /etc/gimp /usr/share/gimp /usr/share/man/man1/gimp.1.gz

我們可以看到 gimp 至少在/usr/bin/usr/lib/etc和中有文件/usr/share,所有這些文件都包含許多屬於其他套件的文件。

您可以使用dpkg-query -L--listfiles選項來讀取 dpkg 已知的軟體包的檔案清單:

$ dpkg --listfiles g++
/.
/usr
/usr/bin
/usr/share
/usr/share/doc
/usr/share/man
/usr/share/man/man1
/usr/bin/g++
/usr/bin/x86_64-linux-gnu-g++
/usr/share/doc/g++
/usr/share/man/man1/g++.1.gz
/usr/share/man/man1/x86_64-linux-gnu-g++.1.gz

請注意,該清單包括所有父目錄,即使 g++ 套件顯然沒有提供它們(要僅獲取文件,您可以執行類似的操作for i in $(dpkg --listfiles g++); do [[ -f "$i" ]] && echo "$i"; done,但某些套件安裝確實會建立目錄)。

g++是一個非常小的文件列表......

$ dpkg --listfiles gimp | wc -l
254
$ dpkg --listfiles xkb-data | wc -l
331
$ dpkg --listfiles linux-image-4.10.0-24-generic | wc -l
1312

還要考慮到,如果您只是將所有相關檔案複製到另一個系統上的所有相關位置,程式包管理器對此一無所知,因此套件不會更新,其相依性也不會安裝,因此它可能無法工作出於難以調試的原因。

歸根結底,對於可以使用 APT 安裝的軟體,迄今為止最簡單的安裝方法是使用 APT。如果您想節省每個系統上的下載費用,請參閱如何在沒有網路的情況下(離線)安裝軟體或軟體套件?

有些人認為這種分散式安裝方式是......一個錯誤。他們中的許多人正在採取一些措施,例如創建離散安裝軟體包的發行版,或發明跨平台打包解決方案,例如允許離散安裝(包括所有依賴項)的 snap。

相關內容