这是踩了麒麟 v10 一个大坑?还是触及我只是盲区了?

144 天前
 Lighfer

在容器里执行判断权限的命令居然会返回错误的结果,但是如果容器的 CentOS7 的话,返回的就是正确的。。

root@29e373ccd636:/# ls -l /usr/bin/cp
-rwxr-xr-x 1 root root 200264 Sep 20  2022 /usr/bin/cp


if [ -r /usr/bin/cp ]; then echo '1'; else echo '2'; fi
2
if /usr/bin/[ -r /usr/bin/cp ]; then echo '1'; else echo '2'; fi
1


if [ -w /usr/bin/cp ]; then echo '1'; else echo '2'; fi
2
if /usr/bin/[ -w /usr/bin/cp ]; then echo '1'; else echo '2'; fi
1


if [ -x /usr/bin/cp ]; then echo '1'; else echo '2'; fi
2
if /usr/bin/[ -x /usr/bin/cp ]; then echo '1'; else echo '2'; fi
1
2545 次点击
所在节点    Linux
17 条回复
Lighfer
144 天前
已确认是版本 bug ,各位老铁避坑该版本:

```
[root@localhost ~]# cat /etc/os-release
NAME="Kylin Linux Advanced Server"
VERSION="V10 (Sword)"
ID="kylin"
VERSION_ID="V10"
PRETTY_NAME="Kylin Linux Advanced Server V10 (Sword)"
```
yinmin
144 天前
容器应该是首选 alpine 、debian 、ubuntu 这 3 个 linux ,是信创项目对容器里的系统有国产要求?
Lighfer
144 天前
@yinmin 可能我没表达清楚,我是指宿主机是麒麟 v10 ,容器是任何非 centos 的,在这个版本的麒麟 v10 都有这个问题
zsj950618
143 天前
which [ 看下是不是 PATH 里有奇怪的东西。
Lighfer
143 天前
@zsj950618 没有呦,甚至尝试过重装直接跑协调命令了
julyclyde
143 天前
“不带路径的左方括号”应该是 shell 内置的命令吧?
你这里用的是哪个 shell ?

另外,既然宿主机是麒麟,你这个 shell 又不是在宿主机里运行的,你为什么推断是麒麟的 bug 呢?
你的原题,看起来故障容器也是麒麟,但是在 3 楼又感觉似乎不是麒麟。到底是不是?
Lighfer
143 天前
@julyclyde 是的,所以一开始就没想过可能是这个问题。要说证据确实没有,毕竟不是搞内核的,推断的原因也是通过控制变量得出的这个结论,镜像不变,命令不变,唯一的变量就是操作系统的不同版本

测试的都是全新重装的系统,debian ubuntu uos ,包括其他版本的麒麟,都试过了,同一个镜像不变,只有这个版本的麒麟 v10 这个版本有这个问题,甚至麒麟其他版本也是正确的。实际上我测了不止一个镜像,debian ubuntu rocky alma 这几个镜像,也全在这些系统上测试了,是完全一样的现象。

唯一不同的,就是 centos7 ,这个镜像在这个版本的麒麟上得到的就是正确的结果,恰巧据我所了解,麒麟 v10 就是在 centos 上改出来的(ಡωಡ)

看有没有搞内核的大佬出来解释一下有没有可能是麒麟修改内核啥东西引出来的 bug ,有可能会引起这样的问题?
julyclyde
142 天前
@Lighfer 既然故障可以稳定重现,那我建议你继续调查啊

建议先执行:
type 左方括号
看看这个不带路径的左方括号命令是不是 shell 内置的 test 命令、然后看看是哪种 shell 、哪个版本

不同的宿主机*不同的容器 ( debian 、ubuntu 、uos 、其他麒麟、v10 麒麟)一共 25 种组合,只有单一的这一个组合是故障的?那这个故障组合里,宿主机是麒麟 v10 ,容器是什么版本?我看你在原 po 和 3 楼、7 楼的说法似乎不一致,我觉得是你的文字写的不对。建议不要用排除的语气来写了。你就直接写这几十种组合分别哪个是好的、哪个是坏的
Lighfer
142 天前
@julyclyde 三个地方的说法是一致的,都有唯一的一个特例,就是容器是 centos7 的情况下就全都是对的。能测试出问题的容器镜像 debian 12 slim
至于你说的,当然验证过了,是内置的,没有被 alias
如果感兴趣我觉得你也可以去下载验证一下,我可以提供所有你需要的环境信息,对我这边来说,我已经把我能力范围内能验证的,以及能测试的组合都做了,已经花了大量的时间了,也把我的结果说出来尽量让大家避坑了,我没有义务再花这么多时间再来重复做一次,如果觉得我用排除法有问题,那建议以及也去测一下(实际上你提到的我一开始就都验证了,网上能搜到的都测了,gpt 能想到的也都测了,最终才怀疑到是系统的问题,才全量重装再测试复现)
julyclyde
141 天前
拜托你明确说一下出错的组合

在哪儿能下载啊?我去麒麟网站看了好像不提供
julyclyde
141 天前
@Lighfer 看了原文、3 、7 、9 之后,我觉得你已经有四种说法了
Lighfer
141 天前
@julyclyde 那请详细说一下哪里四种说法?我看看是我语言逻辑有问题?还是你的理解有问题呢?

出错组合 debian12 slim 加上上面提到的宿主机操作系统,唯一出错的就是我说的那个麒麟版本。

是我语文不及格所以只有我看得懂我的文字吗🥲

下载地址官网有,搜索引擎也很容易能搜到
Lighfer
141 天前
@julyclyde 应该不至于说要我 1 2 3 4 给你列出来吧?
julyclyde
141 天前
@Lighfer 那当然是你语言逻辑有问题了

原文你说“踩了麒麟 v10 一个大坑”“但容器的 CentOS7 的话就是正确的”那自然是暗示容器麒麟 v10 ,而没有说宿主的版本
到 1 层确认 bug 时,提示符是 localhost 而非随机数,那应该是宿主机版本麒麟 v10 了吧

到 3 层又说“容器说任何非 centos 的”那就是说宿主麒麟 v10 、容器各种版本除了 centos 好的其他各种都是错的

到 9 层的时候又冒出一个 debian12slim 来,看你的语气,并非除了 centos 好的其他都是错的,而是只有 debian 一个是错的
Lighfer
141 天前
@julyclyde
1. 标题说麒麟 v10 大坑,内容说容器里执行,原文的说法我觉得你说的没说,确实没有明确说明宿主机是麒麟 v10 ,问题是在容器里遇到的,这个点我确实没说清楚。
2. 同原文楼,同样是没有补充说明是宿主机是麒麟 v10 。
3. 请注意 3 楼,这回明确说明了宿主机是 v10 ,“容器是任何非 centos 的,xxxx 都有这个问题”,这个是明确说明了。并且在你的上下文里(你是在 3 楼之后),是能得到这个明确的上下文信息的,所以我觉得到这里整个是非常明确、清晰的。
4. 同 3 楼,已经明确说了是除了”centos“外任何其他容器镜像。7 楼和 9 楼都明确且重点说了,这个我觉得可能你没认真看。

注意 1:”实际上我测了不止一个镜像,debian ubuntu rocky alma 这几个镜像,也全在这些系统上测试了“
注意 2:”三个地方的说法是一致的,都有唯一的一个特例,就是容器是 centos7 的情况下就全都是对的。能测试出问题的容器镜像 debian 12 slim“,这里明确给你点出来了可以用 debian 12 slim 。难道我还要就继续把 7 楼的每个测过的容器镜像都再写一遍吗?

”并非除了 centos 好的其他都是错的,而是只有 debian 一个是错的“从我上面任何一个回复,都不可能得出这样一个解决。

所以 3 楼之前,我觉得是我表达不清晰,3 楼之后,就见仁见智了。
julyclyde
141 天前
@Lighfer 我觉得你还是抛弃之前几层的内容吧
就直接明说哪个组合有问题
Lighfer
141 天前
有问题:麒麟 v10 ( sword ) + debian 12 slim 镜像、麒麟 v10 ( sword ) + 其他非 centos7 镜像
没问题:麒麟 v10 ( sword ) + centos7 镜像、其他版本麒麟 + 任意镜像、其他版本操作系统 + 任意镜像

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1125828

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX