Ubuntu/Debianapt-get变量 DEBIAN_FRONTEND

时间:2020-01-09 10:38:18  来源:igfitidea点击:

DEBIAN_FRONTEND apt或apt-get变量是干嘛用的?
在Debian和Ubuntu Linux下,如何以及为什么需要在Docker或Shell脚本中使用它?

Debian,Ubuntu和克隆使用称为debconf的Debian软件包配置系统。
在将软件包安装到Linux桌面或云服务器之前,可以先使用debconf。
例如,可以使用sysadmin任务的各种选项来配置apt命令或apt-get命令。
本教程说明DEBIAN_FRONTEND环境变量。

说明DEBIAN_FRONTEND apt-get变量

debconfs的独特功能之一是它提供给您的界面只是可以随意交换的众多界面之一。
有许多可用的debconf前端:

  • dialog Debian/Ubuntu Linux下apt/apt-get的默认前端。它向您显示问题。它在基于ssh的会话上以文本模式工作。
  • readline是最传统的前端,它看起来与Debian配置选项非常相似:一系列问题,使用纯文本在控制台上打印出来。最适合使用缓慢的远程连接并完全适应Linux命令行选项的情况。
  • noninteractive当您通过apt安装或升级系统时需要零交互时,可以使用此模式。它接受所有问题的默认答案。它可能会向根用户发送错误消息,仅此而已。否则,它完全安静且不起眼,是自动安装的理想前端。可以在Dockerfile,shell脚本,cloud-init脚本等中使用这种模式。

gnome,这是使用gtk和gnome库的现代X GUI。
kde,另一个前端提供了使用Qt库编写的简单X GUI。
它非常适合KDE桌面。
编辑器适用于那些必须在文本编辑器中完成所有操作的狂热者。
它会在一个看起来像典型的unix配置文件的文件上运行编辑器,然后编辑这些文件以与debconf进行通信。
web此前端充当网络服务器,您可以通过网络浏览器连接到该服务器,以浏览问题并回答。
同样,这是一种概念证明,出于安全原因,应避免使用Web前端。

如何使用apt DEBIAN_FRONTEND环境变量

语法如下:

DEBIAN_FRONTEND={name_here} apt-get install pkg
DEBIAN_FRONTEND={name_here} apt install pkg
DEBIAN_FRONTEND=noninteractive apt-get -y update
DEBIAN_FRONTEND=noninteractive apt-get -y upgrade

对于更长的脚本和其他交换过程,您可能需要导出shell变量:

export DEBIAN_FRONTEND=noninteractive
apt -y install nginx
apt-get -y update
apt-get -y upgrade

AWS EC2/Lightsail示例

可以使用Linode或AWS或服务提供商cloud-init系统运行脚本。
换句话说,添加将在实例首次在AWS Lightsail上启动时在您的实例上运行的shell脚本:对于EC2,请如下运行aws cli:

aws ec2 run-instances --image-id ami-abcd1234 --count 1 \
--instance-type m3.medium --key-name my-ssh-key \
--subnet-id subnet-abcd1234 --security-group-ids sg-abcd1234 \
--user-data file://ubuntu-server-script.txt