From c1ae1ad69127629a01de32f587721b41e16a5ae5 Mon Sep 17 00:00:00 2001 From: ms Date: Sat, 20 May 2006 09:34:19 +0000 Subject: [PATCH] =?utf8?q?Hinzugef=C3=BCgt:=20=20=20*=20Erste=20Version=20?= =?utf8?q?des=20Pakfire=20von=20Peter?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit git-svn-id: http://svn.ipfire.org/svn/ipfire/trunk@127 ea5c0bd1-69bd-2848-81d8-4f18e57aeed8 --- doc/ChangeLog | 6 +++ src/pakfire/lib/check_pak.sh | 90 ++++++++++++++++++++++++++++++++++ src/pakfire/lib/get_conf.sh | 21 ++++++++ src/pakfire/lib/get_list.sh | 60 +++++++++++++++++++++++ src/pakfire/lib/get_mirror.sh | 42 ++++++++++++++++ src/pakfire/lib/get_pak.sh | 48 ++++++++++++++++++ src/pakfire/lib/get_pakname.sh | 61 +++++++++++++++++++++++ src/pakfire/lib/test.sh | 8 +++ src/pakfire/lib/test_host.sh | 54 ++++++++++++++++++++ src/pakfire/lib/unpak_pak.sh | 80 ++++++++++++++++++++++++++++++ src/pakfire/lib/url_zerl.sh | 57 +++++++++++++++++++++ src/pakfire/pakfire | 18 +++++++ src/pakfire/pakfire.conf | 0 13 files changed, 545 insertions(+) create mode 100644 src/pakfire/lib/check_pak.sh create mode 100644 src/pakfire/lib/get_conf.sh create mode 100644 src/pakfire/lib/get_list.sh create mode 100644 src/pakfire/lib/get_mirror.sh create mode 100644 src/pakfire/lib/get_pak.sh create mode 100644 src/pakfire/lib/get_pakname.sh create mode 100644 src/pakfire/lib/test.sh create mode 100644 src/pakfire/lib/test_host.sh create mode 100644 src/pakfire/lib/unpak_pak.sh create mode 100644 src/pakfire/lib/url_zerl.sh create mode 100644 src/pakfire/pakfire create mode 100644 src/pakfire/pakfire.conf diff --git a/doc/ChangeLog b/doc/ChangeLog index a20da272f4..aea002c8a1 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -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 index 0000000000..4a8b11d873 --- /dev/null +++ b/src/pakfire/lib/check_pak.sh @@ -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 index 0000000000..46b6dccd62 --- /dev/null +++ b/src/pakfire/lib/get_conf.sh @@ -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 index 0000000000..9fd789cfa3 --- /dev/null +++ b/src/pakfire/lib/get_list.sh @@ -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 index 0000000000..29b6623ed3 --- /dev/null +++ b/src/pakfire/lib/get_mirror.sh @@ -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 index 0000000000..194836810f --- /dev/null +++ b/src/pakfire/lib/get_pak.sh @@ -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 index 0000000000..978bfe5405 --- /dev/null +++ b/src/pakfire/lib/get_pakname.sh @@ -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 index 0000000000..3ce53f7513 --- /dev/null +++ b/src/pakfire/lib/test.sh @@ -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 index 0000000000..7def31f73f --- /dev/null +++ b/src/pakfire/lib/test_host.sh @@ -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 index 0000000000..252684bcc5 --- /dev/null +++ b/src/pakfire/lib/unpak_pak.sh @@ -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 index 0000000000..0da8419968 --- /dev/null +++ b/src/pakfire/lib/url_zerl.sh @@ -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 @ </dev/null +$rest +EOF +then +# User heraus suchen +user=${rest%%:*} +rest=${rest#*:} +pass=${rest%%@*} +rest=${rest#*@} +fi + +host=${rest%%/*} +rest=${rest#*/} + +if grep / </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 index 0000000000..594ecf17f9 --- /dev/null +++ b/src/pakfire/pakfire @@ -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 index 0000000000..e69de29bb2 -- 2.39.2