fix(install): prevent interactive prompts during non-interactive installs
Updated the install.sh script to set DEBIAN_FRONTEND and NEEDRESTART_MODE environment variables for non-interactive package installations on Ubuntu and Debian. This change ensures that prompts from needrestart and whiptail do not block the installation process, improving automation for system package installations.
This commit is contained in:
@@ -458,6 +458,11 @@ install_system_packages() {
|
||||
if [ -n "$pkg_install" ]; then
|
||||
local install_cmd="$pkg_install ${pkgs[*]}"
|
||||
|
||||
# Prevent needrestart/whiptail dialogs from blocking non-interactive installs
|
||||
case "$DISTRO" in
|
||||
ubuntu|debian) export DEBIAN_FRONTEND=noninteractive NEEDRESTART_MODE=a ;;
|
||||
esac
|
||||
|
||||
# Already root — just install
|
||||
if [ "$(id -u)" -eq 0 ]; then
|
||||
log_info "Installing ${pkgs[*]}..."
|
||||
@@ -469,7 +474,7 @@ install_system_packages() {
|
||||
# Passwordless sudo — just install
|
||||
elif command -v sudo &> /dev/null && sudo -n true 2>/dev/null; then
|
||||
log_info "Installing ${pkgs[*]}..."
|
||||
if sudo $install_cmd; then
|
||||
if sudo DEBIAN_FRONTEND=noninteractive NEEDRESTART_MODE=a $install_cmd; then
|
||||
[ "$need_ripgrep" = true ] && HAS_RIPGREP=true && log_success "ripgrep installed"
|
||||
[ "$need_ffmpeg" = true ] && HAS_FFMPEG=true && log_success "ffmpeg installed"
|
||||
return 0
|
||||
@@ -481,7 +486,7 @@ install_system_packages() {
|
||||
read -p "Install ${description}? (requires sudo) [y/N] " -n 1 -r
|
||||
echo
|
||||
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
||||
if sudo $install_cmd; then
|
||||
if sudo DEBIAN_FRONTEND=noninteractive NEEDRESTART_MODE=a $install_cmd; then
|
||||
[ "$need_ripgrep" = true ] && HAS_RIPGREP=true && log_success "ripgrep installed"
|
||||
[ "$need_ffmpeg" = true ] && HAS_FFMPEG=true && log_success "ffmpeg installed"
|
||||
return 0
|
||||
@@ -623,13 +628,13 @@ install_deps() {
|
||||
log_info "Some build tools may be needed for Python packages..."
|
||||
if command -v sudo &> /dev/null; then
|
||||
if sudo -n true 2>/dev/null; then
|
||||
sudo apt-get update -qq && sudo apt-get install -y -qq build-essential python3-dev libffi-dev >/dev/null 2>&1 || true
|
||||
sudo DEBIAN_FRONTEND=noninteractive NEEDRESTART_MODE=a apt-get update -qq && sudo DEBIAN_FRONTEND=noninteractive NEEDRESTART_MODE=a apt-get install -y -qq build-essential python3-dev libffi-dev >/dev/null 2>&1 || true
|
||||
log_success "Build tools installed"
|
||||
else
|
||||
read -p "Install build tools (build-essential, python3-dev)? (requires sudo) [Y/n] " -n 1 -r < /dev/tty
|
||||
echo
|
||||
if [[ $REPLY =~ ^[Yy]$ ]] || [[ -z $REPLY ]]; then
|
||||
sudo apt-get update -qq && sudo apt-get install -y -qq build-essential python3-dev libffi-dev >/dev/null 2>&1 || true
|
||||
sudo DEBIAN_FRONTEND=noninteractive NEEDRESTART_MODE=a apt-get update -qq && sudo DEBIAN_FRONTEND=noninteractive NEEDRESTART_MODE=a apt-get install -y -qq build-essential python3-dev libffi-dev >/dev/null 2>&1 || true
|
||||
log_success "Build tools installed"
|
||||
fi
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user