From a27d6e5d488bd3a1678b39de6ee2bde0a7bd74eb Mon Sep 17 00:00:00 2001 From: Matteo Rossini Date: Mon, 9 Sep 2013 17:02:18 +0200 Subject: [PATCH] Slackpkg+ 0.9.7.2 released Version 0.9.7.2 - 09/Sep/2013 - Added support for unrepositorized local directory in config file - Added USEBL to temporary skip blacklist check (USEBL=0 slackpkg install..) --- ChangeLog.txt | 4 +++ src/ChangeLog.txt | 4 +++ src/README | 19 ++++++++++ src/slackpkgplus.sh | 64 +++++++++++++++++++++++++++++++--- src/slackpkgplus.x86.sample | 6 ++++ src/slackpkgplus.x86_64.sample | 6 ++++ 6 files changed, 98 insertions(+), 5 deletions(-) diff --git a/ChangeLog.txt b/ChangeLog.txt index 91c68f8..fab59a4 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -1,3 +1,7 @@ +Version 0.9.7.2 - 09/Sep/2013 + - Added support for unrepositorized local directory in config file + - Added USEBL to temporary skip blacklist check (USEBL=0 slackpkg install..) + Version 0.9.7.1 - 06/Sep/2013 - fixed a bug on 'slackpkg upgrade file:..' diff --git a/src/ChangeLog.txt b/src/ChangeLog.txt index 91c68f8..fab59a4 100644 --- a/src/ChangeLog.txt +++ b/src/ChangeLog.txt @@ -1,3 +1,7 @@ +Version 0.9.7.2 - 09/Sep/2013 + - Added support for unrepositorized local directory in config file + - Added USEBL to temporary skip blacklist check (USEBL=0 slackpkg install..) + Version 0.9.7.1 - 06/Sep/2013 - fixed a bug on 'slackpkg upgrade file:..' diff --git a/src/README b/src/README index 16df07e..32a22bb 100644 --- a/src/README +++ b/src/README @@ -37,6 +37,25 @@ then 'slackpkg upgrade-all' will upgrade it. ----- +the MIRRORPLUS array define all mirrors. It accepts a lot of protocols: + +1) http/ftp/https: + MIRRORPLUS['slacky']=http://repository.slacky.eu/slackware64/ + the mirror must contains all metadata files (CHECKSUMS.md5 ...) + you must run 'slackpkg update' after add/remove a repository +2) local mirror: + MIRRORPLUS['alienlocal']=file://mirrors/alienbob/x86/14.0/ + the directory must contains all metadata files (CHECKSUMS.md5 ...) + you must run 'slackpkg update' after add/remove a repository +3) local packages directory: + MIRRORPLUS['mypackages']=dir://mypackages/ + all packages must to be in a single directory (subdirectory not allowed) + 'slackpkg update' ignore these repository. Every time you run slackpkg + it read the directory contents. + + +----- + Usage: diff --git a/src/slackpkgplus.sh b/src/slackpkgplus.sh index 95d759c..7b6fa48 100755 --- a/src/slackpkgplus.sh +++ b/src/slackpkgplus.sh @@ -3,7 +3,14 @@ declare -A MIRRORPLUS if [ -e /etc/slackpkg/slackpkgplus.conf ];then + USEBLACKLIST=true + if [ "$USEBL" == "0" ];then + USEBLACKLIST=false + fi . /etc/slackpkg/slackpkgplus.conf + if [ "$USEBL" == "0" ];then + USEBLACKLIST=false + fi fi if [ "$SLACKPKGPLUS" = "on" ];then @@ -31,6 +38,19 @@ if [ "$SLACKPKGPLUS" = "on" ];then URLFILE=$(echo $URLFILE|sed "s#^.*/SLACKPKGPLUS_$PREPO/#${MIRRORPLUS[$PREPO]}#") fi + echo $URLFILE + + if echo $URLFILE | grep "^dir:/"|grep -q "/PACKAGES.TXT$";then + touch $2 + return 0 + fi + if echo $URLFILE | grep "^dir:/"|grep -q "/MANIFEST.bz2$";then + echo -n|bzip2 -c >$2 + return 0 + fi + + URLFILE=$(echo $URLFILE|sed -e 's_^dir:/_file://_') + if echo $URLFILE | grep -q "^file://" ; then URLFILE=${URLFILE:6} if [ -f $URLFILE ];then @@ -52,6 +72,9 @@ if [ "$SLACKPKGPLUS" = "on" ];then if [ "$CHECKGPG" = "on" ];then for PREPO in $REPOPLUS;do URLFILE=${MIRRORPLUS[${PREPO/SLACKPKGPLUS_}]}CHECKSUMS.md5.asc + if echo $URLFILE | grep -q "^dir:/" ; then + continue + fi if echo $URLFILE | grep -q "^file://" ; then URLFILE=${URLFILE:6} cp -v $URLFILE ${TMPDIR}/CHECKSUMS.md5-$PREPO.asc @@ -91,6 +114,8 @@ if [ "$SLACKPKGPLUS" = "on" ];then if echo $URLFILE | grep -q "^file://" ; then URLFILE=${URLFILE:6} cp -v $URLFILE ${TMPDIR}/CHECKSUMS.md5-$PREPO + elif echo $URLFILE | grep -q "^dir:/" ; then + continue else $DOWNLOADER ${TMPDIR}/CHECKSUMS.md5-$PREPO ${MIRRORPLUS[${PREPO/SLACKPKGPLUS_}]}CHECKSUMS.md5 fi @@ -99,6 +124,9 @@ if [ "$SLACKPKGPLUS" = "on" ];then fi if [ $(basename $1) = "GPG-KEY" ];then for PREPO in $REPOPLUS;do + if [ "${PREPO:0:4}" = "dir:" ];then + continue + fi URLFILE=${MIRRORPLUS[${PREPO/SLACKPKGPLUS_}]}GPG-KEY if echo $URLFILE | grep -q "^file://" ; then URLFILE=${URLFILE:6} @@ -130,7 +158,11 @@ if [ "$SLACKPKGPLUS" = "on" ];then echo 1 return fi - gpg --verify ${1}.asc ${1} 2>/dev/null && echo "1" || echo "0" + if [ -e "${1}.asc" ];then + gpg --verify ${1}.asc ${1} 2>/dev/null && echo "1" || echo "0" + else + echo 1 + fi if [ "$(basename $1)" == "CHECKSUMS.md5" ];then X86_64=$(ls /var/log/packages/aaa_base*x86_64*|head -1 2>/dev/null) for PREPO in $REPOPLUS;do @@ -149,14 +181,20 @@ if [ "$SLACKPKGPLUS" = "on" ];then local MD5ORIGINAL local MD5DOWNLOAD local PREPO + local ARG if echo $1|egrep -q "/SLACKPKGPLUS_(file|dir|http|ftp|https)[0-9]";then echo 1 return fi - PREPO=$(echo $1 | rev | cut -f3 -d/ | rev) + ARG=$(echo $1|sed "s|^$TEMP/||") + PREPO=$(echo $ARG | cut -f2 -d/|sed 's/SLACKPKGPLUS_//' ) + if echo ${MIRRORPLUS[$PREPO]}|grep -q ^dir:/;then + echo 1 + return + fi - MD5ORIGINAL=$(egrep -v " \.(/extra)?/source/" ${CHECKSUMSFILE} | grep -w $PREPO | grep -m1 "/$(basename $1)$" | cut -f1 -d \ ) + MD5ORIGINAL=$( grep -m1 "$ARG$" ${CHECKSUMSFILE} | cut -f1 -d \ ) MD5DOWNLOAD=$(md5sum ${1} | cut -f1 -d \ ) if [ "$MD5ORIGINAL" = "$MD5DOWNLOAD" ]; then echo 1 @@ -377,7 +415,7 @@ if [ "$SLACKPKGPLUS" = "on" ];then # Test repositories for pp in ${REPOPLUS[*]};do - echo "${MIRRORPLUS[$pp]}"|grep -q -e ^http:// -e ^https:// -e ^ftp:// -e ^file:// + echo "${MIRRORPLUS[$pp]}"|grep -q -e ^http:// -e ^https:// -e ^ftp:// -e ^file:// -e ^dir:/ if [ $? -ne 0 ];then echo "Repository '$pp' not configured." >> $TMPDIR/error.log echo "Add:" >> $TMPDIR/error.log @@ -445,6 +483,9 @@ if [ "$SLACKPKGPLUS" = "on" ];then # -- This is to prevent silent exclusion of multilib package # aaa_elflibs-compat32 when /etc/slackpkg/blacklist contains the # pattern aaa_elflibs. + if ! $USEBLACKLIST ;then + >${TMPDIR}/blacklist + fi if $MLREPO_SELELECTED && grep -q "^aaa_elflibs$" ${TMPDIR}/blacklist && ! grep -q "^aaa_elflibs-compat32$" ${TMPDIR}/blacklist ; then sed -i --expression "s/^aaa_elflibs/#aaa_elflibs/" ${TMPDIR}/blacklist grep -vEw -f ${TMPDIR}/blacklist -f ${TMPDIR}/blacklist.slackpkgplus | grep -v "[ ]aaa_elflibs[ ]" >${TMPDIR}/blacklist.tmp @@ -473,6 +514,19 @@ if [ "$SLACKPKGPLUS" = "on" ];then PRIORITYIDX=1 touch ${TMPDIR}/pkglist-pre + for PREPO in $REPOPLUS;do + pref=${MIRRORPLUS[$PREPO]} + if [ "${pref:0:5}" = "dir:/" ];then + localpath=$(echo "$pref" | cut -f2- -d":"|sed -e 's_/$__' -e 's_//_/_') + MIRRORPLUS[$PREPO]="dir:$localpath/" + if [ ! -d "$localpath" ];then + continue + fi + ( cd $localpath + ls -ld *.t[blxg]z|tac|grep ^-|awk '{print "./SLACKPKGPLUS_'$PREPO'/"$NF}'|awk -f /usr/libexec/slackpkg/pkglist.awk >> ${TMPDIR}/pkglist-pre + ) + fi + done if [ "$CMD" == "install" ] || [ "$CMD" == "upgrade" ] || [ "$CMD" == "reinstall" ] || [ "$CMD" == "remove" ] ; then @@ -554,7 +608,7 @@ if [ "$SLACKPKGPLUS" = "on" ];then fi # You can specify 'slackpkg install reponame' where reponame is a thirdy part repository - elif grep -q "^SLACKPKGPLUS_${pref}[ ]" ${WORKDIR}/pkglist ; then + elif grep -q "^SLACKPKGPLUS_${pref}[ ]" ${WORKDIR}/pkglist ${TMPDIR}/pkglist-pre ; then echo "$pref" | grep -qi "multilib" && MLREPO_SELELECTED=true diff --git a/src/slackpkgplus.x86.sample b/src/slackpkgplus.x86.sample index f8ca36e..2b0ea39 100644 --- a/src/slackpkgplus.x86.sample +++ b/src/slackpkgplus.x86.sample @@ -15,6 +15,7 @@ VERBOSE=1 # Examples: #PKGS_PRIORITY=( restricted:vlc ) +#PKGS_PRIORITY=( myrepo:.* ) # # List repository you want to use (defined below). @@ -38,6 +39,11 @@ MIRRORPLUS['slackpkgplus']=http://slakfinder.org/slackpkg+/ # Slackware current - i386 +# Local repository: +#MIRRORPLUS['alienbob']=file://repositories/alien/sbrepos/14.0/x86/ +# +# Local packages (you do not need metadata nor 'slackpkg update' command): +#MIRRORPLUS['myrepo']=dir://repositories/mypackages/ # Supported Repositories (see /usr/doc/slackpkg+-* for details): # diff --git a/src/slackpkgplus.x86_64.sample b/src/slackpkgplus.x86_64.sample index 59efb23..85d290d 100644 --- a/src/slackpkgplus.x86_64.sample +++ b/src/slackpkgplus.x86_64.sample @@ -14,6 +14,7 @@ VERBOSE=1 # Examples: #PKGS_PRIORITY=( restricted:vlc ) +#PKGS_PRIORITY=( myrepo:.* ) # # If you want a multilib system, uncomment the multilib repository and set: #PKGS_PRIORITY=( multilib:.* ) @@ -41,6 +42,11 @@ MIRRORPLUS['slackpkgplus']=http://slakfinder.org/slackpkg+/ #MIRRORPLUS['multilib']=http://taper.alienbase.nl/mirrors/people/alien/multilib/current/ #MIRRORPLUS['zerouno']=http://www.z01.eu/repo-slack/slackware64-current/ +# Local repository: +#MIRRORPLUS['alienbob']=file://repositories/alien/sbrepos/14.0/x86/ +# +# Local packages (you do not need metadata nor 'slackpkg update' command): +#MIRRORPLUS['myrepo']=dir://repositories/mypackages/ # Supported Repositories (see /usr/doc/slackpkg+-* for details):