Scripting Paketsystem

Aus DebianforumWiki

Wechseln zu: Navigation, Suche
WikiScripting ‹ Scripting Paketsystem

LizenzOffen.png Lizenz: Dieser Artikel wurde als problematisch in Bezug auf der Lizenz markiert, dafür kann es verschiedene Gründe geben:
  • die Lizenz des Ursprünglichen Artikels ist unbekannt oder nicht kompatiblen mit der CC by SA
  • durch die Migration wurden der/die ursprüngliche(n) Autor(en) aus der History gelöscht
  • es wurden Inhalte ohne Zustimmung des ursprünglichen Autors übernommen
  • es gibt andere urheberrechtliche Bedenken gegen diesen Artikel.

Bitte hilf mit alle diese Fragen zunächst zu klären, danach kann dieser Hinweis entfernt werden.


Scripting / Scripting Paketsystem

Inhaltsverzeichnis


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.png 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)

  1. Die in der sources.list eingetragenen Backport-Server entweder
  2. 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

Scripting / Scripting Paketsystem

Meine Werkzeuge