Search for package status using aptitude
Wenn man mittels aptitude nach Paketen sucht, dann steht ja vorne immer ein Buchstabe, der den Paketstatus anzeigt. Welche Buchstaben moeglich sind und was sie bedeuten steht im Aptitude reference guide im Abschnitt Accessing package information.
Praktisch ist danach zu suchen. Ich wollte alle Pakete mit dem Status "c" finden, um alte Konfigurationsdateien von Paketen zu entfernen. Suche ist mit:
aptitude search '~c' |
und loeschen ging dann mit:
aptitude purge '~c' |
Praktisch!
Command Line, SSH and webproxy
Ich hatte ja gerade erst darueber geschrieben wie man apt hinter einem proxy benutzen kann, hier noch 2-3 Kleinigkeiten hinzugefuegt.
Als erstes ist es gut, auch die env variable http_proxy="" zu setzen, damit Programme wie w3m funktionieren:
export http_proxy="http://1.2.3.4:8080" |
als zweites ist es natuerlich interessant auch per SSH rauszukommen. Zum Glueck gibt es dafuer in den Ubuntu repositories
aptitude install corkscrew |
einem "tunnel TCP connections through HTTP proxies" Programm. Dafuer die folgenden beiden Zeilen in die ~/.ssh/config hinzufuegen
Host * ProxyCommand /usr/bin/corkscrew 1.2.3.4 8080 %h %p |
wenn es eine Fehlermeldung geben sollte wie:
Proxy could not open connnection to example.net: Proxy Error ( The specified Secure Sockets Layer (SSL) port is not allowed. ISA Server is not configured to allow SSL requests from this port. Most Web browsers use port 443 for SSL requests. ) |
einfach mal den SSH-Server auch auf Port 443 lauschen lassen (echo "Port 443 >> /etc/ssh/sshd_config; /etc/init.d/sshd restart) und dann auf dem Port verbinden.
Using apt behind a proxy…
just had to configure it.... Add:
Acquire::http::proxy "http://user:pass@1.2.3.4:8080"; |
to your /etc/apt/apt.conf. If no username and password needed just remove that options. Replace IP (1.2.3.4) and port (8080) with your configuration. Do an
aptitude update |
afterwards to check if it works
Eigene Debian-Pakete und Repository erstellen
Sobald als man Admin mehrere Server zu administrieren hat, kommt man in den Genuss ein- und das dasselbe auf viele Servern immer wieder machen zu muessen. Heute moechte ich mich dem Thema widmen auf vielen Servern z.B. eine neue Version des Backupskriptes einzuspielen. Dafuer brauche ich zwei Dinge
- ein Debian Paket mit meinem Skript
- ein Debian Repository ueber das das Paket verteilt wird
Der hier im folgenden vorgestellte Weg ist sehr simpel und rudimentaer gehalten und behandelt explizit Dinge wie SecureApt nicht.
Erstellen eines eigenen Debian-Paketes
Zum Erstellen des eigenen Debian Paketes benoetige ich nun zwei Dinge. Einmal mein Backupskript pregoBackup.sh und einmal eine control-Datei, die Informationen ueber das Debian Paket enthaelt. Die control Datei koennte z.B. wie folgt aussehen:
Package: pregoBackup Version: 0.5 Section: server Priority: optional Architecture: all Essential: no Installed-size: 1024 Maintainer: prego presto Description: pregos Backup Skript zum Sichern des Servers |
Das ganze vorgehen jetzt in Worte zu fassen waere sehr umstaendlich. Deswegen in kurz: die control Datei liegt in dem Unterordner ./DEBIAN und neben das DEBIAN Verzeichnis packe ich das Skript an die Stelle, wo ich es im Dateisystem liegen haben moechte:
cd /tmp mkdir pregoBackup cd pregoBackup mkdir ./DEBIAN mkdir -p ./root/skripte cp control ./DEBIAN cp pregoBackup.sh ./root/skripte |
Als naechstes wird das Debian-Paket erstellt:
cd /tmp dpkg-deb --build pregoBackup |
Danach sollten wir die Datei /tmp/pregoBackup.deb haben. Was darin enthalten ist koennen wir uns mit:
dpkg-deb --contents pregoBackup.deb |
anzeigen lassen, und wer moechte kann es auch spasseshalber mal mit
dpkg -i pregoBackup.deb aptitude show pregoBackup aptitude purge pregoBackup |
installieren, angucken und deinstallieren.
Anlegen eines Debian Repositories
An zweiter Stelle lege ich nun ein Repository an. Dafuer erstelle ich zuerst eine Verzeichnisstruktur dafuer:
mkdir -p /srv/myrepository/{binary,source} |
Anschliessend lege ich einen simplen Apache vhost an mit einer Zugangsbeschraenkung fuer das Repository auf mein lokales Netz:
ServerAdmin webmaster@example.net ServerName myrepository.example.net DocumentRoot /srv/myrepository/ AllowOverride None Options ExecCGI -MultiViews +SymLinksIfOwnerMatch Order Deny,Allow Deny from all Allow from 192.168.0.0/255.255.0.0 |
Nun kann ich mein frisch erstelltes Debian-Paket in die Repository Dateisystemstruktur kopieren:
cp /tmp/pregoBackup.deb /srv/myrepository/binary/ |
Zu guter letzt muss noch der Repository Index erstellt werden. Dafuer muss das Paket dpkg-dev vorhanden sein:
aptitude install dpkg-dev cd /srv/myrepository dpkg-scanpackages binary /dev/null | gzip -9c > binary/Packages.gz dpkg-scansources source /dev/null | gzip -9c > source/Sources.gz |
Wenn das alles fertig ist, brauche ich nur noch auf meinem Server die entsprechenden Zeilen in die /etc/apt/sources.conf eintragen, die Liste der verfuegbaren Pakete von den apt-Quellen erneuern und dann kann das Paket installiert werden.
## my personal repository deb http://myrepository.example.net binary/ deb-src http://myrepository.example.net source/ |
aptitude update aptitude install pregoBackup |
