--- /dev/null
+#!/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 <required.ld
+ fi
+
+ # Leere required.ld
+ rm required.ld || true 2>/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 <dependencies.ld
+
+ # Ist required.ld leer?
+ if [ ! -f required.ld ]
+ then
+ # ja: Ende
+ echo "finished."
+ exit
+ fi
+ # nein: springe nach oben
+done
+
+