[FIXED] Solucionar error 'command_installed: orden no encontrada' en update.sh

- Definir todas las funciones necesarias dentro de update_python_and_pip
- Pasar command_installed explícitamente al subproceso sudo
- Eliminar dependencia de bibliotecas externas en el subproceso
- Mejorar la autonomía del script para actualizaciones con privilegios elevados

🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Mauro Rosero P. 2025-03-12 09:29:33 -05:00
parent 5cab3913d8
commit c37ebb9854
Signed by: mrosero
GPG key ID: 83BD2A5F674B7E26

View file

@ -71,8 +71,71 @@ update_python_and_pip() {
local MESSAGES=$3 local MESSAGES=$3
local UPDATE_LANG=$4 local UPDATE_LANG=$4
# Cargar biblioteca bootstrap # No necesitamos cargar bootstrap.lib, ya que tenemos las funciones definidas internamente
source $BIN_PATH/$LIBRARY/bootstrap.lib
# Definiciones internas para no depender de fuentes externas
function python3_update() {
echo "Actualizando Python..."
if [ "$(uname)" == "Darwin" ]; then
# En macOS, actualizamos Python a través de Homebrew
brew upgrade python
elif [ -f /etc/debian_version ] || [ -f /etc/os-release ]; then
# En sistemas Debian y derivados
apt update
apt install --only-upgrade -y python3
elif [ -f /etc/redhat-release ]; then
# En sistemas Red Hat
dnf upgrade -y python3
elif [ -f /etc/arch-release ]; then
# En Arch Linux
pacman -Syu --noconfirm python
elif [ -f /etc/rc.conf ]; then
# En BSD
pkg upgrade -y python3
else
echo "Sistema operativo no soportado"
return 1
fi
echo "Python actualizado correctamente."
return 0
}
function pip_update() {
echo "Actualizando pip..."
# Actualizar pip usando el método adecuado según el sistema operativo
if [ "$(uname)" == "Darwin" ]; then
# En macOS, actualizamos pip a través de Homebrew
brew upgrade python-pip
elif [ -f /etc/debian_version ] || [ -f /etc/os-release ]; then
# En sistemas Debian y derivados
apt update
apt install --only-upgrade -y python3-pip
# También actualizar usando el propio pip
python3 -m pip install --upgrade pip
elif [ -f /etc/redhat-release ]; then
# En sistemas Red Hat
dnf upgrade -y python3-pip
# También actualizar usando el propio pip
python3 -m pip install --upgrade pip
elif [ -f /etc/arch-release ]; then
# En Arch Linux
pacman -Syu --noconfirm python-pip
elif [ -f /etc/rc.conf ]; then
# En BSD
pkg upgrade -y python3-pip
# También actualizar usando el propio pip
python3 -m pip install --upgrade pip
else
echo "Sistema operativo no soportado"
return 1
fi
echo "Pip actualizado correctamente."
return 0
}
echo -e "\n${head_info}: Actualizando Python y pip..." echo -e "\n${head_info}: Actualizando Python y pip..."
@ -107,7 +170,10 @@ PIP_INSTALLED=$?
if [ $PYTHON_INSTALLED -eq 0 ] || [ $PIP_INSTALLED -eq 0 ]; then if [ $PYTHON_INSTALLED -eq 0 ] || [ $PIP_INSTALLED -eq 0 ]; then
# Ejecutar la actualización de Python y pip con sudo # 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..." 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"
# Exportar todas las funciones necesarias para que estén disponibles en el subproceso sudo
# Esto incluye command_installed y otras funciones de base.lib que se necesitan
sudo bash -c "$(declare -f command_installed; declare -f update_python_and_pip); update_python_and_pip $BIN_HOME $BIN_LIBS $BIN_MESG $BIN_LANG"
if [ $? -ne 0 ]; then if [ $? -ne 0 ]; then
echo -e "\n${head_error}: No se pudo actualizar Python y pip. Verifique sus privilegios." echo -e "\n${head_error}: No se pudo actualizar Python y pip. Verifique sus privilegios."
fi fi