3ddiag-0.728-2
Asunder-0.1.0-0.oc2pus.4
BaseOCF-1.2-0.oc2pus.1
CheckHardware-0.1-970
DirectFB-0.9.22-2
GTorrentViewer-0.2b-0.oc2pus.3
....
3ddiag
Asunder
BaseOCF
CheckHardware
DirectFB
GTorrentViewer
....
#! /bin/bash
#####################################################
# script to generate meineListe.sel
#
# version 1.0 - oc2pus
#####################################################
# debug switch
#set -x
#####################################################
#####################################################
function usage ()
{
echo ""
echo "$PROGNAME: wrong call or missig parameters ..."
echo ""
echo "$PROGNAME: call `basename $0` cache [oc2pus | tux]"
echo "$PROGNAME: to list all packages from your actual apt-cache $CACHEDIR"
echo "$PROGNAME: call `basename $0` db [oc2pus | tux]"
echo "$PROGNAME: to list all installed packages"
echo ""
exit 1
}
#####################################################
# package_0.64.4-X.oc2pus.Y.i586.rpm ==> package
#####################################################
function packageBaseName ()
{
TMPdatei=$1
TMPdatei2=${TMPdatei%-*}
TMPdatei3=${TMPdatei2%_*}
PACKAGENAME=${TMPdatei3##/*/}
}
#####################################################
#####################################################
function createBody ()
{
DATUM=`date`
cat > $1 << EOF
# Meine-Package-Selection 1.0
# generated on $DATUM
=Ver: 1.0
=Sel: MeineListe
=Sum: Base System
=Sum.de: Grundsystem
=Cat: addon
=Vis: true
=Ord: 10
+Ins:
EOF
}
#####################################################
#####################################################
function createTail ()
{
echo "-Ins:" >> $1
echo "" >> $1
}
#####################################################
#####################################################
function createCacheList ()
{
echo "$PROGNAME: reading cache $CACHEDIR ..."
myList=`ls -1 $CACHEDIR/*.oc2pus.*`
for i in $myList; do
packageBaseName $i
echo $PACKAGENAME >> $1
done
}
#####################################################
# query RPM database and get all packagenames for $PACKAGER
# output only package-name
#####################################################
function createDatabaseList ()
{
echo "$PROGNAME: inspecting RPM-database ..."
rpm -qa --queryformat "%-30{name} %20{version} %10{release}\n" | \
sort | \
grep $PACKAGER | \
awk '{print $1}' >> $1
}
#####################################################
# adjust parameters for your desires ...
#####################################################
PROGNAME=`basename $0`
SELNAME=meineListe.sel
CACHEDIR=/var/cache/apt/archives
PACKAGER=oc2pus
if [ ! -z "$2" ]; then
PACKAGER=$2
fi
createBody $SELNAME
case "$1" in
cache)
echo "$PROGNAME: generating $SELNAME from directory $CACHEDIR for packager: $PACKAGER ..."
createCacheList $SELNAME
;;
db)
echo "$PROGNAME: generating $SELNAME from RPM-database for packager: $PACKAGER ..."
createDatabaseList $SELNAME
;;
*)
usage
;;
esac
createTail $SELNAME
echo "$PROGNAME: $SELNAME written"
echo "$PROGNAME: now edit $SELNAME and remove/add some packages"
echo "$PROGNAME: install the file $SELNAME in the directory: /var/adm/YaST/InstSrcManager/IS_CACHE_0x00000001/DATA/descr/"
echo "$PROGNAME: (you must be root to do this!)"
echo "$PROGNAME: "
echo "$PROGNAME: To install all meinePakete packages in one step, simply call: "apt groupinstall meinePakete""
rpm -qa | sort liefert:
Code:
3ddiag-0.728-2
Asunder-0.1.0-0.oc2pus.4
BaseOCF-1.2-0.oc2pus.1
CheckHardware-0.1-970
DirectFB-0.9.22-2
GTorrentViewer-0.2b-0.oc2pus.3
....
==> Nachbearbeitung um aus 3ddiag-0.728-2 ==> 3ddiad=0.728-2 zu machen und dann mit dieser Liste ein apt install auszuführen.
Vorteil, alle Programme werden in der GLEICHEN Version wieder geladen.
3ddiag-0.728-2
855resolution-0.4-3
a2ps-4.13-1058
a52dec-0.7.4-3.pm.1
aaa_base-10.0-28
aaa_skel-2005.9.7-2
aalib-1.4.0-290
acl-2.2.31-3
acpid-1.0.4-9.4
acroread-7.0.1-4
agfa-fonts-2003.03.19-15
alsa-1.0.10-0.pm.1
...
function packageBaseName ()
{
TMPdatei=$1
TMPdatei2=${TMPdatei%-*}
TMPdatei3=${TMPdatei2%_*}
PACKAGENAME=${TMPdatei3##/*/}
}
ad 5.)
mit sed oder awk das "=" reinschiessen (siehe man sed, man awk)
oder mit so einer (ähnlichen) Funktion
Code:
function packageBaseName ()
{
TMPdatei=$1
TMPdatei2=${TMPdatei%-*}
TMPdatei3=${TMPdatei2%_*}
PACKAGENAME=${TMPdatei3##/*/}
}
rpm -qa --qf "%{NAME}=%{VERSION} " > myProgList.txt
...fluidsynth=1.0.6 libjpeg=6.2.0 grep=2.5.1a telnet-server=1.2 libnscd=1.1 atk-devel=1.10.3 readline=5.0 ....
cat myProgList.txt | apt install