如何自动回答安装提示("yes" 除外)?
How do I answer install prompts (other than with "yes") automatically?
剧情简介
我正在尝试构建一个 Docker 映像,但它失败了,因为我试图通过 apt install
获取的其中一个软件包在安装过程中提示用户。我想回复这个提示,但我不知道如何以非交互方式回复。
描述
我正在构建一个 Docker 图像,我的 Docker 文件包含以下行:
RUN apt install -y texlive-latex-extra
(这个包有一些我需要的 LaTeX 库。)
在安装过程中,这会停止:
Setting up tzdata (2018d-1) ...
debconf: unable to initialize frontend: Dialog
debconf: (TERM is not set, so the dialog frontend is not usable.)
debconf: falling back to frontend: Readline
Configuring tzdata
------------------
Please select the geographic area in which you live. Subsequent configuration
questions will narrow this down by presenting a list of cities, representing
the time zones in which they are located.
1. Africa 6. Asia 11. System V timezones
2. America 7. Atlantic Ocean 12. US
3. Antarctica 8. Europe 13. None of the above
4. Australia 9. Indian Ocean
5. Arctic Ocean 10. Pacific Ocean
Geographic area:
此时,它正在等待一些输入。 (在此之后还有另一个选择时区的提示——我认为了解 LaTeX 文件中的 \today
指令很重要。¯\_(ツ)_/¯)
我如何以非交互方式回答这个问题?
到目前为止我尝试了什么
我试过这样做:
apt install -y texlive-latex-extra <(echo 12 && echo 2)
还有这个:
echo 12 && echo 2 | apt install -y texlive-latex-extra
第一个死于此错误:
apt install -y texlive-latex-extra <(echo 12 && echo 9)
第二个好像没什么效果
作为参考,这是我的 Docker到目前为止的文件:
FROM ubuntu:latest
RUN apt update && apt upgrade -y && apt install -y curl bzip2 tar make gcc wget gnupg unzip
RUN apt install -y texlive
RUN apt install -y nodejs npm git
RUN npm install -g bower
RUN apt install -y texlive-latex-extra
更新
我发现了一些接近 的东西,它建议 运行 apt install
和 DEBIAN_FRONTEND=noninteractive
。这充分解决了我的问题。 :) 但是,我还是想知道如何响应提示,因为那里提供的解决方案只提供了如何抑制它们。
如果您想编写终端交互脚本,可以在 Linux 上使用 expect(这可能不是很容易;您需要预测交互)。
记住 terminal emulators are complex and arcane things (because terminals like VT100 have been complex). See termios(3), pty(7) and read The Tty demystified.
剧情简介
我正在尝试构建一个 Docker 映像,但它失败了,因为我试图通过 apt install
获取的其中一个软件包在安装过程中提示用户。我想回复这个提示,但我不知道如何以非交互方式回复。
描述
我正在构建一个 Docker 图像,我的 Docker 文件包含以下行:
RUN apt install -y texlive-latex-extra
(这个包有一些我需要的 LaTeX 库。)
在安装过程中,这会停止:
Setting up tzdata (2018d-1) ...
debconf: unable to initialize frontend: Dialog
debconf: (TERM is not set, so the dialog frontend is not usable.)
debconf: falling back to frontend: Readline
Configuring tzdata
------------------
Please select the geographic area in which you live. Subsequent configuration
questions will narrow this down by presenting a list of cities, representing
the time zones in which they are located.
1. Africa 6. Asia 11. System V timezones
2. America 7. Atlantic Ocean 12. US
3. Antarctica 8. Europe 13. None of the above
4. Australia 9. Indian Ocean
5. Arctic Ocean 10. Pacific Ocean
Geographic area:
此时,它正在等待一些输入。 (在此之后还有另一个选择时区的提示——我认为了解 LaTeX 文件中的 \today
指令很重要。¯\_(ツ)_/¯)
我如何以非交互方式回答这个问题?
到目前为止我尝试了什么
我试过这样做:
apt install -y texlive-latex-extra <(echo 12 && echo 2)
还有这个:
echo 12 && echo 2 | apt install -y texlive-latex-extra
第一个死于此错误:
apt install -y texlive-latex-extra <(echo 12 && echo 9)
第二个好像没什么效果
作为参考,这是我的 Docker到目前为止的文件:
FROM ubuntu:latest
RUN apt update && apt upgrade -y && apt install -y curl bzip2 tar make gcc wget gnupg unzip
RUN apt install -y texlive
RUN apt install -y nodejs npm git
RUN npm install -g bower
RUN apt install -y texlive-latex-extra
更新
我发现了一些接近 apt install
和 DEBIAN_FRONTEND=noninteractive
。这充分解决了我的问题。 :) 但是,我还是想知道如何响应提示,因为那里提供的解决方案只提供了如何抑制它们。
如果您想编写终端交互脚本,可以在 Linux 上使用 expect(这可能不是很容易;您需要预测交互)。
记住 terminal emulators are complex and arcane things (because terminals like VT100 have been complex). See termios(3), pty(7) and read The Tty demystified.