su-ing 到 root 并直接从命令行“apt update”运行后,某些软件包升级会出现一个对话框(蓝底白字,红色块突出显示使用 Tab 键选择的选项)——使用 Tab 键后选择适当的选项然后输入,继续执行该过程。
现在,如果将 apt 升级命令放入可执行的 Bourne shell 脚本中(以及其他命令,例如 apt-file update、apt 升级之前的 apt update),并且 apt 升级进程会调用对话框来获取用户输入(保留旧的修改后的配置版本,用新版本替换配置等)然后键盘输入被忽略——字符在终端上回显,但对话进程看不到。
唯一可以做的就是转到另一个 X 终端,终止 apt 进程,删除锁定文件,运行 dpkg --configure -a,运行 apt-get -f Upgrade 等
我怀疑问题可能是由于调用对话框时 stdin 重定向和/或 tty 模式更改为原始模式。
那么 apt 是否可以通过一些必要的设置从 shell 脚本运行,以便在 apt 调用对话框时输入不会丢失?
这个问题对于 Debian、Ubuntu 和 Linux Mint 来说很常见。
答案1
我的 shell 脚本中的所有错误。
我正在做的 echo Y | apt upgrade
事情显然会在调用对话框时导致重定向问题。
我应该一直做apt upgrade -y
或wajig upgrade -y
。
当我第一次尝试时,apt -y upgrade
它抱怨语法错误。所以我采取了那个糟糕的黑客,我已经忘记了我已经实施了。
让其他人注意避免出现此类问题。