我的个人电脑使用 Fedora,但日常使用中仍有少数软件仅提供面向 Ubuntu / Debian 的 deb 包,无法直接安装。
考虑到大多数软件都会提供 rpm、AppImage、Flatpak 等安装方式,为少数软件迁移到 Ubuntu 并不划算,因此使用 Distrobox 创建一个 Ubuntu 环境,专门用于安装和运行这类软件。
Distrobox
Distrobox 可以基于 Podman、Docker 等容器工具创建其他 Linux 发行版的环境,并与当前系统集成,例如共享用户目录、图形界面和音频等,同时支持直接通过宿主机中的快捷方式运行容器内的 GUI 软件。
创建 Ubuntu 环境
Fedora已经提供Podman,可以直接作为Distrobox的容器后端。
安装 Distrobox:
sudo dnf install distrobox
这里使用 Toolbx 提供的 Ubuntu 24.04 镜像。根据 Distrobox 的兼容性文档,Toolbox 镜像更适合桌面环境使用,并且首次初始化通常更快:
distrobox create -n ubuntu24 -i quay.io/toolbx/ubuntu-toolbox:24.04
进入环境:
distrobox enter ubuntu24
成功进入后,终端前通常会出现类似:
📦[user@ubuntu24 ~]$
之后即可按照普通 Ubuntu 的方式使用 apt。
安装软件
sudo apt update
# 安装仓库中的软件
sudo apt install <package>
# 安装本地 deb 软件
sudo apt install ./example.deb
部分软件可能默认完整的 Ubuntu Desktop 已经安装了一些依赖。如果启动时报缺少动态库等错误,根据实际错误补充对应依赖即可。
导出 GUI 应用
如果安装的是 GUI 软件,可以先查找该软件包安装的 .desktop 文件:
dpkg -L <package> | grep '\.desktop$'
例如可能得到:
/usr/share/applications/example.desktop
然后在 Distrobox 中将其导出:
distrobox-export --app /usr/share/applications/example.desktop
之后即可直接从 Fedora 的应用菜单启动该软件,无需先手动进入 Distrobox。
可以查看当前容器中已经导出的应用:
distrobox-export --list-apps
具体用法可以参考 distrobox-export 文档。
更新
可以进入 Ubuntu 后正常更新:
sudo apt update
sudo apt upgrade
也可以直接从 Fedora 宿主执行:
distrobox enter ubuntu24 -- bash -lc 'sudo apt update && sudo apt upgrade'
其他
退出当前环境:
exit
如果需要停止容器:
distrobox stop ubuntu24
日常仅将其作为软件兼容环境使用时,一般不需要特意停止。
Distrobox 更适合普通用户态软件。驱动、内核模块等依赖底层系统的组件并不适合通过这种方式安装。