Distrobox是一个基于容器运行任意Linux发行版的工具。

安装与启动Distrobox

(1)安装Distrobox

sudo pacman -S distrobox podman

Distrobox支持的容器引擎有:docker、podman等,建议使用podman。

(2)创建Distrobox

distrobox create --name debian-box --image debian:latest

如果下载debian镜像这一步比较慢,可以尝试配置podman镜像代理

distrobox create支持一些额外特性,详见Distrobox创建命令的可选参数

(3)启动Distrobox

distrobox enter debian-box

进入容器后,可以做任何事情,比如:在容器中安装deb包

附录

配置podman镜像代理

sudo tee /etc/containers/registries.conf.d/514-podman-mirror.conf > /dev/null << EOF 
unqualified-search-registries = ["docker.io"]

[[registry]]
location = "docker.io"

[[registry.mirror]]
location = "docker.m.daocloud.io"
[[registry.mirror]]
location = "docker.1ms.run"
[[registry.mirror]]
location = "hub.rat.dev"
[[registry.mirror]]
location = "docker.xuanyuan.me"
[[registry.mirror]]
location = "docker.1panel.live"
EOF

Distrobox创建命令的可选参数

(1)支持systemd环境

增加--init参数,如下所示:

distrobox create --name debian-box --image debian:latest --init

(2)提前安装指定的软件包

增加--additional-packages参数,指定需要安装的包名,如下所示:

distrobox create --name debian-box --image debian:latest --additional-packages "vim"

(3)修改容器内的软件源地址,加速初始化过程

增加--pre-init-hooks参数,修改软件源地址,如下所示:

distrobox create --name debian-box --image debian:latest  --pre-init-hooks "sed -i 's/deb.debian.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list.d/debian.sources && apt update" 

在容器中安装DEB包

(1)准备DEB包

cd ~/Downloads
wget https://dldir1v6.qq.com/weixin/Universal/Linux/WeChatLinux_x86_64.deb

Distrobox会默认挂载宿主机家目录。

如果需要修改DEB中的内容(如:修改DEB包中的prerm脚本),详见修改并重建DEB包

(2)安装DEB

在容器中安装DEB包,与在其它Debian及衍生系统安装DEB的过程并无不同,如下所示:

sudo apt install ./WeChatLinux_x86_64.deb
wechat

如果启动应用时报错缺失动态链接库,可能需要手工安装一下对应依赖。可以通过下述命令找到所有缺失的动态链接库:

ldd $(which wechat) | grep "not found"

随后安装对应依赖:

sudo apt install libpulse0 libxkbcommon-x11-0 libxcb-xkb1 libxcb-icccm4 libxcb-image0 libxcb-shape0 libxcb-render-util0 libxcb-keysyms1 libnss3 libasound2

(3)导出应用

distrobox-export --app wechat

修改并重建DEB包

(1)解包

mkdir -p extract/DEBIAN
# 提取包的控制文件(如prerm等脚本)
dpkg-deb -e package.deb extract/DEBIAN/
# 提取包的实际安装文件
dpkg-deb -x package.deb extract/

(2)修改包内容

修改解压后的任意内容,如修改prerm脚本:

vim extract/DEBIAN/prerm

(3)重新打包

mkdir -p build
dpkg-deb -b extract/ build/