Home
mymerge
Logitech LX5
 

Version vom 20.05.2007 12:01 Uhr
23.11.2007 myemerge auf  mymerge umbenannt.

mymerge enstand aus dem Frust sich all diese Pakete Merken zu müssen, die bei einem World oder System update Installiert werden, oder auch bei einem einzelnen Paket was wiederum andere hinter sich her zieht. Schnell mal was Ausprobieren und schon waren zig Pakete Installiert die bei einem emerge -C $HAUPTPAKET einfach auf der Platte verweilen.

mymerge legt nun ein Log an welches beim Deinstallieren alle benötigten Pakete einliest und wieder entfernt.  Dieses Betrifft zur.Zeit allerdings nur mit "N" markierte Pakete.

Beispiel:

mymerge -m azureus
These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild  N    ] dev-java/eclipse-ecj-3.2.2  USE="-doc" 0 kB
[ebuild  N    ] dev-java/bcprov-1.36-r1  USE="-doc -source" 0 kB
[ebuild  N    ] dev-java/commons-cli-1.0-r5  USE="-doc -source -test" 0 kB
[ebuild  N    ] dev-java/swt-3.2.2  USE="cairo opengl -gnome -seamonkey -xulrunner" 0 kB
[ebuild  N    ] net-p2p/azureus-2.5.0.4-r1  USE="-source" 0 kB

Total: 5 packages (5 new), Size of downloads: 0 kB

Diese 5 Pakete werden also nun für azureus gebraucht. Gefällt mir azureus nicht und lösche es mit emerge -C azureus, bleiben 4 unangetastet auf der Platte installiert.

mit mymerge -C azureus keines der 5;)

TODO: vieles ;)



#!/bin/bash

# mymerge by forty_ 2007 (GPL)


my_merge_log_dir="$HOME/.mymerge" #Dir für Logs
is_sudors=$(grep emerge /etc/sudoers | awk '{print $1}')
date=$(date | awk '{print$1 $2 $3}')
user=$(whoami)

if test "$UID" = 0; then
    mymerge="emerge"
    elif
    [ "$is_sudors" = "$user" ]; then   
    mymerge="sudo emerge"
        else
    echo "Fehler:"
    echo "Du musst Root oder in /etc/sudors eingestragen sein."
    exit 2
fi

if [ $# -lt 1 ]; then
    echo "Fehler: Keine Option angegeben"
    echo "Benutze: $0 [--help -m -C -l -system -world]."
    exit 1
fi

if [ ! -d $my_merge_log_dir ]; then
    echo "lege Verzeichnis .mymerge an. Hier werden die Logs gespeichert."
    sleep 3
    mkdir $my_merge_log_dir   
fi

case "$1" in
    --help)
    echo
    echo "--help   Diese Seite"
    echo "-i       den Inhalt eines Paketes anzeigen"
    echo "-l       die Liste der Installierten Pakete anzeigen lassen"
    echo "-system  updaten"
    echo "-world   updaten"
    echo "-m       einzelne Pakete (und deren Abhängigkeiten) mergen"
    echo "-C       Paket wieder entfernen"
    ;;
   
     #vorhandene Pakete auflisten
    -l)
    ls  $my_merge_log_dir
    ;;
   
    #Paket mergen
    -m)
    echo EMERGE $2
       
    #Paketnamen zum Speichern raussuchen
    filename=`echo $2 | cut -d "=" -f 2 | cut -d "/" -f 2`

    # Ausgabe von Emerge Speichern
    $mymerge -pv $2 > $my_merge_log_dir/$filename
    $mymerge -a $2
    ;;

    -C)   
    echo "UNMERGE" $unmerge
    filename=`echo $2 | cut -d "=" -f 2 | cut -d "/" -f 2`
    if [ -f $my_merge_log_dir/$filename ]; then
    unmerge="$(grep "N" $my_merge_log_dir/$filename | awk '{print $4}')"

    $mymerge -C -a $unmerge
    rm -f $my_merge_log_dir/$filename
        else
    echo $my_merge_log_dir/$filename   \<-- existiert nicht -l für Liste
    fi
    ;;
   
    -system)
    if [ -f $my_merge_log_dir/system-$date ]; then
    echo "Das Systemfile für heute existiert schon!"
        else
    $mymerge -uDvp system > "$my_merge_log_dir/system-$date"
    echo "Merge System"
    $mymerge -uDva system
    fi
    ;;

    -world)
    if [ -f $my_merge_log_dir/world-$date ]; then
    echo "Das Worldfile für heute existiert schon!"
        else
    echo "Merge World"
        $mymerge -uDpv world > "$my_merge_log_dir/world-$date"
        $mymerge -uDva world
    fi
    ;;

    -i)
    if [ -f $my_merge_log_dir/$2 ]; then
    less "$my_merge_log_dir/$2"
        else
    echo $my_merge_log_dir/$2   \<-- existiert nicht -l für Liste
    exit 1
    fi
    ;;
esac




  Top