InicioLinuxScript casero para resolver dependencias en Slackware

Script casero para resolver dependencias en Slackware

Linux•4/19/2014


Escribi un pequeño script para obtener un listado ordenado ( ordenado por prioriad de dependencia) de las dependencias necesarias (solo lista las que necesitas en tu sistema) para instalar un paquete en Slackware.
Es para agilizar un poco la resolucion de dependencias y no hacerlo de forma tan manual, es cierto que existen paquetes que resuelven las dependencias solos, pero yo prefiero no usarlos y ver que estoy instalando.
Hago uso de la pagina SlackBuilds para obtener informacion de los paquetes, ya que uso ese repositorio mediante Sbopkg para instalarlos de forma mas rapida.
El script por ahi es un poco precario, pero funciona bastante bien, resuelve las dependencias de forma recursiva , avisa si ya esta instalado, o si no es necesario instalar ninguna dependencia.


    

    #!/bin/bash
    #===============================================================================
    #
    #          FILE: dependencias.sh
    #
    #         USAGE: ./dependencias.sh paquete
    #
    #   DESCRIPTION: Resolver dependencias para un paquete determinado, el script
    #                proporcionas un listado ordenado de paquetes a instalar
    #                para sistemas basados en SLACKWARE.
    #
    #       OPTIONS:
    #  REQUIREMENTS: Curl, wget, gawk
    #         NOTES: -
    #        AUTHOR: Skilltik Henry Suarez [email protected]
    #  ORGANIZATION: ---
    #       CREATED: 17/04/14
    #      REVISION: 0.2
    #===============================================================================
     
    packages_dir=/var/log/packages/
     
    function resuelve(){
        for paquete in $@
            do
                lista=''
                lista=`ls $packages_dir | grep $paquete-'[[:digit:]]*>' `
                if [ "${#lista}" == 0 ]
                then
                    c=" "
                    echo "$paquete$c" >> resul
                    curl -s "slackbuilds.org/result/?search=$paquete&sv=14.1" > salida.html ;
                    variable=`grep -i $paquete/ salida.html | gawk '{print $6}' FS=""" | gawk '{print $4}' FS="/"`
                    nombreokpaquete=`grep -i $paquete/ salida.html | gawk '{print $6}' FS=""" | gawk '{print $5}' FS="/"`
                    wget -q http://slackbuilds.org/slackbuilds/14.1/$variable/$nombreokpaquete/$nombreokpaquete.info ;
                    vari=`grep REQUIRES $nombreokpaquete.info`
                    vari=`echo ${vari:10: -1}`
                    rm *.info
                    if [ "${#vari}" != 0 ]
                    then
                        resuelve $vari
                    fi
                fi
        done  
     }
     
    for arreglo in $@
    do
        curl -s "slackbuilds.org/result/?search=$arreglo&sv=14.1" > verifica.html ;
        verificapaq=`grep -i "No results" verifica.html `
        rm verifica.html
        if [ "${#verificapaq}" == 0  ]
        then
            resuelve $arreglo
            if [ -f resul ]
            then
                tac resul > resul2
                cat resul2 | tr -s " " "n" > resul
                awk '!array_temp[$0]++' resul > resul2
                cat resul2 | tr -s "n" " " > resul
                tr -d "n" < resul > resul2
                echo "|-----------------------------------------------------------|"
                echo "Las dependencias a resolver para $arreglo son :"
                cat resul2
                echo " "
                echo "|-----------------------------------------------------------|"
                echo " "
                rm resul resul2
                rm salida.html
            else
                echo "|-----------------------------------------------------------|"
                echo "No hay dependencias por resolver para $arreglo "
                lista=`ls $packages_dir | grep $paquete-'[[:digit:]]*>' `
                if [ "${#lista}" != 0 ]
                then
                    echo "$lista ya se encuentra instalado"
                fi
                echo "|-----------------------------------------------------------|"
            fi
        else
            echo "|-----------------------------------------------------------|"
            echo " $arreglo no existe en base de datos"
            echo "|-----------------------------------------------------------|"
        fi
    done



Por ejemplo, consideremos este listado de paquetes que tenemos en mente para instalar:
dvdrip openlp paqueteimaginario ffmpeg 


tan solo ejecutamos el scritp de esta forma:

./dependencias.sh dvdrip openlp paqueteimaginario ffmpeg



Y con esto estamos listo para instalarlos de la forma que prefieran, yo uso SBopkg, asi que para instalar Dvdrip, solo ejecuto :

 sbopkg -i "transcode perl-libintl perl-extutils-pkgconfig perl-extutils-depends perl-glib perl-cairo perl-pango perl-gtk2 perl-event dvdrip"

y se va a ir instalando en el orden necesario.

Dudas, errores o sugerencias me avisan.
Datos archivados del Taringa! original
91puntos
157visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
4visitas
0comentarios
Dar puntos:

Dejá tu comentario

0/2000

Autor del Post

s
skilltik🇦🇷
Usuario
Puntos0
Posts40
Ver perfil →
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.