Skip to content

Corrección: Error en ubicación de binarios whisper.cpp #7

Description

@Charly-bite

Solución: Error en instalación de binarios whisper.cpp

Problema Detectado

✅ Compilación exitosa!
📦 Instalando whisper-amd...
cp: no se puede efectuar `stat' sobre 'bin/whisper': No existe el fichero o el directorio
❌ Error: whisper-amd no funciona correctamente

Diagnóstico

La compilación fue exitosa, pero los binarios están en ubicación diferente o con nombres diferentes en la versión actual de whisper.cpp.

Script de Diagnóstico y Corrección

#!/bin/bash
# fix_whisper_binaries.sh

echo "🔍 Diagnosticando ubicación de binarios whisper.cpp"
echo "================================================="

# Navegar al directorio de build
WORK_DIR="$HOME/whisper_amd_build"
cd "$WORK_DIR/whisper.cpp/build"

echo "📁 Contenido del directorio build:"
ls -la

echo -e "\n📁 Buscando binarios compilados..."
find . -name "*whisper*" -type f -executable

echo -e "\n📁 Contenido del directorio bin (si existe):"
if [ -d "bin" ]; then
    ls -la bin/
else
    echo "❌ Directorio bin/ no existe"
fi

echo -e "\n📁 Buscando ejecutables en todo el directorio build:"
find . -type f -executable -name "*main*" -o -name "*whisper*" | head -10

echo -e "\n🔧 Instalando binarios encontrados..."

# Buscar el ejecutable principal de whisper
MAIN_BINARY=""
WHISPER_BINARY=""

# Posibles ubicaciones del binario principal
for possible in "./main" "./whisper" "./bin/main" "./bin/whisper" "./src/main" "./examples/main"; do
    if [ -x "$possible" ]; then
        echo "✅ Encontrado ejecutable principal: $possible"
        MAIN_BINARY="$possible"
        break
    fi
done

# Buscar ejecutable whisper específico
for possible in "./whisper" "./bin/whisper" "./src/whisper" "./examples/whisper"; do
    if [ -x "$possible" ]; then
        echo "✅ Encontrado ejecutable whisper: $possible"
        WHISPER_BINARY="$possible"
        break
    fi
done

# Instalar binarios encontrados
if [ -n "$MAIN_BINARY" ]; then
    echo "📦 Instalando $MAIN_BINARY como whisper-amd..."
    sudo cp "$MAIN_BINARY" /usr/local/bin/whisper-amd
    sudo chmod +x /usr/local/bin/whisper-amd
    
    # Crear enlaces de compatibilidad
    sudo ln -sf /usr/local/bin/whisper-amd /usr/local/bin/whisper-main-amd
    
    echo "✅ whisper-amd instalado desde $MAIN_BINARY"
elif [ -n "$WHISPER_BINARY" ]; then
    echo "📦 Instalando $WHISPER_BINARY como whisper-amd..."
    sudo cp "$WHISPER_BINARY" /usr/local/bin/whisper-amd
    sudo chmod +x /usr/local/bin/whisper-amd
    
    echo "✅ whisper-amd instalado desde $WHISPER_BINARY"
else
    echo "❌ No se encontraron binarios ejecutables"
    echo "🔍 Listando todos los archivos ejecutables:"
    find . -type f -executable
    exit 1
fi

# Verificar instalación
echo -e "\n🧪 Verificando instalación final..."
if /usr/local/bin/whisper-amd --help >/dev/null 2>&1; then
    echo "✅ whisper-amd funciona correctamente"
    echo "📍 Ubicación: /usr/local/bin/whisper-amd"
    
    # Mostrar información del binario
    echo -e "\n📊 Información del binario instalado:"
    /usr/local/bin/whisper-amd --help 2>&1 | head -8
    
    echo -e "\n🎉 ¡Instalación corregida exitosamente!"
    echo "🔥 whisper-amd listo para usar"
    
else
    echo "❌ whisper-amd aún no funciona"
    echo "🔧 Intentando diagnóstico adicional..."
    
    # Verificar dependencias
    echo "📋 Verificando dependencias del binario:"
    ldd /usr/local/bin/whisper-amd 2>/dev/null || echo "No se puede verificar dependencias"
    
    # Verificar permisos
    echo "📋 Permisos del archivo:"
    ls -la /usr/local/bin/whisper-amd
fi

Script de Verificación Adicional

#!/bin/bash
# verify_whisper_compilation.sh

echo "🔍 VERIFICACIÓN COMPLETA DE COMPILACIÓN"
echo "======================================"

WORK_DIR="$HOME/whisper_amd_build"
BUILD_DIR="$WORK_DIR/whisper.cpp/build"

if [ ! -d "$BUILD_DIR" ]; then
    echo "❌ Directorio de build no encontrado: $BUILD_DIR"
    exit 1
fi

cd "$BUILD_DIR"

echo "📊 Análisis de la compilación:"
echo "Directorio actual: $(pwd)"
echo "Tamaño del directorio build: $(du -sh . 2>/dev/null || echo 'No calculable')"

echo -e "\n📁 Estructura del directorio build:"
tree -L 2 . 2>/dev/null || find . -type d -maxdepth 2 | sort

echo -e "\n🔍 Todos los archivos ejecutables encontrados:"
find . -type f -executable -exec ls -lh {} \; | sort -k5 -hr

echo -e "\n📋 Archivos que contienen 'whisper' en el nombre:"
find . -name "*whisper*" -type f

echo -e "\n📋 Archivos que contienen 'main' en el nombre:"
find . -name "*main*" -type f

echo -e "\n🧪 Probando ejecutables encontrados:"
for exe in $(find . -type f -executable); do
    echo "Probando: $exe"
    if timeout 5s "$exe" --help >/dev/null 2>&1; then
        echo "$exe responde a --help"
        size=$(stat -c%s "$exe" 2>/dev/null || echo "0")
        echo "  📊 Tamaño: $((size/1024/1024))MB"
    else
        echo "$exe no responde o error"
    fi
done

echo -e "\n🔧 Verificación de bibliotecas compiladas:"
find . -name "*.so" -o -name "*.a" | head -5

echo -e "\n📋 Log de make (últimas líneas si existe):"
if [ -f "CMakeFiles/whisper.dir/build.make" ]; then
    echo "✅ Archivos de make encontrados"
else
    echo "⚠️ Archivos de make no encontrados"
fi

Solución Rápida (Método Manual)

#!/bin/bash
# quick_install_whisper.sh

echo "🚀 INSTALACIÓN RÁPIDA - MÉTODO MANUAL"
echo "===================================="

cd ~/whisper_amd_build/whisper.cpp/build

# Buscar y probar el ejecutable principal
echo "🔍 Buscando ejecutable principal..."

CANDIDATES=("./main" "./whisper" "./examples/main" "./src/main")

for candidate in "${CANDIDATES[@]}"; do
    if [ -f "$candidate" ] && [ -x "$candidate" ]; then
        echo "✅ Probando: $candidate"
        
        # Probar si responde
        if timeout 5s "$candidate" --help >/dev/null 2>&1; then
            echo "🎯 ¡Ejecutable válido encontrado!"
            
            # Instalar
            sudo cp "$candidate" /usr/local/bin/whisper-amd
            sudo chmod +x /usr/local/bin/whisper-amd
            
            # Verificar instalación
            if /usr/local/bin/whisper-amd --help >/dev/null 2>&1; then
                echo "✅ whisper-amd instalado correctamente"
                echo "📍 Fuente: $candidate"
                echo "📍 Destino: /usr/local/bin/whisper-amd"
                
                # Mostrar ayuda básica
                echo -e "\n📊 Verificación final:"
                /usr/local/bin/whisper-amd --help 2>&1 | head -5
                
                echo -e "\n🎉 ¡INSTALACIÓN EXITOSA!"
                exit 0
            fi
        fi
    fi
done

echo "❌ No se encontró ejecutable válido"
echo "🔧 Ejecutar script de diagnóstico completo"

Pasos de Corrección

Paso 1: Ejecutar diagnóstico

chmod +x fix_whisper_binaries.sh
./fix_whisper_binaries.sh

Paso 2: Si el diagnóstico falla, usar método manual

chmod +x quick_install_whisper.sh
./quick_install_whisper.sh

Paso 3: Verificación completa (opcional)

chmod +x verify_whisper_compilation.sh
./verify_whisper_compilation.sh

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions