使用 distrobox 和 nix 加速 UOS 开发
UOS 这仓库有多鬼畜,就不用我多说了,开发的时候每次都要重装一个不同版本的系统也挺麻烦,比如 1060、1063、1070、1070u1。。。
所以我就想到,我可以用构建用的 rootfs 加上仓库,整出来一个基础环境,然后通过 distrobox 来启动,这样随时都可以快速准备一个环境。
平时我用的开发工具就 neovim 和 vscode 居多,所以再配合上 nix 把 neovim 和一些 UOS 缺少的工具都装上,想想都是美滋滋。
说干就干!
构建 Docker 镜像
由于 UOS 有多个不同架构的支持,肯定不能绑死到一个平台上,我使用 docker buildx 来构建多架构镜像。rootfs 我就不公开了,直接上 Dockerfile。
FROM --platform=$TARGETPLATFORM scratch |
这里为了方便我构建,我将仓库的名称使用变量控制了。
docker buildx build --platform=linux/amd64 -t linuxdeepin/1063:base --build-arg UOS_VERSION=eagle/1063 . --load |
只需要控制 label 和 仓库名称,就能快速的创建出一个可用的 docker 镜像。使用 --load
参数构建完以后直接导入镜像,可以在 docker images
中看到。
创建 Distrobox 环境
现在有个可用的 docker 镜像,就可以使用 distrobox 创建环境了。
distrobox create --image linuxdeepin/1063:base --name 1063 --volume /nix:/nix:rw --additional-flags "--pids-limit -1" |
安装 nix 的过程请参考上一篇文章,这里是把 nix 挂载到环境里了。
运行以后等待一会儿,就看到创建成功了。
Creating '1063' using image linuxdeepin/1063:base [ OK ] |
提醒我们用 distrobox enter 1063
进入环境。
运行
运行的话没啥问题,只是需要设置一下用户密码,不知道是不是 distrobox 改变策略了,以前应该是首次进入的时候就提醒设置密码,现在必须手动先运行一下 passwd
,不然 sudo 之类的命令是不能用的。
❯ distrobox enter 1063 |
本文是原创文章,采用CC BY-NC-SA 4.0协议,完整转载请注明来自小竹's blog
评论 ()