跨版本升级的第4个问题:sudo 未找到命令

尝试安装包的时候,提示bash: sudo: 未找到命令。

运行which sudo,无任何提示;
运行 su - 之后再运行which sudo,仍无任何提示;
退出root,运行id,能看到当前用户peter在sudo组中。

用root打开/etc/sudoers,里面确实没有peter。

已解决:

  1. 用root账户在/etc/sudoers中添加peter;
  2. 用root账户运行apt install sudo

(第2条命令居然直的安装了sudo,没有提示已经存在,那么我之前的sudo哪里去了?)
之后退出root账户,用peter运行 which sudo 和 sudo apt update,正常~

ps:
不建议GUI用户使用apt dist-upgrade命令跨版本升级;建议全新安装新版本系统~

找不到命令的问题,一般就俩原因,一个是命令不存在,另一个就是PATH环境变量配置不正确。

如果你在当前终端里把环境变量改坏了,那就关闭重开个终端;如果是改了配置文件,就把配置文件改回去。

另外,即使环境变量坏了,临时也可以用绝对路径的方式使用命令。

还有,debian 装好系统时就已安装好了 sudo

我也很疑惑,之前好像从来没安装过sudo包。

是不是说,sudo一直在,只不过root和peter这两个用户的PATH变量配置在升级时发生变化了,导致无法找到sudo命令?

也不对,即使PATH变了,但apt install sudo居然也找不到,这就意味着这个系统就完全找不到sudo了~

bullseye 相对 buster 环境变量应该没有变化,可能是你用apt dist-upgrade的时候自动卸载掉了?
如果是这样的话,这可能是个 bug。

你可以检查下日志,路径在/var/log/apt/history.log

果然,在history.log搜索了一下sudo,一共5个,其中有一个sudo是apt autoremove命令下面的。

我是在apt dist-upgrade完成之后大概三个小时的时候,运行了一次apt autoremove,是因为运行apt update后提示有很多东西不需要了可以删除。结果包太多没细看,把sudo也删除了。

另外四个sudo,两个是我后来安装sudo;还有一个是Upgrade下面;最后一个不是sudo,是gnome-sudoku,也在Upgrade下面。