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.