#!/bin/bash set -ex # Konzept: # - Schiebe Paket in required.ld # - Schleife über Inhalt von required.ld # x Hole Paket # x Packe Abhängigkeiten des Pakets nach dependencies.ld # - Leere required.ld # - Schleife über dependencies.ld # x Ist Paket im Verzeichnis # ja: tunix # nein: # - Ist Paket in required.ld? # ja: tunix # nein: Füge Paket zu required.ld # - Ist required.ld leer? # ja: Ende # nein: springe nach oben usage="load-dependency [PAKET | DEBFILE]" function get_deb_name { pkg=$1 deb_name=$(ls ${pkg}_*.deb || true) 2>/dev/null } # Lösche Hilfsdateien rm dependencies.ld required.ld || true 2>/dev/null # Prüfe Parameter if [ -n "$1" ] then if [ "${1##*.}" == "deb" ] then # prüfe deb dpkg-deb -I $1 |grep "Depends:" |sed "s/Depends://" |tr ',' '\n' >> dependencies.ld else # Schiebe Paket in required.ld echo "$1" >required.ld fi else echo "Prüfung aller deb files noch nicht implementiert." exit 1 fi while true do if [ -f required.ld ] then # Schleife über Inhalt von required.ld rm dependencies.ld || true 2>/dev/null while read reqline do # Hole Paket pkg_version=$(echo $reqline |sed "s/ (//" |sed "s/= /=/" |sed "s/)//" |sed "s/>.*//") apt-get download $pkg_version # Packe Abhängigkeiten des Pakets nach dependencies.ld pkg=${pkg_version##=*} get_deb_name $pkg dpkg-deb -I $deb_name |grep "Depends:" |sed "s/Depends://" |tr ',' '\n' >> dependencies.ld done /dev/null # Schleife über dependencies.ld while read depline do # Ist Paket im Verzeichnis pkg=$depline get_deb_name $pkg if [ -z "$deb_name" ] then # nein: # Ist Paket in required.ld? if ! grep "${pkg}_" required.ld 1>/dev/null then # nein: Füge Paket zu required.ld echo $depline >>required.ld fi fi done