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:
teknium1 2026-03-01 16:18:35 -08:00
parent 92da8e7e62
commit 72963e9ccb

View file

@ -458,6 +458,11 @@ install_system_packages() {
if [ -n "$pkg_install" ]; then if [ -n "$pkg_install" ]; then
local install_cmd="$pkg_install ${pkgs[*]}" 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 # Already root — just install
if [ "$(id -u)" -eq 0 ]; then if [ "$(id -u)" -eq 0 ]; then
log_info "Installing ${pkgs[*]}..." log_info "Installing ${pkgs[*]}..."
@ -469,7 +474,7 @@ install_system_packages() {
# Passwordless sudo — just install # Passwordless sudo — just install
elif command -v sudo &> /dev/null && sudo -n true 2>/dev/null; then elif command -v sudo &> /dev/null && sudo -n true 2>/dev/null; then
log_info "Installing ${pkgs[*]}..." 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_ripgrep" = true ] && HAS_RIPGREP=true && log_success "ripgrep installed"
[ "$need_ffmpeg" = true ] && HAS_FFMPEG=true && log_success "ffmpeg installed" [ "$need_ffmpeg" = true ] && HAS_FFMPEG=true && log_success "ffmpeg installed"
return 0 return 0
@ -481,7 +486,7 @@ install_system_packages() {
read -p "Install ${description}? (requires sudo) [y/N] " -n 1 -r read -p "Install ${description}? (requires sudo) [y/N] " -n 1 -r
echo echo
if [[ $REPLY =~ ^[Yy]$ ]]; then 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_ripgrep" = true ] && HAS_RIPGREP=true && log_success "ripgrep installed"
[ "$need_ffmpeg" = true ] && HAS_FFMPEG=true && log_success "ffmpeg installed" [ "$need_ffmpeg" = true ] && HAS_FFMPEG=true && log_success "ffmpeg installed"
return 0 return 0
@ -623,13 +628,13 @@ install_deps() {
log_info "Some build tools may be needed for Python packages..." log_info "Some build tools may be needed for Python packages..."
if command -v sudo &> /dev/null; then if command -v sudo &> /dev/null; then
if sudo -n true 2>/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" log_success "Build tools installed"
else else
read -p "Install build tools (build-essential, python3-dev)? (requires sudo) [Y/n] " -n 1 -r < /dev/tty read -p "Install build tools (build-essential, python3-dev)? (requires sudo) [Y/n] " -n 1 -r < /dev/tty
echo echo
if [[ $REPLY =~ ^[Yy]$ ]] || [[ -z $REPLY ]]; then 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" log_success "Build tools installed"
fi fi
fi fi