Scripting Paketsystem
Lizenz: Dieser Artikel wurde als problematisch in Bezug auf der Lizenz markiert, dafür kann es verschiedene Gründe geben:
Bitte hilf mit alle diese Fragen zunächst zu klären, danach kann dieser Hinweis entfernt werden. |
Scripting / Scripting Paketsystem
Scripte für den Umgang mit Debians Paketsystem.
Alle Pakete einer Quelle loeschen (Perl)
Dieses Script hat eine eigene Seite: Alle Pakete einer Quelle löschen
Sources.list im Netzwerk verteilen (Perl)
(by godsmacker) (19.12.04)
Warnung: Vorsicht: Sehr quick und sehr dirty |
Das Skript erzeugt eine named pipe in /etc/apt/sources.list und holt diese Liste immer von einer URL, sobald darauf zugegriffen wird. Es verdaut an URLs alles, was LWP verdaut. Also HTTP, FTP, etc..
use strict;
use warnings;
use LWP::Simple;
chdir '/etc/apt/' or die;
my $FIFO = 'sources.list';
for (;;) {
unless (-p $FIFO) {
system('mknod', $FIFO, 'p')
&& die "can't mknod $FIFO: $!";
}
open (FIFO, ">$FIFO") or die "can't write to $FIFO: $!";
print FIFO get('http://some.host.name/sources.list');
close FIFO;
sleep 1;
}
Nach Paketen auf incoming.debian.org suchen (Shell)
Zuletzt überbearbeitet am 13.05.2005
- Syntax: script (suchparameter)
- Benötigt: wget und html2text
- Bugs: Langsam, weil dirty!
if [ ! -e /usr/bin/wget ]
then
echo "FEHLER: Datei '/usr/bin/wget' nicht gefunden."
exit 1
elif [ ! -e /usr/bin/html2text ]
then
echo "FEHLER: Datei '/usr/bin/html2text' nicht gefunden."
exit 1
fi
echo "Hole Index-Datei von incoming.debian.org..."
wget -O /tmp/checkinc.html http://incoming.debian.org 2>/dev/null
if [ "$?" != "0" ]
then
echo "FEHLER: Konnte Datei nicht herunterladen."
exit 1
fi
html2text -style compact -width 100 -ascii -nobs -o /tmp/checkinc.txt /tmp/checkinc.html
rm /tmp/checkinc.html
ci_lines=`cat /tmp/checkinc.txt|wc -l`
let "ci_head = ci_lines - 8"
let "ci_tail = ci_lines - 6"
echo "Dateien (außer \"REPORT\") im Verzeichnis: $ci_head"
echo
cat /tmp/checkinc.txt|tail -$ci_tail|head -$ci_head|grep "$1"
if [ "$?" != "0" ]
then
echo "Keine Ergebnisse für \"$1\"."
fi
rm /tmp/checkinc.txt
exit 0
Alle installierten Backports auflisten (Shell)
(by chimerer)
- Die in der sources.list eingetragenen Backport-Server entweder
- als Parameter auf der Kommandozeile übergeben oder in der sources.list mit # b-server markieren
export COLUMNS=175
if [ ! -z "$1" ]
then
for v in $*
do
list="$list $v"
done
else
for v in `cat /etc/apt/sources.list | awk '($0 ~ "b-server") { print $2 }' | awk -F "/" '{ print $1 "//" $3 }'`
do
list="$list $v"
done
fi
for p in `dpkg -l | awk '($0 ~ "^ii") { print $2 }'`
do
server=`apt-cache policy $p | grep -A 1 "\*" | awk '($0 ~ ":/") { print $2 }'`
for l in $list
do
if [ "$server" = "$l" ]
then
echo $p $server
fi
done
done
Pakete aus einer bestimmmten Quelle anzeigen (Shell)
- [Link] zum Beitrag im Forum
Für Ideen, was als Parameter angegeben werden kann ist /var/lib/apt/lists/ hilfreich.
Aus dem Dateinamen kann dann der entsprechende Parameter erstellt werden nach dem gesucht werden soll. Für eine Suche nach allen Paketen aus den Sicherheitsupdates sieht der Scriptaufruf folgendermaßen aus:
/list_packages.sh security
PKG_LIST=`dpkg -l|grep ii|awk '{print $2}'`
for PKG in $PKG_LIST
do
X=`apt-cache showpkg $PKG|grep status|grep $1 2>/dev/null`
if ! [ a"$X" == a"" ]
then
echo $PKG
fi
done