Anlinux 装的 openSUSE 里 zypper 刷新软件源无法写入缓存!

好吧,我先自己琢磨琢磨看看是什么原因……可能是 proot,也有可能设备,也有可能是脚本,也有可能就是 rootfs 有问题,但起码现在有方向了……等我找到具体原因了我再发帖吧……谢谢你的建议,如果是 anlinux 的问题,我会去提交 issues 的

1赞

我之前用过 anlinux 的 opensuse,也是不好使,估计就是这个原因,直接换了 Ubuntu 什么毛病都没有

我自己手捏的脚本也不行……

这是权限
我是新人,不是很明白有没有问题

drwx--S---. 5 root root 4096 Jan  8 04:02 adm
drwx--S---. 4 root root 4096 Jan  8 04:02 cache

请问这些权限有问题么?
@marguerite @tommyvct @hillwood
麻烦了

软件源都不开?

我觉得看一下 mount 比看这个有用

这是正常的:

drwxr-xr-x 10 root root 4096 Sep 27 02:57 adm
drwxr-xr-x 14 root root 4096 Sep 27 02:57 cache

这是你的:

drwx--S---. 5 root root 4096 Jan  8 04:02 adm
drwx--S---. 4 root root 4096 Jan  8 04:02 cache

问题就在这儿了,你现在的权限(2700,drwx—S—.)的意思是说:

  1. 除了 root 用户以外所有用户都无法运行这个文件下的东西,而且只有 root 用户自己可读可写,sudo 都不行。
  2. 这个文件夹下所有的文件都只能属于 root 这个 group。

openSUSE 肯定不会这么设置的,一般这么搞的都是极其注重安全的系统(看到 setuid/setgid 第一时间就要想到 selinux)。所以我怀疑你玩 selinux 把自己 block 了或者就是 anlinux 之类的脚本里面有这么玩的步骤。再或者因为你的机器装在 Android 上,我不了解是不是用的 Android 的真实闪存当硬盘用,或许就是 Android 本身的权限管理把你那个物理盘的权限给改了。

我感觉可行的解决办法:

  1. 试试用 su 切换到 root 再用 zypper。可能默认给 root 不必须设置普通用户的发行版就遇不到这个问题。
  2. 或者 sudo chmod 777 /var

就像楼上说的 mount 看磁盘挂载情况。我感觉 Anlinux 既然把 Linux 装在 Android 上,其 SD 卡或者闪存的安装位置离开 Anlinux 这个应用必受 Android 权限控制。Android 就没有普通用户。

我看了我自己的 mount,里面并没有/var相关的内容
建议从start-opensuse.sh这个脚本里的操作入手

还有可能不在 startup-opensuse.sh 的脚本,在那个 rootfs。rootfs 里用的 docker pull 的 openSUSE 的 image,不是用的 DVD 或者 JeOS…你要八个发行版一起搞 rootfs 的话,docker 自动化程度确实高,但是…

你可以把它的 rootfs 解压开看看里面的 /var 权限…我怕 openSUSE 的 docker image 做过针对微服务的定制…微服务确实可以只用 root,那么设置权限反而是安全的,反正软件都用 docker 装完了,image 成型也不会再手动进去装软件了,zypper 不能用有什么关系呢,直接删除都没关系。但是非要有人把它当正常系统的话…

你好,谢谢你的建议
Proot 下默认似乎就是使用的 root 登陆,比如

localhost: ~ # whoami
root

所以我个人暂时认为,权限是没有问题的,但我之后仍会尝试su以后再进行zypper

另外,rootfs 内的文件权限是

drwx--S---. 5 root root 4096 Jan  8 04:02 adm
drwx--S---. 4 root root 4096 Jan  8 04:02 cache

再有,关于start-tumbleweed.sh,该脚本确实没有挂载/var

现在的问题方向很明确了,我正在执行以下步骤

  • 我将挂载/var后尝试zypper
    • 我查看了其他脚本,似乎也没有挂载/var的这种操作。以下是挂载后的提示。
proot warning: can’ t sanitize binding "/var ": No such file or directory.

挂我修改的内容

command+="-b /var"
  • 我之后将尝试 su
    • 给出的 rootfs 竟然……
bash: su: command not found
  • 最后使用chmod 777 -R /var
    • 已执行,正在尝试安装 VIM
    • 失败,根据之前的建议我自己分析了 log,估计还是无法写入的问题

综上,我个人觉得应该是 rootfs 有问题:face_with_raised_eyebrow:,但是有些地方很奇怪

zypper.txt (407.2 KB) cli.txt (1.7 KB)

https://build.opensuse.org/package/view_file/openSUSE:Containers:Tumbleweed/opensuse-tumbleweed-image.20200215230516/config.kiwi?expand=1

openSUSE 的 docker image 是精简过的。

你先解压 rootfs 看看 var 权限吧,另外你光 chmod 777 恐怕不行,你可能要先把 setgid 去掉。

你好,这一段时间比较忙,没有及时回复,实在抱歉。
我昨天下午按照你的方法尝试,似乎仍存在问题。
那么这只能是 rootfs 的问题了。
感谢你的帮助,我再次确认后会提交 issues 给 Anlinux,看看它的作者能不能解决问题。辛苦了。
另外,我在 docker 上使用 opensuse 似乎没有问题,不知道是什么。
感谢各位的帮助!