[FIXED] Corregir escalamiento de privilegios para actualización de paquetes
- Adoptar el enfoque de bootstrap.sh para la elevación de privilegios - Encapsular la actualización de Python y pip en una función dedicada - Usar sudo con bash -c para pasar funciones y variables correctamente - Mejorar mensajes y flujo de ejecución en el script update.sh 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
2a1ef713cc
commit
5cab3913d8
2 changed files with 51 additions and 54 deletions
|
@ -55,7 +55,8 @@ function is_root() {
|
|||
}
|
||||
|
||||
# Escalar privilegios a superusuario si es necesario
|
||||
function escalate_privileges() {
|
||||
# Esta función no ejecuta el script con sudo, solo verifica si tenemos privilegios
|
||||
function check_root_privileges() {
|
||||
if ! is_root; then
|
||||
echo -e "\n${head_info}: Se requieren privilegios de administrador para esta operación."
|
||||
|
||||
|
@ -66,22 +67,10 @@ function escalate_privileges() {
|
|||
return 1
|
||||
fi
|
||||
|
||||
# Intentar escalar privilegios con sudo
|
||||
echo -e "${head_info}: Ingrese su contraseña si se solicita."
|
||||
|
||||
# Verificar que sudo funciona
|
||||
sudo -n true 2>/dev/null
|
||||
if [ $? -ne 0 ]; then
|
||||
# Sudo requiere contraseña, informar al usuario
|
||||
echo -e "${head_info}: Elevando privilegios con sudo..."
|
||||
fi
|
||||
|
||||
# Ejecutar el script actual con sudo
|
||||
sudo "$0" "$@"
|
||||
EXIT_CODE=$?
|
||||
|
||||
# Salir con el código devuelto por el comando sudo
|
||||
exit $EXIT_CODE
|
||||
# Informar que se necesita ejecutar con sudo
|
||||
echo -e "${head_error}: Este script debe ejecutarse con sudo."
|
||||
echo -e "${head_info}: Por favor, ejecute: sudo $0"
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Ya es root, no necesita hacer nada
|
||||
|
|
|
@ -61,35 +61,20 @@ fi
|
|||
# Load bootstrap library for update functions
|
||||
source $BIN_HOME/$BIN_LIBS/bootstrap.lib
|
||||
|
||||
# Verificar si se necesita ser superusuario para actualizar Python y pip
|
||||
UPDATE_PACKAGES=false
|
||||
# Update sistema operativo y repositorios primero (no requiere privilegios de root)
|
||||
echo -e "\n${head_info}: Actualizando repositorios locales primero..."
|
||||
|
||||
# Verificar si Python está instalado y necesitamos actualizarlo
|
||||
command_installed python3
|
||||
if [ $? -eq 0 ]; then
|
||||
UPDATE_PACKAGES=true
|
||||
fi
|
||||
# Función para actualizar Python y pip (requiere privilegios de superusuario)
|
||||
update_python_and_pip() {
|
||||
local BIN_PATH=$1
|
||||
local LIBRARY=$2
|
||||
local MESSAGES=$3
|
||||
local UPDATE_LANG=$4
|
||||
|
||||
# Verificar si pip está instalado y necesitamos actualizarlo
|
||||
command_installed pip3
|
||||
if [ $? -eq 0 ]; then
|
||||
UPDATE_PACKAGES=true
|
||||
fi
|
||||
# Cargar biblioteca bootstrap
|
||||
source $BIN_PATH/$LIBRARY/bootstrap.lib
|
||||
|
||||
# Si necesitamos actualizar paquetes, verificar privilegios
|
||||
if [ "$UPDATE_PACKAGES" = true ]; then
|
||||
# Escalar privilegios para actualizar Python y pip
|
||||
escalate_privileges "$@"
|
||||
|
||||
# Si llegamos aquí, es porque ya somos superusuario
|
||||
if ! is_root; then
|
||||
echo -e "\n${head_error}: No se pudieron obtener privilegios de administrador."
|
||||
echo -e "Las actualizaciones de Python y pip no se realizarán."
|
||||
fi
|
||||
fi
|
||||
|
||||
# Update Python and pip separately
|
||||
echo -e "\n${head_info}: Verificando actualizaciones de Python y pip..."
|
||||
echo -e "\n${head_info}: Actualizando Python y pip..."
|
||||
|
||||
# Update Python
|
||||
command_installed python3
|
||||
|
@ -108,5 +93,28 @@ else
|
|||
echo -e "Esta dependencia es necesaria para varias herramientas del sistema."
|
||||
fi
|
||||
|
||||
echo -e "\n${head_info}: Actualización de Python y pip completada."
|
||||
}
|
||||
|
||||
# Verificar si Python o pip están instalados y si se necesitan actualizar
|
||||
command_installed python3
|
||||
PYTHON_INSTALLED=$?
|
||||
|
||||
command_installed pip3
|
||||
PIP_INSTALLED=$?
|
||||
|
||||
# Si cualquiera de ellos está instalado, necesitamos actualizar con privilegios de superusuario
|
||||
if [ $PYTHON_INSTALLED -eq 0 ] || [ $PIP_INSTALLED -eq 0 ]; then
|
||||
# Ejecutar la actualización de Python y pip con sudo
|
||||
echo -e "\n${head_info}: Se necesitan privilegios de administrador para actualizar Python y pip..."
|
||||
sudo bash -c "$(declare -f update_python_and_pip); update_python_and_pip $BIN_HOME $BIN_LIBS $BIN_MESG $BIN_LANG"
|
||||
if [ $? -ne 0 ]; then
|
||||
echo -e "\n${head_error}: No se pudo actualizar Python y pip. Verifique sus privilegios."
|
||||
fi
|
||||
else
|
||||
echo -e "\n${head_info}: No se detectaron Python ni pip instalados. No hay actualizaciones que realizar."
|
||||
echo -e "Para instalar estas dependencias, ejecute bin/bootstrap.sh primero."
|
||||
fi
|
||||
|
||||
echo -e "\n${head_info}: Proceso de actualización completado."
|
||||
|
||||
|
|
Loading…
Reference in a new issue