distrobox install in ubuntu 22.04 / 在 ubuntu 22.04 上安装 distrobox (***) OK
要点:
本测试实验,采用的是 podman + distrobox
在沙盒 snap 中,安装 distrobox 需要使用 --devmode 开发模式;可以避开 distrobox 的版本检查? distrobox 官方文档显示, Installation https://distrobox.it/ apt 安装的最低要求是 23.04;低于这个版本的 apt 官方仓库里就没有 distrobox。
1. 开发模式好像会避开 distrobox对 Ubuntu OS 的版本审查?早前尝试过,由于 OS 的版本低于要求而无法安装;现在可以在 --devmode 参数下安装了,也许是 distrobox的新版改进了?还是因为其他的原因?
2. 初步的基本功能验证,OK。具体如何?还有待进一步的使用并验证?
------
注 1:在 22.04 上使用的原因,虽然现在已经出了 25.04;但是,作者所使用的第三方开源 app,目前只支持到 22.04。
注 2:验证了在桌面系统上,使用 distrobox 可以简化在容器中运行带图形界面的 app 的复杂命令格式问题。不同的 app 的 podman 启动参数不一样,太复杂了?太麻烦了。
有得有失:使用 distrobox 会将当前用户的整个 home 目录自动映射到容器中。这是牺牲了文件夹的隔离性来换取的。本来就是个人使用,隔不隔离也无所谓;实在还想隔离,就新建一个全新的用户来使用 distrobox。
注 3:一个好处:
使用 distrobox 启动容器,运行容器版 ros 的乌龟图形界面,控制正常。要比运行 podman 再加一堆参数的命令形式,方便多了。
在 distrobox 容器d的:
- 终端 1 中运行:roscore
- 终端 2 中运行:rosrun turtlesim turtlesim_node
- 终端 3 中运行:rosrun turtlesim turtle_teleop_key
结果:OK
* /rosversion: 1.17.0
------
特别注意:
1. distrobox 可能并不适用于这些场景?或者用户需要自行作出一些修改才能用于这些场景?
比如:在 容器中内置了使用到 /home 目录下的某些子目录时,而使用 distrobox 会将容器中的 home 目录给屏蔽掉了;从而造成在容器中,某些用户的 app 运行异常。<< 存在这样的场景吗?distrobox 有相关的设置来处理这类的场景吗?也许有?也许没有?或者还有其他的解决办法,但是,博主目前并没有深入去研究它。
2. 在 Desktop 个人用途的场景里,对于跨发行版、跨平台使用的 app,采用 distrobox 基本上就和 win 中的绿色软件一样,使用简单方便。当然,目前还是比 win 复杂一些,毕竟还是需要懂得、掌握关于容器使用的那几个命令。
在 Linux 中,app 的跨平台,跨大版本号的安装和运行,是困难的。使用 VirtualBox、VMware 之类虚拟机,除非电脑的性能超强,否则,会拖累运行的速度;在编译场景下使用,就是在浪费时间和生命。使用容器则会快得多,轻梁得多。当然,在某些场景之下,VirtualBox 之类虚拟机的地位,还是难以取代的。
---------------------------------
测试环境
$ podman version
Version: 3.4.4
API Version: 3.4.4
Go Version: go1.18.1
Built: Thu Jan 1 08:00:00 1970
OS/Arch: linux/amd64
$ distrobox --help
distrobox version: 1.8.0
$ lsb_release -a
LSB Version: core-11.1.0ubuntu4-noarch:security-11.1.0ubuntu4-noarch
Distributor ID: Ubuntu
Description: Ubuntu 22.04.5 LTS
Release: 22.04
Codename: jammy
注意:
- 好像容器只能使用 distrobox 来创建。
- 使用 podman 创建了,在 distrobox ls 显示不出来。也许是环境变量没有设置正确的原因吧?
--------------------------------
修复了一个旧版本的 bug
解决了在 distrobox 旧版本下,在终端里的提示信息,与主机上的一样的问题。
root@353fbe544b53:/# ls
bin dev home lib32 libx32 mnt proc sbin sys usr boot
etc lib lib64 media opt root run srv tmp var
root@353fbe544b53:/# << 在容器内部的提示信息
-----------------------------------------------------------------
关联参考:
distrobox install in ubuntu 22.04 / 在 ubuntu 22.04 上安装 distrobox (***) OK distrobox install in ubuntu 22.04 / 在 ubuntu 22.04 上安装 distrobox (***) OK-CSDN博客
Setting up Distrobox on Ubuntu 22.04 (**) Setting up Distrobox on Ubuntu 22.04 (**)-CSDN博客
docker, podman 配置国内镜像国内源 (**)/ docker / podman pull 源两种设置、运行方法 docker, podman 配置国内镜像国内源 (**)_podman国内镜像源-CSDN博客
2. 直接带网址运行
$ podman pull registry.dockermirror.com/osrf/ros:humble-desktop-full-jammy #ros2
$ podman pull registry.dockermirror.com/osrf/ros:noetic-desktop-full #ros 1
------
How to change the display name on the Terminal? 如何识别终端是运行在哪一个容器里? (**) https://blog.csdn.net/ken2232/article/details/139538759
在 debian 11 与 12 上安装 distrobox 的区别 汇总 在 debian 11 与 12 上安装 distrobox 的区别 汇总_debian 11 12 区别-CSDN博客
debian 11 安装 distrobox( 含:AI自动生成的解决方案) debian 11 安装 distrobox( 含:AI自动生成的解决方案)_distrobox安装deb-CSDN博客
distrobox 安装 与 卸载 distrobox 安装 与 卸载_distrod 卸载-CSDN博客
-----------------------------------------------------------------
=====================================
成功的测试?<< 初步验证 OK
Enable snaps on Ubuntu and install Distrobox https://snapcraft.io/install/distrobox/ubuntu#install
1. 在宿主机中运行
$ sudo apt update
$ sudo apt upgrade # 这个步骤可能不需要,但还是运行了。
------
$ sudo apt install snapd$ sudo snap install distrobox --edge --devmode
NG
$ sudo snap install distrobox --edge
error: The publisher of snap "distrobox" has indicated that they do not
consider this revision to be of production quality and that it is only
meant for development or testing at this point. As a consequence this
snap will not refresh automatically and may perform arbitrary system
changes outside of the security sandbox snaps are generally confined to,
which may put your system at risk.If you understand and want to proceed repeat the command including
--devmode; if instead you want to install the snap forcing it into
strict confinement repeat the command including --jailmode.OK
$ sudo snap install distrobox --edge --devmode
下载 snap "distrobox" (578),来自频道 "edge"
下载 snap "distrobox" (578),来自频道 "edge"
下载 snap "distrobox" (578),来自频道 "edge"
下载 snap "distrobox" (578),来自频道 "edge"
下载 snap "distrobox" (578),来自频道 "edge"省略。。。。。。
下载 snap "distrobox" (578),来自频道 "edge" 100% 2.42MB/
下载 snap "distrobox" (578),来自频道 "edge" 100% 2.42MB/
获取并检查 snap "distrobox" (578) 的assertion
获取并检查 snap "distrobox" (578) 的assertion省略。。。。。。
获取并检查 snap "distrobox" (578) 的assertion
获取并检查 snap "distrobox" (578) 的assertion
挂载 snap "distrobox" (578)
挂载 snap "distrobox" (578)
挂载 snap "distrobox" (578)
挂载 snap "distrobox" (578)
挂载 snap "distrobox" (578)
挂载 snap "distrobox" (578)
挂载 snap "distrobox" (578)
设置 snap "distrobox" (578) 的安全配置
设置 snap "distrobox" (578) 的安全配置
设置 snap "distrobox" (578) 的安全配置
为自动连接设置 snap "distrobox"(578)安全配置文件
为自动连接设置 snap "distrobox"(578)安全配置文件
为自动连接设置 snap "distrobox"(578)安全配置文件
为自动连接设置 snap "distrobox"(578)安全配置文件
为自动连接设置 snap "distrobox"(578)安全配置文件
运行 "distrobox" snap 的安装钩子
如果存在,则运行 "distrobox" snap 的配置钩子
distrobox (edge) 1.4.2.1-111-gf008b52 from Krille-chan (krillechritzel) installed.
运行
$ distrobox
distrobox version: 1.8.0Choose one of the available commands:
assemble
create
enter
list | ls
rm
stop
upgrade
ephemeral
generate-entry
version
help创建,并进入容器,OK。
2. 在容器中,安装并运行 带图形界面的 app :OK
1. 安装,OK。
sudo apt install featherpad
2. 运行,OK.
featherpad