]> git.ipfire.org Git - people/pmueller/ipfire-2.x.git/commitdiff
Hinzugefügt:
authorms <ms@ea5c0bd1-69bd-2848-81d8-4f18e57aeed8>
Sat, 20 May 2006 09:34:19 +0000 (09:34 +0000)
committerms <ms@ea5c0bd1-69bd-2848-81d8-4f18e57aeed8>
Sat, 20 May 2006 09:34:19 +0000 (09:34 +0000)
  * Erste Version des Pakfire von Peter

git-svn-id: http://svn.ipfire.org/svn/ipfire/trunk@127 ea5c0bd1-69bd-2848-81d8-4f18e57aeed8

13 files changed:
doc/ChangeLog
src/pakfire/lib/check_pak.sh [new file with mode: 0644]
src/pakfire/lib/get_conf.sh [new file with mode: 0644]
src/pakfire/lib/get_list.sh [new file with mode: 0644]
src/pakfire/lib/get_mirror.sh [new file with mode: 0644]
src/pakfire/lib/get_pak.sh [new file with mode: 0644]
src/pakfire/lib/get_pakname.sh [new file with mode: 0644]
src/pakfire/lib/test.sh [new file with mode: 0644]
src/pakfire/lib/test_host.sh [new file with mode: 0644]
src/pakfire/lib/unpak_pak.sh [new file with mode: 0644]
src/pakfire/lib/url_zerl.sh [new file with mode: 0644]
src/pakfire/pakfire [new file with mode: 0644]
src/pakfire/pakfire.conf [new file with mode: 0644]

index a20da272f4440ea176eaa94d4556e2cccd7a1009..aea002c8a18f82f03446f916bf08f81fea56a3fa 100644 (file)
@@ -1,3 +1,9 @@
+------------------------------------------------------------------------
+r126 | ms | 2006-05-19 16:29:15 +0200 (Fr, 19 Mai 2006) | 3 lines
+
+Geändert:
+  * Überflüssige Programme aus der ISO genommen... Postfix, Stund usw...
+
 ------------------------------------------------------------------------
 r125 | ms | 2006-05-18 19:33:39 +0200 (Do, 18 Mai 2006) | 5 lines
 
diff --git a/src/pakfire/lib/check_pak.sh b/src/pakfire/lib/check_pak.sh
new file mode 100644 (file)
index 0000000..4a8b11d
--- /dev/null
@@ -0,0 +1,90 @@
+#!/bin/bash
+############################################################################################
+# Version 0.1a, Copyright (C) 2006  Peter Schaelchli Für IPFire besteht KEINERLEI GARANTIE;#
+# IPFire ist freie Software, die Sie unter bestimmten Bedingungen weitergeben dürfen;      #
+############################################################################################
+
+# Verzeichnis von Pakman
+VERZ=$(get_conf.sh HOME)
+
+# Update Verzeichnis
+UP_DIR=$(get_conf.sh UP_DIR)
+
+# Verzeichnis mit nicht Installierten Paketen
+NIP_DIR=$(get_conf.sh NIP_DIR)
+
+# Verzeichnis mit Installierten Paketen
+IP_DIR=$(get_conf.sh ^IP_DIR)
+
+# Patchliste
+PATCH_LIST=$(get_conf.sh DEST_DIR)$(get_conf.sh LIST_NAME)
+
+# Zerlegte Listen
+ZERL_PATCH=$(get_conf.sh DEST_DIR)zerl_
+
+# Listen Verzeichnis
+LIST_DIR=$(get_conf.sh DEST_DIR)
+
+# Zerlegen der Liste erst jede Zeile fuer sich bei maximal 99998 Einträgen
+for (( i=1 ; i<99999 ; i++))
+do
+
+ patch=$(head -${i} ${PATCH_LIST} | tail -1)
+ echo $patch >${ZERL_PATCH}$i
+
+ if [ "${patch}" = "###EOF###" ]
+  then
+   rm ${ZERL_PATCH}$i
+   break
+ fi
+
+ if [ $i -ge 99999  ]
+  then
+   echo "Defektes Patchfile!!!"
+   /bin/rm -f ${ZERL_PATCH}*
+   exit 1
+ fi
+
+done
+
+# Errechnen wieviele Patches eingetragen sind
+(( i-- ))
+
+# Jedes Paket nach Name zerlegen
+for list in $(find $LIST_DIR -type f -name "zerl_*")
+do
+
+ # Zeile lesen Zeile
+ zeile=$(cat $list)
+ # Auf Namen reduzieren
+ name=${zeile%%-*}
+ # Auf Version reduzieren
+ vers=${zeile#*-}
+ vers=${vers%% *}
+ # Testen ob aktuelle Verson schon installiert ist
+ if [ -e ${IP_DIR}${name}-${vers} ]
+  then continue
+  else 
+   # Testen ob eine ältere Version installiert ist
+   if [ -e ${IP_DIR}${name}-* ]
+    then
+     # Erst alte Update Vorschläge löschen
+     /bin/rm -f ${UO_DIR}${name}-*
+     /bin/touch ${UP_DIR}${name}-${vers}
+    else
+     # Erst alte Paket Vorschläge löschen
+     /bin/rm -f ${NIP_DIR}${name}-*
+     /bin/touch ${NIP_DIR}${name}-${vers}
+   fi
+
+ fi
+
+done
+
+# Löschen der Hilfslisten
+/bin/rm -f ${ZERL_PATCH}*
+
+################################### EOF ####################################################
diff --git a/src/pakfire/lib/get_conf.sh b/src/pakfire/lib/get_conf.sh
new file mode 100644 (file)
index 0000000..46b6dcc
--- /dev/null
@@ -0,0 +1,21 @@
+#!/bin/bash
+############################################################################################
+# Version 0.1a, Copyright (C) 2006  Peter Schaelchli Für IPFire besteht KEINERLEI GARANTIE;#
+# IPFire ist freie Software, die Sie unter bestimmten Bedingungen weitergeben dürfen;      #
+############################################################################################
+
+# Conf File festlegen
+CONF_File=/opt/pakfire/pakfire.conf
+
+if [ -r $CONF_File ]
+then 
+ STRI=$(grep $1 $CONF_File)
+ STRI=${STRI#*=}
+fi
+
+if [ -z $2 ]
+ then echo "$STRI"
+ else cat $STRI
+fi
+
+################################### EOF ####################################################
diff --git a/src/pakfire/lib/get_list.sh b/src/pakfire/lib/get_list.sh
new file mode 100644 (file)
index 0000000..9fd789c
--- /dev/null
@@ -0,0 +1,60 @@
+#!/bin/bash
+############################################################################################
+# Version 0.1a, Copyright (C) 2006  Peter Schaelchli Für IPFire besteht KEINERLEI GARANTIE;#
+# IPFire ist freie Software, die Sie unter bestimmten Bedingungen weitergeben dürfen;      #
+############################################################################################
+
+# Verzeichnis von Pakman
+VERZ=$(/bin/get_conf.sh HOME)
+
+# Version des IPFire ermitteln
+VERS=$(get_conf.sh VERS print)
+
+# Patch URLs ermitteln
+PURL=$(get_conf.sh PURL print)
+
+# Logfile festlegen
+LOG_file=$(get_conf.sh LOG)
+
+# Listenname
+LIST_NAME=$(get_conf.sh LIST_NAME)
+
+# Ziel Verzeichnis
+DEST_DIR=$(get_conf.sh DEST_DIR)
+
+# Host Tester
+HOST_TEST=$(get_conf.sh HOST_TEST)
+
+# Alle URLs durcharbeiten bis erste per ping erreichbar erreichbar
+url=$($HOST_TEST "$PURL")
+if [ -n $url ]
+ then URL=${url}
+fi
+
+# Falls URL nicht gesetzt wurde abbruch des Scripts
+if [ -z $URL ]
+ then echo "Kann keinen Patchserver finden">>$LOG_file
+  exit 1
+fi
+
+# Verzeichnis in Zielverzeichnis wechseln für Download
+cd $DEST_DIR
+
+# Pruefen ob bereits ein File vorhanden ist falls ja dann wird sie nun gelöscht
+if [ -f ${DEST_DIR}${LIST_NAME} ]
+ then rm ${DEST_DIR}${LIST_NAME}
+fi
+
+# Download der Liste
+if /usr/bin/wget -q $URL/${VERS}/${LIST_NAME} >/dev/null 2>&1
+ then
+  cd -
+  echo "Updateliste herunter geladen von $URL">>$LOG_file
+  exit 0
+ else
+  cd -
+  echo "Updateliste konnnte nicht herunter geladen werden von $URL">>$LOG_file
+  exit 1
+fi
+
+################################### EOF ####################################################
diff --git a/src/pakfire/lib/get_mirror.sh b/src/pakfire/lib/get_mirror.sh
new file mode 100644 (file)
index 0000000..29b6623
--- /dev/null
@@ -0,0 +1,42 @@
+#!/bin/bash
+############################################################################################
+# Version 0.1a, Copyright (C) 2006  Peter Schaelchli Für IPFire besteht KEINERLEI GARANTIE;#
+# IPFire ist freie Software, die Sie unter bestimmten Bedingungen weitergeben dürfen;      #
+############################################################################################
+
+# Haupturl
+http=$(get_conf.sh H_MIRROR)
+
+# Ziel Verzeichnis
+dest=$(get_conf.sh HOME)
+
+# URL Zerleger
+URL_ZERL=$(get_conf.sh URL_ZERL)
+
+# Host Tester
+HOST_TEST=$(get_conf.sh HOST_TEST)
+
+# Testen ob Server erreichbar
+if ! $HOST_TEST $($URL_ZERL $http get_host) >/dev/null 2>&1
+ then exit 1
+fi
+
+# Verzeichnis wechseln
+cd $dest
+
+# Überprüfen ob File schon vorhanden ist
+if [ -e ${dest}$($URL_ZERL $http get_file) ]
+ then rm ${dest}$($URL_ZERL $http get_file)
+fi
+
+# File herunter laden
+if /usr/bin/wget -q $http >/dev/null 2>&1
+ then 
+  cd -
+  exit 0
+ else
+  cd -
+  exit 1
+fi
+
+################################### EOF ####################################################
diff --git a/src/pakfire/lib/get_pak.sh b/src/pakfire/lib/get_pak.sh
new file mode 100644 (file)
index 0000000..1948368
--- /dev/null
@@ -0,0 +1,48 @@
+#!/bin/bash
+############################################################################################
+# Version 0.1a, Copyright (C) 2006  Peter Schaelchli Für IPFire besteht KEINERLEI GARANTIE;#
+# IPFire ist freie Software, die Sie unter bestimmten Bedingungen weitergeben dürfen;      #
+############################################################################################
+
+# Download Zielverzeichnis
+DOWN_DEST=$(get_conf.sh DOWN_DEST)
+
+# Mirror Liste
+PURL=$(get_conf.sh PURL print)
+
+# Logfile festlegen
+LOG_file=$(get_conf.sh LOG)
+
+# Version des IPFire ermitteln
+VERS=$(get_conf.sh VERS print)
+
+# Host Tester
+HOST_TEST=$(get_conf.sh HOST_TEST)
+
+# Alle URLs durcharbeiten bis erste per ping erreichbar erreichbar
+URL=$($HOST_TEST "$PURL")
+
+# Falls URL nicht gesetzt wurde abbruch des Scripts
+if [ -z $URL ]
+ then echo "Kann keinen Patchserver finden">>$LOG_file
+  exit 1
+fi
+
+# Verzeichnis in Zielverzeichnis wechseln für Download
+cd $DOWN_DEST
+
+# Download Source festlegen
+DOWN_SRC=${URL}/${VERS}/${1}.tar.gz
+
+# Paket Downloaden
+if /usr/bin/wget -q ${DOWN_SRC} >/dev/null 2>&1
+ then
+  cd -
+  exit 0
+ else
+  cd -
+  echo "Probleme mit dem Download ${DOWN_SRC}"
+  exit 1
+fi
+
+################################### EOF ####################################################
diff --git a/src/pakfire/lib/get_pakname.sh b/src/pakfire/lib/get_pakname.sh
new file mode 100644 (file)
index 0000000..978bfe5
--- /dev/null
@@ -0,0 +1,61 @@
+#!/bin/bash
+############################################################################################
+# Version 0.1a, Copyright (C) 2006  Peter Schaelchli Für IPFire besteht KEINERLEI GARANTIE;#
+# IPFire ist freie Software, die Sie unter bestimmten Bedingungen weitergeben dürfen;      #
+############################################################################################
+
+# Update Verzeichnis
+UP_DIR=$(get_conf.sh UP_DIR)
+
+# Installierten Verzeichnis
+IP_DIR=$(get_conf.sh IP_DIR)
+
+# Nicht Installierten Verzeichnis
+NIP_DIR=$(get_conf.sh NIP_DIR)
+
+# $1 = update|install|uninstall|reinstall
+# $2 = paketname
+
+case "$1" in
+
+       update)
+               if /bin/ls ${UP_DIR}${2}* >/dev/null 2>&1
+               then name=$(/bin/ls ${UP_DIR}${2}*)
+                    name=$(/bin/basename $name)
+                    echo $name
+                    exit 0
+               else exit 1
+               fi
+               ;;
+       install)
+               if /bin/ls ${NIP_DIR}${2}* >/dev/null 2>&1
+                then name=$(/bin/ls ${NIP_DIR}${2}*)
+                     name=$(/bin/basename $name)
+                     echo $name
+                     exit 0
+                else exit 1
+                fi
+               ;;
+       uninstall)
+               if /bin/ls ${IP_DIR}${2}* >/dev/null 2>&1
+                then name=$(/bin/ls ${IP_DIR}${2}*)
+                     name=$(/bin/basename $name)
+                     echo $name
+                     exit 0
+                else exit 1
+                fi
+               ;;
+       reinstall)
+                if /bin/ls ${IP_DIR}${2}* >/dev/null 2>&1
+                then name=$(/bin/ls ${IP_DIR}${2}*)
+                     name=$(/bin/basename $name)
+                     echo $name
+                     exit 0
+                else exit 1
+                fi
+               ;;
+       *)      exit 2
+esac
+
+
+################################### EOF ####################################################
diff --git a/src/pakfire/lib/test.sh b/src/pakfire/lib/test.sh
new file mode 100644 (file)
index 0000000..3ce53f7
--- /dev/null
@@ -0,0 +1,8 @@
+#!/bin/bash
+
+echo $?
+echo $$
+echo $0
+echo $1
+echo $#
+echo $%
diff --git a/src/pakfire/lib/test_host.sh b/src/pakfire/lib/test_host.sh
new file mode 100644 (file)
index 0000000..7def31f
--- /dev/null
@@ -0,0 +1,54 @@
+#!/bin/bash
+############################################################################################
+# Version 0.1a, Copyright (C) 2006  Peter Schaelchli Für IPFire besteht KEINERLEI GARANTIE;#
+# IPFire ist freie Software, die Sie unter bestimmten Bedingungen weitergeben dürfen;      #
+############################################################################################
+
+# URL Zerleger
+URL_ZERL=$(get_conf.sh URL_ZERL)
+
+# Zählen wie viele Host übergeben wurden
+i=0
+for host in $1
+do
+ ((i++))
+done
+
+# Random Zahl auslesen
+rand=$RANDOM
+
+# Random Zahl herunterbrechen
+while [ $rand -gt $i ]
+do ((rand=rand/2))
+done
+
+# Versuche Randomserver zu erreichen
+i=0
+for host in $1
+do
+ ((i++))
+ if [ $i -eq $rand ]
+  then
+   if ping $($URL_ZERL $host get_host) -c 1 -s 0 >/dev/null 2>&1
+    then echo $host
+     exit 0
+   fi
+ fi
+ if [ $i -gt $rand ]
+  then
+   break
+ fi
+done
+
+for host in $1
+do
+ if ping $($URL_ZERL $host get_host) -c 1 -s 0 >/dev/null 2>&1
+  then
+   echo $host
+   exit 0
+ fi
+done
+
+exit 1
+
+################################### EOF ####################################################
diff --git a/src/pakfire/lib/unpak_pak.sh b/src/pakfire/lib/unpak_pak.sh
new file mode 100644 (file)
index 0000000..252684b
--- /dev/null
@@ -0,0 +1,80 @@
+#!/bin/bash
+############################################################################################
+# Version 0.1a, Copyright (C) 2006  Peter Schaelchli Für IPFire besteht KEINERLEI GARANTIE;#
+# IPFire ist freie Software, die Sie unter bestimmten Bedingungen weitergeben dürfen;      #
+############################################################################################
+
+# Source Verzeichnis
+DOWN_DEST=$(get_conf.sh DOWN_DEST)
+
+# Logfile festlegen
+LOG_file=$(get_conf.sh LOG)
+
+# Programmpaket
+PAK_PROG=$(get_conf.sh PAK_PROG)
+
+# Abhängigkeitsliste
+PAK_ABH=$(get_conf.sh PAK_ABH)
+
+# Installations Script
+PAK_INST=$(get_conf.sh PAK_INST)
+
+# Uninstallations Script
+PAK_UNINST=$(get_conf.sh PAK_UNINST)
+
+# Cache Verzeichnis
+CACHE_DIR=$(get_conf.sh CACHE_DIR)
+
+# Überprüfen ob Hauptpaket angegeben wurde
+if [ -z $1  ]
+ then 
+  echo "$(/bin/date) | $0 | kein Paketnamen angegeben">>$LOG_file
+  exit 1
+fi
+
+# Überprüfe ob Paket vorhanden
+if [ ! -e ${DOWN_DEST}${1}.tar.gz  ]
+ then
+  echo "$(/bin/date) | $0 | Paket nicht vorhanden">>$LOG_file
+  exit 1
+fi
+
+# Überprüfe ob das Paket richtig geschnürt wurde
+tester=$(/bin/tar -tzf ${DOWN_DEST}${1}.tar.gz)
+if [ ! 0 -lt $(echo $tester | grep $PAK_PROG | wc -l) ]
+ then
+  echo "$(/bin/date) | $0 | Programm im Paket nichtvorhanden">>$LOG_file
+  exit 1
+fi
+if [ ! 0 -lt $(echo $tester | grep $PAK_ABH | wc -l) ]
+ then
+  echo "$(/bin/date) | $0 | Abhängigkeit im Paket nichtvorhanden">>$LOG_file
+  exit 1
+fi
+if [ ! 0 -lt $(echo $tester | grep $PAK_INST | wc -l) ]
+ then
+  echo "$(/bin/date) | $0 | Installations-Script im Paket nichtvorhanden">>$LOG_file
+  exit 1
+fi
+if [ ! 0 -lt $(echo $tester | grep $PAK_UNINST | wc -l) ]
+ then
+  echo "$(/bin/date) | $0 | Uninstallatoins-Script im Paket nichtvorhanden">>$LOG_file
+  exit 1
+fi
+
+# Cache leeren
+rm -f ${CACHE_DIR}$PAK_PROG
+rm -f ${CACHE_DIR}$PAK_ABH
+rm -f ${CACHE_DIR}$PAK_INST
+rm -f ${CACHE_DIR}$PAK_UNINST
+
+# Entpaken des Hauptpaketes
+/bin/tar -xzf ${DOWN_DEST}${1}.tar.gz -C $CACHE_DIR
+
+# Files neu benennen
+/bin/mv ${CACHE_DIR}$PAK_PROG ${CACHE_DIR}${1}_$PAK_PROG
+/bin/mv ${CACHE_DIR}$PAK_ABH ${CACHE_DIR}${1}_$PAK_ABH
+/bin/mv ${CACHE_DIR}$PAK_INST ${CACHE_DIR}${1}_$PAK_INST
+/bin/mv ${CACHE_DIR}$PAK_UNINST ${CACHE_DIR}${1}_$PAK_UNINST
+
+################################### EOF ####################################################
diff --git a/src/pakfire/lib/url_zerl.sh b/src/pakfire/lib/url_zerl.sh
new file mode 100644 (file)
index 0000000..0da8419
--- /dev/null
@@ -0,0 +1,57 @@
+#!/bin/bash
+############################################################################################
+# Version 0.1a, Copyright (C) 2006  Peter Schaelchli Für IPFire besteht KEINERLEI GARANTIE;#
+# IPFire ist freie Software, die Sie unter bestimmten Bedingungen weitergeben dürfen;      #
+############################################################################################
+
+protokoll=${1%%:*}
+
+rest=${1#*'//'}
+
+if grep @ <<EOF >/dev/null
+$rest
+EOF
+then
+# User heraus suchen
+user=${rest%%:*}
+rest=${rest#*:}
+pass=${rest%%@*}
+rest=${rest#*@}
+fi
+
+host=${rest%%/*}
+rest=${rest#*/}
+
+if grep / <<EOF >/dev/null
+$rest
+EOF
+then
+dir=${rest%/*}
+rest=${rest##*/}
+fi
+
+file=$rest
+
+case "$2" in
+       get_proto)
+               echo $protokoll
+               ;;
+       get_user)
+               echo $user
+               ;;
+       get_pass)
+               echo $pass
+               ;;
+       get_host)
+               echo $host
+               ;;
+       get_dir)
+               echo $dir
+               ;;
+       get_file)
+               echo $file
+               ;;
+       *) exit 1
+esac
+
+################################### EOF ####################################################
diff --git a/src/pakfire/pakfire b/src/pakfire/pakfire
new file mode 100644 (file)
index 0000000..594ecf1
--- /dev/null
@@ -0,0 +1,18 @@
+#!/bin/bash
+############################################################################################
+# Version 0.1a, Copyright (C) 2006  by IPFire.org                                                #
+# IPFire ist freie Software, die Sie unter bestimmten Bedingungen weitergeben dürfen.      #
+############################################################################################
+
+case "$1" in
+
+       renewlist)      $(get_conf.sh HOME)/lib/get_mirror.sh
+                       $(get_conf.sh HOME)/lib/get_list.sh
+                       $(get_conf.sh HOME)/lib/check_pak.sh
+               ;;
+
+       *) echo -e "pakfire install [Paket]\npakfire update [Paket]\npakfiren remove [Paket]\npakfire renewlist"
+
+esac
+
+################################### EOF ####################################################
diff --git a/src/pakfire/pakfire.conf b/src/pakfire/pakfire.conf
new file mode 100644 (file)
index 0000000..e69de29