Hinzugefügt:

* Erste Version des Pakfire von Peter


git-svn-id: http://svn.ipfire.org/svn/ipfire/trunk@127 ea5c0bd1-69bd-2848-81d8-4f18e57aeed8
This commit is contained in:
ms
2006-05-20 09:34:19 +00:00
parent 223f4aa4a3
commit c1ae1ad691
13 changed files with 545 additions and 0 deletions

View File

@@ -1,3 +1,9 @@
------------------------------------------------------------------------
r126 | ms | 2006-05-19 16:29:15 +0200 (Fr, 19 Mai 2006) | 3 lines
Ge<EFBFBD>ndert:
* <20>berfl<66>ssige Programme aus der ISO genommen... Postfix, Stund usw...
------------------------------------------------------------------------
r125 | ms | 2006-05-18 19:33:39 +0200 (Do, 18 Mai 2006) | 5 lines

View File

@@ -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<74>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 <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
done
# L<>schen der Hilfslisten
/bin/rm -f ${ZERL_PATCH}*
################################### EOF ####################################################

View File

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

View File

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

View File

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

View File

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

View File

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

8
src/pakfire/lib/test.sh Normal file
View File

@@ -0,0 +1,8 @@
#!/bin/bash
echo $?
echo $$
echo $0
echo $1
echo $#
echo $%

View File

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

View File

@@ -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<62>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)
# <20>berpr<70>fen ob Hauptpaket angegeben wurde
if [ -z $1 ]
then
echo "$(/bin/date) | $0 | kein Paketnamen angegeben">>$LOG_file
exit 1
fi
# <20>berpr<70>fe ob Paket vorhanden
if [ ! -e ${DOWN_DEST}${1}.tar.gz ]
then
echo "$(/bin/date) | $0 | Paket nicht vorhanden">>$LOG_file
exit 1
fi
# <20>berpr<70>fe ob das Paket richtig geschn<68>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<62>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 ####################################################

View File

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

18
src/pakfire/pakfire Normal file
View File

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

0
src/pakfire/pakfire.conf Normal file
View File