Jump to content

Script casero para resolver dependencias en Slackware


Recommended Posts

Script casero para resolver dependencias en Slackware

 

slackware_clasico_linux_tux_taza-ra71d92

 

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 skilltik@gmail.com
    #  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  

tumblr_n4atve47aB1s3t27mo1_1280.png

 

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.

 
Edited by skilltik
Link to post
Share on other sites

Usas Slackware?

 

Esta bien el sistema?

 

Se puede instalar pipelight?

 

Fue mi primer distro pero no habia firmware para mi hardware y lo deje, pero es el Linux mas estable.

 

 

si, uso Slackware hace un tiempo y me funciona perfectamente, te lo recomiendo. En cuanto a pipelight, nunca tuve necesiad de usarlo asi que no te podria decir jaja.

 

 

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...