當我們系統安裝在正式環境中,可能前端會有防火牆或是其他網路設備
導致我們沒辦法連線到internet去安裝一些套件,這時候就可以利用離線安裝
的方式,到一台相同版本,但是可以連上internet的機器上,將相關的模組下載下來
傳送到要安裝的系統進行安裝,這樣就可以避免為了安裝某個套件,而去修改防火牆
以centos用yum安裝套件來說,如果我要安裝python的virtualenv
#下載目錄為./,要下載的模組是python-virtualenv
yum install --downloadonly --downloaddir=./ python-virtualenv
他會把所有依賴的套件全部下載下來,你就會看到在目錄底下有這些檔案
python2-rpm-macros-3-32.el7.noarch.rpm
python-devel-2.7.5-88.el7.x86_64.rpm
python-rpm-macros-3-32.el7.noarch.rpm
python-srpm-macros-3-32.el7.noarch.rpm
python-virtualenv-15.1.0-4.el7_7.noarch.rpm
接著我們可以把這五個檔案傳送到要安裝的系統上,接著一樣使用yum去安裝他
#安裝使用localinstall的方式,nogpgcheck表示不要進行驗證
yum localinstall -y --nogpgcheck python-virtualenv-15.1.0-4.el7_7.noarch.rpm
正常來說因為依賴的套件都已經下載傳送過來了,所以就可以直接安裝成功
但是有一種情況是,你在下載的時候,例如已經安裝過python-rpm-macros-3-32.el7.noarch.rpm
那系統會判斷你不需要python-rpm-macros-3-32.el7.noarch.rpm這個套件,就不會下載
這樣傳送過去就會少了這個套件,安裝的時候yum只好再透過internet去找,這時候因為無法連上網際網路
安裝就會失敗,所以使用這種方式的時候要拿來下載套件的機器最好是很乾淨,沒有安裝過太多模組。
python的pip也是類似的方式
例如我要安裝django以及flask,首先下載相關模組
pip download django
pip download flask
這樣我們就可以取得Django-3.1.1-py3-none-any.whl以及相對應依賴的whl檔案
接著我們把所有whl檔傳送到要安裝的設備上後,直接指定whl進行安裝
pip install Django-3.1.1-py3-none-any.whl
pip install Flask-1.1.2-py2.py3-none-any.whl
那如果一次有很多個套件要安裝呢,最簡單的方式我們先用一個乾淨的虛擬環境
安裝好我們所需要的模組
pip install django
pip install flask
#導出模組清單
pip freeze > requirements.txt
#下載requirements.txt中安裝的所有模組
pip download -r requirements.txt
接著我們把所有*.whl檔案以及requirements.txt傳到要安裝的設備上
接著就可以使用本地安裝一次安裝好所有套件了
pip install --no-index --find-links=./ -r requirements.txt
導致我們沒辦法連線到internet去安裝一些套件,這時候就可以利用離線安裝
的方式,到一台相同版本,但是可以連上internet的機器上,將相關的模組下載下來
傳送到要安裝的系統進行安裝,這樣就可以避免為了安裝某個套件,而去修改防火牆
以centos用yum安裝套件來說,如果我要安裝python的virtualenv
#下載目錄為./,要下載的模組是python-virtualenv
yum install --downloadonly --downloaddir=./ python-virtualenv
他會把所有依賴的套件全部下載下來,你就會看到在目錄底下有這些檔案
python2-rpm-macros-3-32.el7.noarch.rpm
python-devel-2.7.5-88.el7.x86_64.rpm
python-rpm-macros-3-32.el7.noarch.rpm
python-srpm-macros-3-32.el7.noarch.rpm
python-virtualenv-15.1.0-4.el7_7.noarch.rpm
接著我們可以把這五個檔案傳送到要安裝的系統上,接著一樣使用yum去安裝他
#安裝使用localinstall的方式,nogpgcheck表示不要進行驗證
yum localinstall -y --nogpgcheck python-virtualenv-15.1.0-4.el7_7.noarch.rpm
正常來說因為依賴的套件都已經下載傳送過來了,所以就可以直接安裝成功
但是有一種情況是,你在下載的時候,例如已經安裝過python-rpm-macros-3-32.el7.noarch.rpm
那系統會判斷你不需要python-rpm-macros-3-32.el7.noarch.rpm這個套件,就不會下載
這樣傳送過去就會少了這個套件,安裝的時候yum只好再透過internet去找,這時候因為無法連上網際網路
安裝就會失敗,所以使用這種方式的時候要拿來下載套件的機器最好是很乾淨,沒有安裝過太多模組。
python的pip也是類似的方式
例如我要安裝django以及flask,首先下載相關模組
pip download django
pip download flask
這樣我們就可以取得Django-3.1.1-py3-none-any.whl以及相對應依賴的whl檔案
接著我們把所有whl檔傳送到要安裝的設備上後,直接指定whl進行安裝
pip install Django-3.1.1-py3-none-any.whl
pip install Flask-1.1.2-py2.py3-none-any.whl
那如果一次有很多個套件要安裝呢,最簡單的方式我們先用一個乾淨的虛擬環境
安裝好我們所需要的模組
pip install django
pip install flask
#導出模組清單
pip freeze > requirements.txt
#下載requirements.txt中安裝的所有模組
pip download -r requirements.txt
接著我們把所有*.whl檔案以及requirements.txt傳到要安裝的設備上
接著就可以使用本地安裝一次安裝好所有套件了
pip install --no-index --find-links=./ -r requirements.txt