惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Microsoft Security Blog
Microsoft Security Blog
J
Java Code Geeks
GbyAI
GbyAI
aimingoo的专栏
aimingoo的专栏
L
LangChain Blog
I
InfoQ
D
Docker
F
Fortinet All Blogs
Y
Y Combinator Blog
Martin Fowler
Martin Fowler
月光博客
月光博客
B
Blog
Engineering at Meta
Engineering at Meta
T
Tailwind CSS Blog
罗磊的独立博客
博客园_首页
G
Google Developers Blog
Stack Overflow Blog
Stack Overflow Blog
Recent Announcements
Recent Announcements
D
DataBreaches.Net
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
B
Blog RSS Feed
IT之家
IT之家
V
V2EX

博客园 - swordzj

从源码编译PyQt5的过程 四舍六入五成双 用批处理在指定目录启动Notebook 华为S6700交换机的命名规则 给服务器来点压力 配置dovect监听多个端口 OpenSSH 9.2P1 aarch64 编译RPM包及升级处理过程 php7.4 注意事项 不重启服务器在线扩容FCSAN存储 WSUS安装后部署报CLR20错误 NFS服务端口转发 注册表模拟修改Wsus配置 Linux下删除大量文件 Seafile社区版集成Office Online Server实现office文件预览 Exchange 域用户无权管理邮箱 阿里云ECS(Centos)开启X11的步骤 微软官方提供的免费正版 Windows 8.1/Win10/7/XP/Vista 操作系统虚拟机镜像下载 在VS2012下静态链接MFC的问题 扩展BindingList,防止增加、删除项时自动更新界面而不出现“跨线程操作界面控件 corss thread operation”异常 【转】开源软件是否真的如我们想象中的那样安全?
安装qt5的运行环境
swordzj · 2026-01-21 · via 博客园 - swordzj

近期为了在离线环境下安装qt5运行环境,折腾了多种安装方式,发现版本依赖特别严重,直接使用别人提供的安装包很容易把系统搞崩!

经过多次实验,找出了差不多全部的包和相关依赖库文件

binfmt-support
clang-10
clang
clang-tidy-10
clang-tidy
clang-tools-10
cmake
cmake-data
gcc-10-base
gir1.2-matedesktop-2.0
gir1.2-matemenu-2.0
gir1.2-matepanelapplet-4.0
libatomic1
libc6
libc6-dev
libcc1-0
libc-dev-bin
libclang1-10
libclang1-8
libclang-common-10-dev
libclang-cpp10
libcrypt-dev
libegl1
libegl-dev
libffi-dev
libgc1c2
libgcc1
libgcc-s1
libgfortran5
libgl1
libgl-dev
libgles1
libgles2
libgles-dev
libglu1-mesa-dev
libglvnd0
libglx0
libglx-dev
libgomp1
libgtk-layer-shell0
libitm1
libjsoncpp1
libkf5syntaxhighlighting5
libkf5syntaxhighlighting-data
libllvm10
libllvm8
liblsan0
libmate-menu2
libmate-panel-applet-4-1
libmateweather1
libmateweather-common
libncurses-dev
libobjc4
libobjc-9-dev
libomp-10-dev
libomp5-10
libpfm4
libpthread-stubs0-dev
libqbscore1.13
libqt5concurrent5
libqt5core5a
libqt5dbus5
libqt5designer5
libqt5designercomponents5
libqt5gui5
libqt5help5
libqt5network5
libqt5opengl5
libqt5opengl5-dev
libqt5printsupport5
libqt5quicktest5
libqt5sql5
libqt5test5
libqt5widgets5
libqt5xml5
libqt5xmlpatterns5
librda0
librda-common
librhash0
libstdc++6
libstdc++-9-dev
libtinfo-dev
libtsan0
libubsan1
libvulkan-dev
libx11-dev
libxau-dev
libxcb1-dev
libxdmcp-dev
libxext-dev
libyelp0
libz3-4
libz3-dev
llvm-10
llvm-10-dev
llvm-10-runtime
llvm-10-tools
mate-desktop
mate-menus
mate-panel
mate-panel-common
mate-polkit
mate-polkit-common
mate-user-guide
menu
menu-xdg
python3-configobj
python3-pygments
python3-setproctitle
python3-xlib
qbs-common
qhelpgenerator-qt5
qmlscene
qt5-default
qt5-qmake
qt5-qmake-bin
qt5-qmltooling-plugins
qtattributionsscanner-qt5
qtbase5-dev
qtbase5-dev-tools
qtchooser
qtdeclarative5-dev-tools
qtxmlpatterns5-dev-tools
x11proto-core-dev
x11proto-dev
x11proto-xext-dev
xtrans-dev
yelp
yelp-xsl

把上面的包名保存成packages.txt文件,使用下面一条命令即可从源下载适合当前系统的所有正确版本的包

xargs -a packages.txt -r -n  1 apt download

将下载下来的deb文件都放在debs目录下,为了便于在非root环境下批量安装,我请AI写了一个脚本

#!/bin/bash

# install-all-debs.sh
# 离线批量安装当前目录所有 .deb 包(使用 dpkg -i *.deb)
# 双击运行 → 自动弹出终端 + 提权 + 显示完整输出

# 检测是否已在终端中运行
if [ -t 1 ]; then
    # ========== 已在终端:执行安装逻辑 ==========
    SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
    cd "$SCRIPT_DIR"

    echo "📁 当前目录: $SCRIPT_DIR"
    echo "🔍 查找 .deb 文件..."

    shopt -s nullglob
    DEB_FILES=(debs/*.deb)
    shopt -u nullglob

    if [ ${#DEB_FILES[@]} -eq 0 ]; then
        echo "❌ 错误:当前目录下没有找到任何 .deb 文件。"
        read -p "按回车键退出..." _
        exit 1
    fi

    echo
    read -p "👉 将运行 \`dpkg -i *.deb\`(离线安装,自动处理包间顺序)。按回车继续: "

    # 创建临时提权脚本
    TEMP_SCRIPT=$(mktemp --suffix=.sh)
    chmod +x "$TEMP_SCRIPT"

    cat > "$TEMP_SCRIPT" << EOF
#!/bin/bash
set -e
echo "🔑 正在以 root 权限执行:dpkg -i *.deb"
echo "========================================"
# 必须进入正确目录
cd "$SCRIPT_DIR"
dpkg -i debs/*.deb
echo
echo "✅ dpkg 安装流程已完成!"
echo
echo "⚠️ 注意:"
echo "   - 如果有依赖缺失,会显示错误(如 'dependency problems')"
echo "   - 请手动补充缺失的 .deb 文件后重新运行本脚本"
echo "   - 或运行 \`sudo dpkg --configure -a\` 尝试修复未完成的配置"
EOF

    echo "🔐 请求管理员权限(将弹出认证窗口)..."
    echo

    if pkexec "$TEMP_SCRIPT"; then
        echo -e "\n🎉 安装命令已成功执行!"
    else
        echo -e "\n⚠️ 安装被取消或发生错误。"
    fi

    rm -f "$TEMP_SCRIPT"
    echo
    read -p "按回车键关闭窗口..."
    exit 0
fi

# ========== 双击运行:启动终端再调用自己 ==========
exec gnome-terminal -- bash -c "\"$0\"; exec bash"

将安装脚本保存为install-debs.sh,双击选择在终端运行即可