Kleines script zur Erstellung einer preferences Datei

Aus Linupedia.org
Version vom 16. August 2006, 14:42 Uhr von Rolle (Diskussion | Beiträge)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

Mit diesem Script kann man sich eine preferences erstellen um viele Pakete mit gleichem Präfix (kde, xorg, ..) zu pinnen.

Aufruf:

myScript <name-der-preferences> <filter-string>

Beispiel:

 ./myScript myXORG xorg

Falls man den 2.Parameter weg lässt erhält man eine preference Datei für alle seine aktuell installierten Pakete.

Die Ergebnis Datei steht im aktuellen Verzeichnis und kann dann (nach Prüfung!) in die vorhandene /etc/apt/preferences eingefügt werden. Das darf in der Regel nur root !

Da es sich um ein "quick hack" Script handelt, gibt es keinerlei Fehlerprüfung der Parameter

Hier die source, speichern z.Bsp als myScript und mit chmod +x myScript ausführbar machen.

#! /bin/bash 

# Author: oc2pus 
# create a apt-preference file for all packages matching filter 
# 
# usage: $0 preferencefile filter 

MYRPMLIST="./tmpRPMList" 

if [ -z "$1" ]; then 
   MYPREF="./myPreferences" 
else 
   MYPREF="$1" 
fi 

# create list of installed packages 
echo "$0: create temporary package list ($MYRPMLIST)" 
if [ -z "$2" ]; then 
   rpm -qa --queryformat "%-30{name} %20{version} %10{release}\n" | sort > $MYRPMLIST 
else 
   rpm -qa --queryformat "%-30{name} %20{version} %10{release}\n" | sort | grep "$2" > $MYRPMLIST 
fi 
# sample line: 
# CheckHardware                                   0.1        778 

# create preference 
echo "$0: create preference file ($MYPREF) filter ("$2")" 
cat $MYRPMLIST | awk '{print "Package: "$1}{print "Pin: version "$2"-"$3}{print "Pin-Priority: 1001"}{print ""}' > $MYPREF 

echo "$0: remove temporary package list ($MYRPMLIST)" 
rm -f $MYRPMLIST 

echo "$0: check $MYPREF and append it to your /etc/apt/preferences" 

Script-Gurus sind aufgerufen dieses Script zu "veredeln" ... evtl mit automatischem append an die vorhandene /etc/apt/preferences


oc2pus