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/