Update:
authorms <ms@ea5c0bd1-69bd-2848-81d8-4f18e57aeed8>
Fri, 18 Aug 2006 10:51:18 +0000 (10:51 +0000)
committerms <ms@ea5c0bd1-69bd-2848-81d8-4f18e57aeed8>
Fri, 18 Aug 2006 10:51:18 +0000 (10:51 +0000)
  * Pakfire - umfassende Änderungen und Erweiterungen

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

src/pakfire/installed/BASE [new file with mode: 0644]
src/pakfire/lib/check_pak.sh
src/pakfire/lib/get_base.sh [new file with mode: 0644]
src/pakfire/lib/get_list.sh
src/pakfire/lib/get_mirror.sh
src/pakfire/lib/get_pak.sh
src/pakfire/lib/get_upgrade.sh [new file with mode: 0644]
src/pakfire/lib/test_host.sh
src/pakfire/pakfire
src/pakfire/pakfire.conf

diff --git a/src/pakfire/installed/BASE b/src/pakfire/installed/BASE
new file mode 100644 (file)
index 0000000..f438661
--- /dev/null
@@ -0,0 +1 @@
+VER=0
index 0cddbff..03f6cc8 100644 (file)
@@ -4,32 +4,20 @@
 # IPFire ist freie Software, die Sie unter bestimmten Bedingungen weitergeben dürfen.      #
 ############################################################################################
 
-# Verzeichnis von Pakman
-VERZ=$(get_conf.sh HOME)
+check_pak() {
 
-# 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)
+#if [ ! -f $PAKHOME/cache/$PACKAGES_LIST ]; then 
+#      exit 1
+#fi
 
 # Zerlegte Listen
-ZERL_PATCH=$(get_conf.sh DEST_DIR)/zerl_
+ZERL_PATCH=$TMP_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++))
+# Zerlegen der Liste erst jede Zeile fuer sich bei maximal 9998 Einträgen
+for (( i=1 ; i<9999 ; i++))
 do
 
- patch=$(head -${i} ${PATCH_LIST} | tail -1)
+ patch=$(head -${i} $PAKHOME/cache/${PACKAGE_LIST} | tail -1)
  echo $patch >${ZERL_PATCH}$i
 
  if [ "${patch}" = "###EOF###" ]
@@ -38,11 +26,11 @@ do
    break
  fi
 
- if [ $i -ge 9999 ]
+ if [ $i -ge 9999 ]
   then
    echo "Defektes Patchfile!!!"
    /bin/rm -f ${ZERL_PATCH}*
-   exit 1
+   return 1
  fi
 
 done
@@ -51,9 +39,8 @@ done
 (( i-- ))
 
 # Jedes Paket nach Name zerlegen
-for list in $(find $LIST_DIR -type f -name "zerl_*")
+for list in $(find $TMP_DIR -type f -name "zerl_*")
 do
-
  # Zeile lesen Zeile
  zeile=$(cat $list)
  
@@ -62,29 +49,19 @@ do
  
  # Auf Version reduzieren
  vers=${zeile#*-}
+ vers=${vers%%_*}
  vers=${vers%% *}
+ ipfver=${zeile#*_*}
  # 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
-
+ # Erst alte Paket Vorschläge löschen
+ /bin/rm -f $DB_DIR/${name}
+ /bin/echo "VER=${vers}" > $DB_DIR/${name}
+ /bin/echo "IPFVER=${ipfver}" >> $DB_DIR/${name}
 done
 
 # Löschen der Hilfslisten
 /bin/rm -f ${ZERL_PATCH}*
 
+}
+
 ################################### EOF ####################################################
diff --git a/src/pakfire/lib/get_base.sh b/src/pakfire/lib/get_base.sh
new file mode 100644 (file)
index 0000000..f51dac9
--- /dev/null
@@ -0,0 +1,26 @@
+#!/bin/bash
+############################################################################################
+# Version 0.1a, Copyright (C) 2006  by IPFire.org                                                #
+# IPFire ist freie Software, die Sie unter bestimmten Bedingungen weitergeben dürfen.      #
+############################################################################################
+
+get_base() {
+
+. $IP_DIR/BASE
+
+ OLD_VER=$VER
+
+ VER=""
+ . $DB_DIR/BASE
+
+ if [ "$OLD_VER" -lt "$VER" ]; then
+  pakfire_logger "There is one ore more updates for the base system!"
+  for i in `seq $(($OLD_VER+1)) $VER`
+   do
+    $PAKHOME/pakfire install BASE-$i
+   done
+ fi
+
+}
+
+################################### EOF ####################################################
index 1fa815e..968474d 100644 (file)
@@ -4,57 +4,40 @@
 # IPFire ist freie Software, die Sie unter bestimmten Bedingungen weitergeben dürfen.      #
 ############################################################################################
 
-# Verzeichnis von Pakman
-VERZ=$(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 HOME)/list
-
-# Host Tester
-HOST_TEST=$(get_conf.sh HOST_TEST)
+get_list () {
 
 # Alle URLs durcharbeiten bis erste per ping erreichbar erreichbar
-url=$($HOST_TEST "$PURL")
+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 Listenserver finden.">>$LOG_file
-  exit 1
+ then pakfire_logger "Kann keinen Listenserver finden."
+  return 1
 fi
 
 # Verzeichnis in Zielverzeichnis wechseln für Download
-cd $DEST_DIR
+cd $PAKHOME/cache
 
 # 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}
+if [ -f $PACKAGE_LIST ]
+ then rm $PACKAGE_LIST
 fi
 
 # Download der Liste
-if /usr/bin/wget -q $URL/${VERS}/${LIST_NAME} >/dev/null 2>&1
+if /usr/bin/wget $URL/$PACKAGE_LIST > /dev/null 2>&1
  then
   cd -
-  echo "Updateliste heruntergeladen von $URL">>$LOG_file
-  exit 0
+  pakfire_logger "Updateliste heruntergeladen von $URL"
+  return 0
  else
   cd -
-  echo "Updateliste konnnte nicht heruntergeladen werden von $URL">>$LOG_file
-  exit 1
+  pakfire_logger "Updateliste konnnte nicht heruntergeladen werden von $URL"
+  return 1
 fi
 
+}
+
 ################################### EOF ####################################################
index 2a9e905..dd7608d 100644 (file)
@@ -5,27 +5,32 @@
 
 get_mirror() {
 
-# Testen ob Server erreichbar ist
-if ! $HOST_TEST $($URL_ZERL $H_MIRROR get_host) >/dev/null 2>&1
- then exit 1
-fi
+# Testen, ob der Server erreichbar ist
+#if ! $HOST_TEST $($PAKHOME/lib/url_zerl.sh $H_MIRROR get_host) >/dev/null 2>&1
+# then return 1
+#fi
 
-# Ins Verzeichnis wechseln
-cd $HOME
+# Ins Cache-Verzeichnis wechseln
+cd $PAKHOME/cache
 
 # Überprüfen ob File schon vorhanden ist
-if [ -e $HOME/$($URL_ZERL $H_MIRROR get_file) ]
- then rm $HOME/$($URL_ZERL $H_MIRROR get_file)
+if [ -e $PAKHOME/cache/$SERVERS_LIST ]
+ then rm -f $PAKHOME/cache/$SERVERS_LIST
 fi
 
 # File herunterladen
 if /usr/bin/wget -q $H_MIRROR >/dev/null 2>&1
- then 
+ then
+  COUNT=0
+  for i in `cat $SERVERS_LIST`; do
+    COUNT=$(($COUNT+1))
+  done
+  #. $PAKHOME/lib/test_host.sh `cat $SERVERS_LIST`
   cd -
-  exit 0
+  return 0
  else
   cd -
-  exit 1
+  return 1
 fi
 
 }
index 01c816f..eb9f189 100644 (file)
@@ -4,45 +4,35 @@
 # 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)
+get_pak() {
 
 # Alle URLs durcharbeiten bis erste per ping erreichbar erreichbar
-URL=$($HOST_TEST "$PURL")
+URL=$($HOST_TEST "$PURL")
 
 # Falls URL nicht gesetzt wurde abbruch des Scripts
 if [ -z $URL ]
- then echo "Kann keinen Patchserver finden">>$LOG_file
+ then pakfire_logger "Kann keinen Patchserver finden"
   exit 1
 fi
 
 # Verzeichnis in Zielverzeichnis wechseln für Download
-cd $DOWN_DEST
+cd $CACHE_DIR
+
+. $DB_DIR/$1
 
-# Download Source festlegen
-DOWN_SRC=${URL}/${VERS}/${1}.tar.gz
+FILE="$1-${VER}_${IPFVER}.tar.gz"
 
 # Paket Downloaden
-if /usr/bin/wget -q ${DOWN_SRC} >/dev/null 2>&1
+if /usr/bin/wget $URL/packages/$FILE{,.md5} >> $LOG 2>&1
  then
   cd -
   exit 0
  else
   cd -
-  echo "Probleme mit dem Download ${DOWN_SRC}"
+  pakfire_logger "Cannot download $URL/packages/$FILE"
   exit 1
 fi
 
+}
+
 ################################### EOF ####################################################
diff --git a/src/pakfire/lib/get_upgrade.sh b/src/pakfire/lib/get_upgrade.sh
new file mode 100644 (file)
index 0000000..8d72a55
--- /dev/null
@@ -0,0 +1,34 @@
+#!/bin/bash
+############################################################################################
+# Version 0.1a, Copyright (C) 2006  by IPFire.org                                                #
+# IPFire ist freie Software, die Sie unter bestimmten Bedingungen weitergeben dürfen.      #
+############################################################################################
+
+get_upgrade() {
+
+updates=""
+
+for list in $(find $IP_DIR -type f -name "*")
+do
+ list=$(basename $list)
+ . $IP_DIR/$list
+ OLD_VER=$VER
+ OLD_IPFVER=$IPFVER
+
+ VER=""
+ IPFVER=""
+ . $DB_DIR/$list
+
+ if [ "$OLD_IPFVER" -lt "$IPFVER" ]; then
+  updates="$list $updates"
+ fi
+
+done
+
+for i in $updates
+do
+ pakfire_logger "New version of $i available."
+done
+}
+
+################################### EOF ####################################################
index 2e8edb8..237dfa7 100644 (file)
@@ -4,12 +4,9 @@
 # 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
+# Zählen wie viele Hosts übergeben wurden
 i=0
-for host in $1
+for host in $PURL
 do
  ((i++))
 done
@@ -29,9 +26,9 @@ do
  ((i++))
  if [ $i -eq $rand ]
   then
-   if ping $($URL_ZERL $host get_host) -c 1 -s 0 >/dev/null 2>&1
+   if ping $($PAKHOME/lib/url_zerl.sh $host get_host) -c 1 -s 0 >/dev/null 2>&1
     then echo $host
-     exit 0
+     return 0
    fi
  fi
  if [ $i -gt $rand ]
@@ -42,13 +39,13 @@ done
 
 for host in $1
 do
- if ping $($URL_ZERL $host get_host) -c 1 -s 0 >/dev/null 2>&1
+ if ping $($PAKHOME/lib/url_zerl.sh $host get_host) -c 1 -s 0 >/dev/null 2>&1
   then
    echo $host
-   exit 0
+   return 0
  fi
 done
 
-exit 1
+return 1
 
 ################################### EOF ####################################################
index b1c40a9..c06bad0 100644 (file)
@@ -5,15 +5,53 @@
 ############################################################################################
 
 . /etc/pakfire.conf
-. $HOME/lib/get_mirror.sh
+. $PAKHOME/lib/get_mirror.sh
+. $PAKHOME/lib/get_list.sh
+. $PAKHOME/lib/check_pak.sh
+. $PAKHOME/lib/get_upgrade.sh
+. $PAKHOME/lib/get_base.sh
+. $PAKHOME/lib/get_pak.sh
 
 case "$1" in
-       update)         get_mirror
+       update)
+                       get_mirror
                        get_list
                        check_pak
        ;;
 
-       *) echo -e "IPFire - Pakfire\nHilfe:\npakfire install [Paket]\t- Installiert ein neues Paket.\npakfire update\t\t- Lädt die Liste aller Pakete neu.\npakfire remove [Paket]\t- Deinstalliert ein Paket.\npakfire upgrade\t\t- Überprüft nach neuen Updates."
+       upgrade)
+                       get_upgrade
+                       get_base
+       ;;
+
+       install)
+               case "$2" in
+                       BASE-*)
+                               echo $2
+                       ;;
+                       *)
+                               if [ -e $DB_DIR/$2 ]; then
+                                       if [ -e $IP_DIR/$2 ]; then
+                                               pakfire_logger "$2 is already installed on this system."
+                                       else
+                                               get_pak $2
+                                       fi
+                               else
+                                       pakfire_logger "There is no paket with this name: $2"
+                               fi
+                       ;;
+               esac
+       ;;
+
+       *)
+               echo -e "IPFire - Pakfire $PAKVER:"
+               echo -e "===\t===\t===\t===\t===\t===\t===\t==="
+               echo -e "pakfire install [packet]\t- Installs a new packet."
+               echo -e "pakfire remove [paket]\t\t- Uninstalls a paket."
+               echo -e "pakfire update\t\t\t- Reloads the package list."
+               echo -e "pakfire upgrade\t\t\t- Searches for new updates."
+               echo -e "===\t===\t===\t===\t===\t===\t===\t==="
+       ;;
 
 esac
 
index d103636..7c59ae7 100644 (file)
@@ -3,29 +3,31 @@
 # IPFire ist freie Software, die Sie unter bestimmten Bedingungen weitergeben dürfen;      #
 ############################################################################################
 
+PAKVER=2.0beta
+
 # Home Verzeichnis von Pakman
-HOME=/opt/pakfire
+PAKHOME=/opt/pakfire
+
+SERVERS_LIST=servers.list_$PAKVER
+PACKAGE_LIST=packages_list.txt
 
-# Verionsfile von IPFire
-VERS=/etc/ipfire_vers
+# Haupt-Mirrorliste
+H_MIRROR=http://download.ipfire.eu/servers/$SERVERS_LIST
 
 # URL Mirrorfile
-PURL=/opt/pakfire/patch.http
+PURL=`cat /opt/pakfire/cache/$SERVERS_LIST`
 
 # LOG_file
 LOG=/var/log/pakfire.log
 
-# Filename der Patchliste
-LIST_NAME=packages_list.txt
-
-# Zielverzeichnis der Patchliste
-DEST_DIR=/opt/pakfire/list/
+# Datenbank
+DB_DIR=/opt/pakfire/database
 
 # Update Verzeichnis
 UP_DIR=/opt/pakfire/updates/
 
-# Verzeichnis mit nicht installierten Paketen
-NIP_DIR=/opt/pakfire/notinstalled/
+# temp directory
+TMP_DIR=$PAKHOME/tmp
 
 # Verzeichnis mit Installierten Paketen
 IP_DIR=/opt/pakfire/installed/
@@ -33,14 +35,11 @@ IP_DIR=/opt/pakfire/installed/
 # Download Zielverzeichnis
 DOWN_DEST=/opt/pakfire/download/
 
-# Haupt- Mirrorliste
-H_MIRROR=http://mirror.ipfire.org/packages/files.http
-
 # URL Zerlegungs- Script
 URL_ZERL=/opt/pakfire/url_zerl.sh
 
 # Host Tester
-HOST_TEST=/opt/pakfire/test_host.sh
+HOST_TEST=$PAKHOME/lib/test_host.sh
 
 # Paket Filenamen festlegen
 # Das eigentliche Paket
@@ -54,3 +53,9 @@ PAK_UNINST=uninstall.sh
 
 # Cacheverzeichnis
 CACHE_DIR=/opt/pakfire/cache/
+
+pakfire_logger() {
+
+echo "`date -u '+%b %e %T'` $*" | tee -a $LOG
+
+}
\ No newline at end of file