Ubuntu 22.04 離線環境下 Python 包與 FFmpeg 安裝全攻略
在沒有網絡連接的 Ubuntu 22.04 環境中安裝軟件包常常會遇到各種依賴問題,尤其是 Python 庫和 FFmpeg 這類依賴復雜的工具。
本文將詳細介紹如何在離線環境中安裝指定的 Python 包(包括 OpenCV、PyTorch 等)和 FFmpeg,并解決常見的依賴沖突問題。
離線安裝 Python 包全流程
準備工作:在有網絡的機器上下載包
首先需要在有網絡的 Ubuntu 機器上(建議與目標機器系統版本和架構一致)下載所需的 Python 包及其依賴。
創建下載腳本download_packages.sh:
#!/bin/bash# 創建存放包的目錄
mkdir -p python_packages
cd python_packages# 下載普通Python包
pip download -i https://pypi.tuna.tsinghua.edu.cn/simple \opencv-python \requests \pillow \pyyaml \numpy==1.26.4# 下載PyTorch相關包
pip download --no-cache-dir torch torchvision torchaudio \--index-url https://download.pytorch.org/whl/cu121echo "所有包已下載到 python_packages 目錄"
運行腳本下載包:
chmod +x download_packages.sh
./download_packages.sh
處理依賴沖突問題
在離線安裝過程中,最常見的問題是依賴沖突。當出現類似以下錯誤時:
ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
tables 3.8.0 requires blosc2~=2.0.0, which is not installed.
tables 3.8.0 requires cython>=0.29.21, which is not installed.
gensim 4.3.0 requires FuzzyTM>=0.4.0, which is not installed.
numba 0.57.1 requires numpy<1.25,>=1.21, but you have numpy 1.26.4 which is incompatible.
我們需要補充下載缺失的依賴包并按正確順序安裝:
創建補充下載腳本download_missing_deps.sh:
#!/bin/bash# 進入之前的包目錄
cd python_packages# 補充下載缺失的依賴
pip download -i https://pypi.tuna.tsinghua.edu.cn/simple \blosc2~=2.0.0 \cython>=0.29.21 \FuzzyTM>=0.4.0 \numba>=0.58.0 # 升級numba到兼容numpy 1.26.4的版本
離線安裝腳本
將下載好的python_packages目錄傳輸到離線機器后,創建安裝腳本install_packages.sh:
#!/bin/bash# 進入包目錄
cd python_packages# 1. 先安裝缺失的基礎依賴
pip install --no-index --find-links=. \blosc2~=2.0.0 \cython>=0.29.21 \FuzzyTM>=0.4.0# 2. 升級numba到兼容numpy 1.26.4的版本(解決核心沖突)
pip install --no-index --find-links=. numba>=0.58.0 --upgrade# 3. 安裝原本需要的包
pip install --no-index --find-links=. \opencv-python \requests \pillow \pyyaml \numpy==1.26.4 \torch torchvision torchaudioecho "所有包安裝完成(已處理依賴沖突)"
運行安裝腳本:
chmod +x install_packages.sh
./install_packages.sh
處理版本沖突的特殊情況
當遇到類似pyfume 0.3.4 requires numpy==1.24.4這樣的版本沖突時,有兩種解決方案:
1. 升級沖突包(優先選擇):
# 在有網絡機器上下載兼容版本
pip download -i https://pypi.tuna.tsinghua.edu.cn/simple pyfume>=0.3.5# 在離線機器上安裝
pip install --no-index --find-links=. pyfume>=0.3.5 --upgrade
2. 降低依賴包版本(備選方案):
# 在離線機器上強制安裝兼容版本
pip install --no-index --find-links=. numpy==1.24.4 --force-reinstall
離線安裝 FFmpeg 的完整方案
下載 FFmpeg 及依賴包
在有網絡的機器上創建下載腳本download_ffmpeg_fixed.sh:
#!/bin/bash# 創建存放deb包的目錄
mkdir -p ffmpeg_debs
cd ffmpeg_debs# 安裝必要工具
sudo apt-get update
sudo apt-get install -y apt-rdepends# 下載ffmpeg及依賴包(直接列出所有需要的包)
apt-get download $(apt-rdepends \ffmpeg \libblas3 \libjack-jackd2-0 \liblapack3 \ocl-icd-libopencl1 \debconf \| grep -v "^ " | sort -u | grep -v "^$")echo "ffmpeg及依賴包已下載到ffmpeg_debs目錄"
運行腳本:
chmod +x download_ffmpeg_fixed.sh
bash download_ffmpeg_fixed.sh # 明確使用bash執行
解決虛擬包依賴問題
如果遇到類似Can’t select candidate version from package libblas.so.3的錯誤,是因為這些是虛擬包,需要使用實際提供這些功能的包:
虛擬包 | 實際提供者 |
---|---|
libblas.so.3 | libblas3 |
libjack-0.125 | libjack-jackd2-0 |
liblapack.so.3 | liblapack3 |
libopencl-1.2-1 和 libopencl1 | ocl-icd-libopencl1 |
debconf-2.0 | debconf |
離線安裝 FFmpeg
將ffmpeg_debs目錄傳輸到離線機器后,執行以下命令安裝:
cd ffmpeg_debs
sudo dpkg -i *.deb# 修復可能的依賴問題
sudo apt-get -f install
安裝完成后驗證:
ffmpeg -version
如果顯示版本信息,則表示安裝成功。
總結與注意事項
環境一致性: 確保下載包的機器與離線機器具有相同的操作系統版本和架構;
依賴處理: 離線安裝的核心是完整獲取所有依賴,包括直接依賴和間接依賴;
安裝順序: 先解決依賴沖突,再安裝主要包,可減少很多問題;
虛擬包處理: 對于系統包,要識別虛擬包并使用實際提供者;
版本兼容: 注意 Python 庫之間的版本兼容性,尤其是 numpy 等基礎庫;
通過以上方法,你可以在完全離線的 Ubuntu 22.04 環境中成功安裝所需的 Python 包和 FFmpeg 工具。
如果遇到其他依賴問題,可按照類似思路查找缺失的依賴并補充下載。