当 apt-get Upgrade 或 apt Upgrade 从 shell 脚本运行并调用“dialog”时,输入挂起

当 apt-get Upgrade 或 apt Upgrade 从 shell 脚本运行并调用“dialog”时,输入挂起

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 -ywajig upgrade -y

当我第一次尝试时,apt -y upgrade它抱怨语法错误。所以我采取了那个糟糕的黑客,我已经忘记了我已经实施了。

让其他人注意避免出现此类问题。

相关内容