# 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###" ]
break
fi
- if [ $i -ge 99999 ]
+ if [ $i -ge 9999 ]
then
echo "Defektes Patchfile!!!"
/bin/rm -f ${ZERL_PATCH}*
- exit 1
+ return 1
fi
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)
# 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 ####################################################
--- /dev/null
+#!/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 ####################################################
# 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 ####################################################
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
}
# 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 ####################################################
--- /dev/null
+#!/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 ####################################################
# 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
((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 ]
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 ####################################################
############################################################################################
. /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
# 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/
# 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
# Cacheverzeichnis
CACHE_DIR=/opt/pakfire/cache/
+
+pakfire_logger() {
+
+echo "`date -u '+%b %e %T'` $*" | tee -a $LOG
+
+}
\ No newline at end of file