* Pakfire - umfassende Änderungen und Erweiterungen


git-svn-id: http://svn.ipfire.org/svn/ipfire/trunk@249 ea5c0bd1-69bd-2848-81d8-4f18e57aeed8
This commit is contained in:
ms
2006-08-18 10:51:18 +00:00
parent 6aae8d6178
commit 97520ed5c2
10 changed files with 190 additions and 134 deletions

View File

@@ -0,0 +1 @@
VER=0

View 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<74>gen
for (( i=1 ; i<99999 ; i++))
# Zerlegen der Liste erst jede Zeile fuer sich bei maximal 9998 Eintr<74>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 99999 ]
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 <20>ltere Version installiert ist
if [ -e ${IP_DIR}${name}-* ]
then
# Erst alte Update Vorschl<68>ge l<>schen
/bin/rm -f ${UO_DIR}${name}-*
/bin/touch ${UP_DIR}${name}-${vers}
else
# Erst alte Paket Vorschl<68>ge l<>schen
/bin/rm -f ${NIP_DIR}${name}-*
/bin/touch ${NIP_DIR}${name}-${vers}
fi
fi
# Erst alte Paket Vorschl<68>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 ####################################################

View File

@@ -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 ####################################################

View 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<65>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 ####################################################

View 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
# <20>berpr<70>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
}

View 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
# Download Source festlegen
DOWN_SRC=${URL}/${VERS}/${1}.tar.gz
. $DB_DIR/$1
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 ####################################################

View File

@@ -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 ####################################################

View 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 <20>bergeben wurden
# Z<EFBFBD>hlen wie viele Hosts <20>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 ####################################################

View 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- <20>berpr<70>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

View File

@@ -3,29 +3,31 @@
# IPFire ist freie Software, die Sie unter bestimmten Bedingungen weitergeben d<>rfen; #
############################################################################################
# Home Verzeichnis von Pakman
HOME=/opt/pakfire
PAKVER=2.0beta
# Verionsfile von IPFire
VERS=/etc/ipfire_vers
# Home Verzeichnis von Pakman
PAKHOME=/opt/pakfire
SERVERS_LIST=servers.list_$PAKVER
PACKAGE_LIST=packages_list.txt
# 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
}