RedHat 6.5 未註冊訂閱無法使用 yum 時,需手動下載 RPM 包解決依賴鏈。SWFTools 依賴較多,建議採用「源碼編譯 + 手動安裝依賴 RPM」混合策略。
| 包名 | 作用 | 備註 |
|---|---|---|
| gcc, gcc-c++, make | 編譯工具鏈 | 系統盤通常自帶 |
| zlib-devel | 壓縮庫頭文件 | 基礎依賴 |
| libjpeg-devel | JPEG 支持 | PDF 轉圖片需要 |
| freetype-devel | 字體渲染 | 文本提取關鍵 |
| fontconfig-devel | 字體配置 | 中文支持 |
| giflib-devel | GIF 支持 | 可選 |
| libpng-devel | PNG 支持 | 輸出圖片格式 |
https://vault.centos.org/6.10/os/x86_64/Packages/(CentOS 6 與 RHEL 6 二進制兼容)access.redhat.com/downloadsrpmfind.net、pkgs.org 搜索包名下載#!/bin/bash
# download_deps.sh
BASE_URL="https://vault.centos.org/6.10/os/x86_64/Packages"
PACKAGES=(
"zlib-devel-1.2.3-29.el6.x86_64.rpm"
"libjpeg-devel-6b-46.el6.x86_64.rpm"
"freetype-devel-2.3.11-15.el6.x86_64.rpm"
"fontconfig-devel-2.8.0-5.el6.x86_64.rpm"
"giflib-devel-4.1.6-3.1.el6.x86_64.rpm"
"libpng-devel-1.2.49-2.el6.x86_64.rpm"
)
for pkg in "${PACKAGES[@]}"; do
wget -c "$BASE_URL/$pkg"
done
# 1. 安裝依賴(解決循環依賴用 --nodeps 慎用)
rpm -ivh *.rpm
# 2. 下載 SWFTools 源碼
wget https://www.swftools.org/swftools-0.9.2.tar.gz
tar -xzf swftools-0.9.2.tar.gz
cd swftools-0.9.2
# 3. 配置編譯(指定安裝路徑避免污染系統)
./configure --prefix=/usr/local/swftools
make -j$(nproc)
make install
# 4. 驗證
/usr/local/swftools/bin/pdf2swf --version
| 錯誤信息 | 缺失依賴 | 解決包 |
|---|---|---|
| jpeg.h not found | libjpeg 開發包 | libjpeg-devel |
| freetype/freetype.h not found | freetype 開發包 | freetype-devel |
| fontconfig/fontconfig.h not found | fontconfig 開發包 | fontconfig-devel |
| png.h not found | libpng 開發包 | libpng-devel |
# Dockerfile
FROM centos:6.10
RUN yum install -y gcc gcc-c++ make zlib-devel libjpeg-devel freetype-devel fontconfig-devel giflib-devel libpng-devel \
&& wget https://www.swftools.org/swftools-0.9.2.tar.gz \
&& tar -xzf swftools-0.9.2.tar.gz \
&& cd swftools-0.9.2 \
&& ./configure --prefix=/usr/local/swftools \
&& make -j4 && make install
# 構建鏡像並提取二進制
docker build -t swftools-builder .
docker create --name extract swftools-builder
docker cp extract:/usr/local/swftools ./swftools-dist
docker rm extract
離線環境下,預先在有網機器構建完整運行時環境,再分發二進制文件 是最高效、可復現的方案。