[Exchange and share] deepinV23尝试使用distrobox运行软件
Tofloor
poster avatar
ThinkYoung
deepin
2023-05-20 01:35
Author

书接上文,《deepinV23尝试使用nixpkg运行软件》,

V23既然可以试着用nix,那么docker之类 更没问题了,

发现大神版主 donaldsebleung 说,V23已经做了V20的兼容方案,

还有官微信号 《deepin V23 beta应用兼容:V20的应用,兼容啦!》文章

于是我参照了 大神版主 donaldsebleung 这篇帖子 distrobox

摘录下大神的安装教程:

distrobox 使用星火应用商店安装就好 spk://store/development/distrobox
若您打算安装 Docker,请执行 sudo apt update && sudo apt install -y docker.io 命令,
并把相关用户加到 docker 群组下: sudo usermod -aG docker $USER;
只有在 docker 群组下的用户才能运行 Docker 容器,而 Docker 容器将以 root 权限运行;
因此,容器里 root 执行的命令可能会影响宿主机,安全性不如 Podman 。

docker这段大家可以跳过,使用兼容方案默认切换到podman,也推荐大家使用podman!!!直接安装兼容方案!!!
我努力尝试了V23安装distrobox,我选择基于docker方式安装容器,podman后出的我不太熟

但可能是我长时间没用了,配置了国内源,docker使了牛劲也没pull拉动,换了组合,勉强能用,请大家分享下好的配置源吧!

我目前用docker国内镜像源:

修改/etc/docker/daemon.json,增加或者修改以下配置:

{
  "registry-mirrors": [
    "https://dockerproxy.com",
    "https://hub-mirror.c.163.com",
    "https://mirror.baidubce.com",
    "https://ccr.ccs.tencentyun.com"
  ]
}

配置完重启:

systemctl daemon-reload
systemctl restart docker

使用distrobox:我选择arch镜像,毕竟aur软件源多,不用特别考虑依赖问题!又是一顿卡,不过不付期待!

distrobox create --image archlinux:latest --name arch
distrobox enter arch

进入到arch环境了:

安装软件inkscape,运行inkscape

sudo pacman -S 包名

对比nix注重的是重定向软件包来说,distrobox更偏向容器环境,所以发行版对应所支持的软件才是选择的目标!

成果展示:

截图_2023-05-19_17-08-39.png

感谢版主大神 donaldsebleung 回复,将V20兼容模式补发如下:

deepin 20 兼容模式可在终端安装 deepin-compatibility-mode 软件包,或者试试应用商店搜索 "deepin (V20)":

sudo apt update && sudo apt install -y deepin-compatibility-mode

安装后打开 deepin (V20) APP 即可

容器镜像是 localhost/linuxdeepin/apricot:v20.8-compatible ,貌似安装兼容方案后从本地的容器镜像仓库提取的:

$ podman images
REPOSITORY                     TAG               IMAGE ID      CREATED      SIZE
localhost/linuxdeepin/apricot  v20.8-compatible  6b03b24c2d82  11 days ago  3.3 GB

按照大神教程,我的调试过程:

因为使用distrobox,容器端不能并存,安装兼容模式,自动切到了podman,上面的docker就是白折腾了,于是重新配置podman:

podman的国内源设置:

sudo nano /etc/containers/registries.conf

unqualified-search-registries = ["docker.io"]

[[registry]]
prefix = "docker.io"
insecure = false
blocked = false
location = "docker.io"

[[registry.mirror]]
location = "dockerproxy.com"
[[registry.mirror]]
location = "hub-mirror.c.163.com"
[[registry.mirror]]
location = "mirror.baidubce.com"
[[registry.mirror]]
location = "ccr.ccs.tencentyun.com"

安装兼容模式 开始菜单会有个深度图标deepin(V20),它会打开终端进入容器环境,

但是我当时打开没啥反应,也没发现 localhost/linuxdeepin/apricot:v20.8-compatible镜像,

(其实后来才加载出来镜像V20.9 直接用它就行,下面跳过吧)

于是我网上寻找一下v20的镜像,代替一下,(这个V20镜像dpkg有问题,还是不要用了)

我发现一个 大泽的deepin镜像 https://gitee.com/dz-io/deepin-desktop-docker

podman pull daze456/deepin-desktop

等我下载,尝试下这个镜像如何?

distrobox create --image daze456/deepin-desktop:latest --name v20

distrobox enter v20

V20兼容模式 终于可以装上steam,完美安装i386库(我的安装记录166个i386库) 这就是阶段性胜利!

截图_20230520074939.png

我安装了 但是因为我是虚拟机 我并没有下游戏
欢迎大家真机评测一下

distrobox的潜力很大,大家应该充分利用它,重视它的价值!
我觉得熟悉podman/docker的话,比nix更易用一些!

我已经把deepinV20兼容模式迁移到manjaro下,
真的省略了虚拟机就可以体验deepin的快乐!

如果不想动原配置
就像我在manjaro里面一样
把deb解包里面的镜像导入到podman

podman load -i apricot_v20.8-compatible.tar.gz
再运行distrobox 运行容器就好了
distrobox create --image localhost/linuxdeepin/apricot:v20.8-compatible --name v20

使用 donaldsebleung 的在线docker镜像

distrobox create --image docker.io/donaldsebleung/linuxdeepin-apricot:v20.8-compatible --name v20
distrobox enter v20

其实没什么太大区别 后来发现distrobox也给生成了图标
distrobox enter v20
manjaro下起个alias别名,更好记
alias deepin="distrobox enter v20"
alias v20="distrobox enter v20"

使用 deepin官方 的在线docker镜像

事实上,deepin v23 所提供的 deepin v20 兼容方案(DCM)正是基于 Distrobox 的。如果你不是 deepin 用户而希望运行一个 deepin 的“子系统”来体验的话,假定你想体验 deepin v20,则可以通过

distrobox create deepin-v20 --image docker.io/linuxdeepin/apricot

来创建对应的“子系统”了。

使用Ubuntu “子系统”:

假定我们需要安装一个 Ubuntu “子系统”,那么,接下来,我们可以如此创建它:

# 创建一个名为 ubuntu 的“子系统”,使用 docker hub 上的 ubuntu 22.04 作为基础镜像
$ distrobox create ubuntu --image docker.io/library/ubuntu:22.04

当然,创建只需要进行一次,创建过程即会自动从网络拉取相关的容器镜像,然后帮你创建好本地对应的容器环境了。创建完毕之后,你就可以通过下面的命令来进入容器了:

# 进入名为 ubuntu 的“子系统”
$ distrobox enter ubuntu
Reply Favorite View the author
All Replies
deepin尐助手
deepin
2023-05-20 02:36
#1

开容器再运行一个系统的方法不太优雅。

Reply View the author
ThinkYoung
deepin
2023-05-20 02:42
#2
deepin尐助手

开容器再运行一个系统的方法不太优雅。

还好,我其实并不怎么排斥docker,
就像Windows也有WSL一样,
存在即合理!
对于distrobox这种可以实现多发行版基座
等同实现了windows RDP的WinApps功能了
实在不能再帅了!

Reply View the author
神末shenmo
Moderator
Spark-App
2023-05-20 03:02
#3

我挺好奇distrobox打包的deb长啥样

准备韩过来作为兼容性解决方案

Reply View the author
buyike
Moderator
2023-05-20 03:12
#4

这个V23可以直接安装呀,还可以输入中文了。

Reply View the author
donaldsebleung
deepin
2023-05-20 03:17
#5

感谢分享,过奖了blush

顺带提一下,安装图形化应用后可于容器里执行 distrobox-export 命令生成 APP 启动图标,跟本地图形化 APP 无异,例如:

distrobox-export --app inkscape
Reply View the author
希声
deepin
2023-05-21 04:55
#6

感谢,终于找到这个兼容模式怎么用了,公众号写的太简单了,好奇楼主怎么找到这个用法?我在v23的仓库找不到这个包

另外,这个包为什么这么大,564m

Reply View the author
ThinkYoung
deepin
2023-05-21 05:00
#7
希声

感谢,终于找到这个兼容模式怎么用了,公众号写的太简单了,好奇楼主怎么找到这个用法?我在v23的仓库找不到这个包

另外,这个包为什么这么大,564m

因为里面就是V20的容器镜像压缩包
我请教的大神版主 donaldsebleung 呀,
我把他的回复 分享出来了而已

Reply View the author
ThinkYoung
deepin
2023-05-21 05:07
#8
神末shenmo

我挺好奇distrobox打包的deb长啥样

准备韩过来作为兼容性解决方案

我认为就相当于docker叠加容器似的
在兼容环境层容器上面叠加个应用层小容器就行了,
或者直接给个命令在容器里面安装。
因为docker/podman兼容容器里面权限是默认的
属实podman没监控服务的话
某种程度比docker好用多了。
我测试,星火应用商店能在容器里面部署安装
但是我用商店安装软件就报权限错误了,
神末大神,有空帮研究研究呀?

Reply View the author
希声
deepin
2023-05-21 05:12
#9
pmz@pmz-pc:~$ apt show deepin-compatibility-mode
Package: deepin-compatibility-mode
Version: 0.1.2
Priority: optional
Section: misc
Maintainer: Chen Linxuan 
Installed-Size: 未知
Depends: distrobox, jq, libnotify-bin, podman
Download-Size: 564 MB
APT-Manual-Installed: yes
APT-Sources: https://community-packages.deepin.com/beige beige/commercial amd64 Packages
Description: distrobox wrapper for install and running debs inside a v20.8 container

找到了为什么这么大,打包了,distrobox,podman,还有jq,notify,理论上会覆盖我自己装的distrobox和podman吧,如果我改了podman的配置,不知道会不会应用到

Reply View the author
ThinkYoung
deepin
2023-05-21 05:22
#10
希声
pmz@pmz-pc:~$ apt show deepin-compatibility-mode
Package: deepin-compatibility-mode
Version: 0.1.2
Priority: optional
Section: misc
Maintainer: Chen Linxuan 
Installed-Size: 未知
Depends: distrobox, jq, libnotify-bin, podman
Download-Size: 564 MB
APT-Manual-Installed: yes
APT-Sources: https://community-packages.deepin.com/beige beige/commercial amd64 Packages
Description: distrobox wrapper for install and running debs inside a v20.8 container

找到了为什么这么大,打包了,distrobox,podman,还有jq,notify,理论上会覆盖我自己装的distrobox和podman吧,如果我改了podman的配置,不知道会不会应用到

如果不想动原配置
就像我在manjaro里面一样
把deb解包里面的镜像导入到podman

podman load -i apricot_v20.8-compatible.tar.gz
再运行distrobox 运行容器就好了
distrobox create --image localhost/linuxdeepin/apricot:v20.8-compatible --name v20
其实没什么太大区别 就是少了启动图标
distrobox enter v20

Reply View the author
希声
deepin
2023-06-08 19:35
#11
ThinkYoung

如果不想动原配置
就像我在manjaro里面一样
把deb解包里面的镜像导入到podman

podman load -i apricot_v20.8-compatible.tar.gz
再运行distrobox 运行容器就好了
distrobox create --image localhost/linuxdeepin/apricot:v20.8-compatible --name v20
其实没什么太大区别 就是少了启动图标
distrobox enter v20

我就是去年从manjaro回到deepin的,manjaro+kde用了一年左右,但是kde全局代理不行,反而dde好的多,而且kde我认为也没有dde美观,但是arch系定制化比deepin强,但是经过一段时间deepin+distrobox的折腾后,基本也折腾完了,所以最终办公开发环境切换到了deepin20,而且确定以后不换了

Reply View the author
ThinkYoung
deepin
2023-06-08 21:30
#12
希声

我就是去年从manjaro回到deepin的,manjaro+kde用了一年左右,但是kde全局代理不行,反而dde好的多,而且kde我认为也没有dde美观,但是arch系定制化比deepin强,但是经过一段时间deepin+distrobox的折腾后,基本也折腾完了,所以最终办公开发环境切换到了deepin20,而且确定以后不换了

我不太固定,我更愿意看看新的想法,新的思路,新的软件,大部分全跑在虚拟机了

deepinV20算是稳定收官典藏了,可以distrobox,可以vbox,居家必备

我之前一开始去尝试滚动更新的Arch/Manjaro,Arch系有很多新思路的分支发行版,有点意思,哪怕滚挂几次,我依旧连续用了多半年,还是蛮喜欢,有了distrbox,arch系更不能扔

最近翻出ubuntu了,虽然商业路走的越來越偏激了,但是兼容性属实蛮好的,我本来用xfce的,但是wayland出来之后,先试试gnome

再回来说V23,有点blendOS的味道,因为使用distrobox,可以实现依赖隔离,系统不可变,原子更新。但是blendOS自己就说了,这种安全是安全,但是不太方便用户修改配置文件

所以目前是deepinV20+Ubuntu+Manjaro+Win

Reply View the author
希声
deepin
2023-06-09 07:22
#13

还是你们喜欢折腾,我是折腾不动了,就想找个好看又好用,生态足够,稳定省心的linux系统、办公学习,更多把精力放在特定领域的技术了,毕竟想要学的技术太多,时间上又不够用、、、

现在deepin的颜值好用+distrobox+archlinux容器(更多是命令行上的生态,版本比较新及部分aur上的gui,差不多能正常使用吧)结合来用,目前的应用满足需求,顶多vb虚拟出个win11 精简版,特殊软件需要时用一下。目前最期待的是23赶紧release,以及distrobox稳定迭代,无奈两者节奏都比较慢,尤其distrobox,我看提交节奏貌似不太行啊,当前的稳定版本已经好几个月了,我怕鸽了、、、

其实之前想搞qemu+kvm来着,性能会比vb之类的强一些,但是有更优先级的东西要搞,就只能往后靠了

也算是持续折腾吧,但是不再纠结发行版了。因为我觉得就我这几年的使用来看,deepin在某些程度上,完全算是跟archlinux一样,第一梯队了,(可能很多没持续用过linux的都不认可、、、)。目前正好两者结合,稳定前进就好了

Reply View the author
星语我梦
deepin
2023-07-26 08:27
#14

怎么访问distrobox里的端口?

我在里面装了fish,但是fish_config必须用浏览器访问。distrobox没开放端口

Reply View the author
ThinkYoung
deepin
2023-07-26 13:07
#15
星语我梦

怎么访问distrobox里的端口?

我在里面装了fish,但是fish_config必须用浏览器访问。distrobox没开放端口

从distrobox文档上看 没有端口这一项

我想既然是podman的封装 可以从podman管理这一思路找找看

Reply View the author
星语我梦
deepin
2023-07-27 06:23
#16
ThinkYoung

从distrobox文档上看 没有端口这一项

我想既然是podman的封装 可以从podman管理这一思路找找看

podman 没有修改端口的方法,只能销毁重建

Reply View the author
ThinkYoung
deepin
2023-07-27 06:30
#17
星语我梦

podman 没有修改端口的方法,只能销毁重建

网上有种方式 不销毁 修改数据库 bolt_statle.db

不销毁容器,修改 Podman 容器的端口号 - 简书 (jianshu.com)

最近有点忙 没精力尝试一下 你有时间的话不妨找个容器试试

Reply View the author