标签: debconf

处理Linux shell脚本中的输入确认

我正在编写一个Linux Shell脚本来自动完成我在Ubuntu 11.04上做的一些事情.

基本上,我正在编写一个shell脚本来安装NGINX,MySQL和PHP,然后配置所有内容.我知道如何通过命令行完成所有事情.

但是,我不知道我将如何处理进程要求用户输入的部分.例如,我使用apt-get安装的某些内容会要求您进行确认,即(Y)es或(N)o.

我究竟如何处理shell脚本中的自动确认,即在被问到时自动确认是或否?

linux shell ubuntu apt debconf

13
推荐指数
1
解决办法
1万
查看次数

通过debconf-set-selections预配置mysql的空密码

我正在设置一个bash脚本来自动构建LAMP环境.

我debconf-set-selections在安装mysql,phpmyadmin等之前用来设置选项...

它的工作原理很棒.但问题是我必须为mysql设置一个空密码,并且在安装过程中它仍然要求输入密码,即使在之前键入的行:

echo "mysql-server-5.5  mysql-server/root_password  password" | debconf-set-selections
echo "mysql-server-5.5  mysql-server/root_password_again    password" | debconf-set-selections
Run Code Online (Sandbox Code Playgroud)

mysql bash ubuntu debian debconf

9
推荐指数
2
解决办法
3710
查看次数

apt-get install期间发生debconf或perl错误

我使用Linux Mint 16并且在通过apt-get install安装软件包时总是出错:

阅读包列表...完成构建依赖关系树读取状态信息...完成sqlitebrowser已经是最新版本.0升级,0新安装,0删除,26未升级.1未完全安装或删除.执行此操作后,将使用0 B的额外磁盘空间.你想继续[Y/n]吗?是在连接(.)中使用未初始化的值或在/usr/share/perl5/Debconf/DbDriver/File.pm第44行,第3行使用字符串3.在/ usr/share/perl5/Debconf /中使用-in中的未初始化值DbDriver/File.pm第46行,块3.在/usr/share/perl5/Debconf/DbDriver/File.pm第47行,模块匹配(m //)中使用未初始化的值3.使用未初始化的值$ directory in -d at /usr/share/perl5/Debconf/DbDriver/File.pm第48行,块3.在连接(.)中使用未初始化的值$目录或在/ usr/share/perl5/Debconf/DbDriver/File中使用字符串.pm第49行,块3. debconf:DbDriver"config":mkdir:没有这样的文件或目录设置man-db(2.6.5-2)...在连接(.)或字符串中使用未初始化的值usr/share/perl5/Debconf/DbDriver/File.pm第44行,块3.在/usr/share/perl5/Debconf/DbDriver/File.pm第46行使用未初始化的值,块3.使用未初始化的模式匹配中的值匹配(m //)/usr/share/perl5/Debconf/DbDriver/File.pm第47行,块3.使用 未初始化的值$目录在-dr /share/perl5/Debconf/DbDriver/File.pm第48行,块3.在连接(.)中使用未初始化的值$目录或在/ usr/share/perl5/Debconf中使用字符串/DbDriver/File.pm第49行,块3. debconf:DbDriver"config":mkdir:没有这样的文件或目录dpkg:错误处理man-db( - configure):安装后的子进程安装后脚本返回错误退出状态1处理时遇到错误:man-db E:子进程/ usr/bin/dpkg返回错误代码(1)

运行

sudo apt-get install debconf --reinstall
Run Code Online (Sandbox Code Playgroud)

要么

sudo apt-get update --fix-missing
sudo apt-get autoremove && sudo apt-get clean && sudo apt-get install -f
Run Code Online (Sandbox Code Playgroud)

只解决了暂时(直到下次重启)

也许我已经安装了perl一次,而不是使用apt-get.我也尝试用synaptic重新安装perl,但它没有帮助.我能做什么?

linux perl apt-get linux-mint debconf

8
推荐指数
1
解决办法
3924
查看次数

没有安装webserver且没有dbconfig-common的phpmyadmin无人参与安装的debconf选择

想要从bash脚本安装phpmyadmin,我发现很难获得正确的debconf选择,以便不安装/配置任何Web服务器(使用nginx,只有apache2和lighttpd可用)并且没有配置dbconfig-的phpmyadmin数据库很常见,因为我在谷歌上没有找到这样的东西.

这是在Ubuntu 14.04 phpmyadmin 4:4.0.10-1上的debconf选择的完整列表:

debconf-get-selections | grep phpmyadmin
phpmyadmin  phpmyadmin/password-confirm password
# MySQL application password for phpmyadmin:
phpmyadmin  phpmyadmin/mysql/app-pass   password    
phpmyadmin  phpmyadmin/mysql/admin-pass password    
phpmyadmin  phpmyadmin/setup-password   password    
phpmyadmin  phpmyadmin/app-password-confirm password    
# Database type to be used by phpmyadmin:
phpmyadmin  phpmyadmin/database-type    select  mysql
# Reinstall database for phpmyadmin?
phpmyadmin  phpmyadmin/dbconfig-reinstall   boolean false
phpmyadmin  phpmyadmin/remove-error select  abort
phpmyadmin  phpmyadmin/reconfigure-webserver    multiselect 
phpmyadmin  phpmyadmin/missing-db-package-error select  abort
# Configure database for phpmyadmin with dbconfig-common?
phpmyadmin  phpmyadmin/dbconfig-install boolean false
phpmyadmin  phpmyadmin/upgrade-error    select  abort
# Perform upgrade …
Run Code Online (Sandbox Code Playgroud)

debian debconf

8
推荐指数
2
解决办法
7421
查看次数

如何在Debian系统上安装Debian软件包时读取输入

我创建了一个小的Debian软件包,它必须从用户那里获取输入并打印出来.

为了在postinst脚本上从用户"read"命令获取输入将无法在Debian系统上运行我不知道究竟是什么原因,但它在Ubuntu系统中有效.

后来我发现我们必须使用模板文件为Debian系统使用"debconf".

模板文件:

Template: test/input
Type: text
Description: enter some text, which will be displayed
Run Code Online (Sandbox Code Playgroud)

postinst脚本:

 db_get test/input
    echo "you have entered ::$RET" >&2
Run Code Online (Sandbox Code Playgroud)

但是,当我安装我的测试包时,我收到此错误:

Can't exec "postinst": No such file or directory at /usr/share/perl/5.10/IPC/Open3.pm line 168. <br>open2: exec of postinst configure failed at /usr/share/perl5/Debconf/ConfModule.pm line 59

有谁知道我做错了什么?

linux ubuntu debian package debconf

7
推荐指数
1
解决办法
1588
查看次数

在.deb文件中包含许可协议

如何在.deb文件中包含许可协议交互?这个问题对Linux的支持点击直通许可证只要求如果有可能,但不知道如何.另外,我不确定deb软件包的许可证信息是否真的可以使用...

我知道可以将文本作为包描述的一部分包含在内,但我更倾向于将其与Windows MSI安装程序类似.

请注意,我不希望在应用程序第一次运行时弹出许可证.

我正在使用dpkg-deb在Ubuntu 8.10上生成.deb文件.

linux licensing dpkg deb debconf

6
推荐指数
1
解决办法
1824
查看次数

预置PhpMyAdmin - 跳过多选,跳过密码

我正在尝试为运行NGINX的Ubuntu服务器自动安装PhpMyAdmin,我在跳过重新配置 - webserver多选提示时遇到问题:

是否有针对每个PhpMyAdmin安装设置的可能选项的参考或多选设置类型的选项?

apt-get install phpmyadmin -y
debconf-get-selections | grep phpmyadmin
Run Code Online (Sandbox Code Playgroud)

这是我认为我试图找出如何跳过的具体选项:

phpmyadmin phpmyadmin/reconfigure-webserver multiselect ?
Run Code Online (Sandbox Code Playgroud)

另外,我如何跳过应用密码以便自动生成?

非常感谢任何帮助,谢谢!

ubuntu debconf

5
推荐指数
1
解决办法
3275
查看次数

.deb安装期间的Debconf对话框

我已经能够为Ubuntu成功创建一个.deb安装文件,但是我需要用户输入才能完成后安装脚本的配置。这些问题是动态的,并且基于用户计算机上的界面。

在Ubuntu软件中心使用debconf进行安装的过程中,是否有办法向用户提示具有动态答案的问题(即计算机上的接口列表)?

ubuntu deb debconf

5
推荐指数
1
解决办法
373
查看次数

'DEBIAN_FRONTEND=noninteractive' 无法使用 apt-get 在 shell 脚本内工作

我正在使用 Dockerfile 来构建一个 docker 映像。我已将其放在ARG DEBIAN_FRONTEND=noninteractiveDockerfile 的开头以避免构建时出现 debconf 警告。

apt-get install在 Dockerfile 内部使用时不会出现警告。但是,当从包含 apt-get install 命令的 Dockerfile 执行 sh 脚本 (install_dependency.sh) 时,警告会再次出现。我还尝试DEBIAN_FRONTEND=noninteractive在 sh 脚本本身内部进行设置。

我可以通过echo 'debconf debconf/frontend select Noninteractive' | sudo debconf-set-selections在 apt-get install 命令之前添加 sh 脚本来解决这个问题,但我想避免这种情况,因为脚本中的任何失败都会使 debconf 选择为非交互式。

Dockerfile:

FROM ubuntu:18.04

# Avoid warnings by switching to noninteractive
ARG DEBIAN_FRONTEND=noninteractive

WORKDIR /tmp

# Configure APT --> HERE THE WARNINGS 'debconf: unable to initialize frontend: Dialog' ARE NOT DISPLAYED
RUN apt-get update \ …
Run Code Online (Sandbox Code Playgroud)

apt sh debconf docker dockerfile

3
推荐指数
1
解决办法
1万
查看次数

如何编写Bash脚本以在基于Debian的发行版上安装和配置Postfix

如何编写Bash脚本来安装和配置Postfix(适用于Debian或Ubuntu).

这是我安装Postfix的方法:

 sudo apt-get install postfix
Run Code Online (Sandbox Code Playgroud)

然后我重新配置它:

sudo dpkg-reconfigure postfix
Run Code Online (Sandbox Code Playgroud)

如何使用预定义的答案集创建一个自动回答重新配置问题的脚本?或者还有其他方法吗?

bash debian apt postfix-mta debconf

0
推荐指数
1
解决办法
2707
查看次数

标签 统计

debconf ×10

ubuntu ×5

debian ×4

linux ×4

apt ×3

bash ×2

deb ×2

apt-get ×1

docker ×1

dockerfile ×1

dpkg ×1

licensing ×1

linux-mint ×1

mysql ×1

package ×1

perl ×1

postfix-mta ×1

sh ×1

shell ×1