<?xml version="1.0" encoding="utf-8" ?>

<rss version="2.0" 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/"
   xmlns:content="http://purl.org/rss/1.0/modules/content/"
   >
<channel>
    
    <title>Zugschlusbeobachtungen - Debian-Packages</title>
    <link>http://blog.zugschlus.de/</link>
    <description>Das persönliche Blog von Marc Haber</description>
    <dc:language>en</dc:language>
    <admin:errorReportsTo rdf:resource="mailto:mh+blog-zugschlus-de@zugschlus.de" />
    <generator>Serendipity 1.5.5 - http://www.s9y.org/</generator>
    <pubDate>Thu, 16 Apr 2009 20:49:28 GMT</pubDate>

    <image>
        <url>http://blog.zugschlus.de/templates/default/img/s9y_banner_small.png</url>
        <title>RSS: Zugschlusbeobachtungen - Debian-Packages - Das persönliche Blog von Marc Haber</title>
        <link>http://blog.zugschlus.de/</link>
        <width>100</width>
        <height>21</height>
    </image>

<item>
    <title>help needed for ATM support in ifupdown-scripts-zg2</title>
    <link>http://blog.zugschlus.de/archives/820-help-needed-for-ATM-support-in-ifupdown-scripts-zg2.html</link>
            <category>Debian-Packages</category>
    
    <comments>http://blog.zugschlus.de/archives/820-help-needed-for-ATM-support-in-ifupdown-scripts-zg2.html#comments</comments>
    <wfw:comment>http://blog.zugschlus.de/wfwcomment.php?cid=820</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.zugschlus.de/rss.php?version=2.0&amp;type=comments&amp;cid=820</wfw:commentRss>
    

    <author>mh+blog-zugschlus-de@zugschlus.de (Marc 'Zugschlus' Haber)</author>
    <content:encoded>
    &lt;p&gt;
I haven&amp;#8217;t been using ATM on Linux for some six years now. I neither have access to an ATM network any more nor do
I have ATM hardware any more. Therefore, I plan to remove ATM support from ifupdown-scripts-zg2 in the next release
which will be done in the next few weeks.
&lt;/p&gt;
&lt;p&gt;
If anybody does still use ATM on Linux in conjunction with my scripts, you might want to offer help with the package if
you want to have continued ATM support in ifdown-scripts-zg2. I cannot test the code any more and therefore cannot
maintain it in the future.
&lt;/p&gt;
  
    </content:encoded>

    <pubDate>Thu, 16 Apr 2009 22:49:28 +0200</pubDate>
    <guid isPermaLink="false">http://blog.zugschlus.de/archives/820-guid.html</guid>
    <category>atm</category>
<category>debian</category>
<category>debian-english</category>
<category>linux</category>
<category>network</category>

</item>
<item>
    <title>DPotW: swaks</title>
    <link>http://blog.zugschlus.de/archives/30-DPotW-swaks.html</link>
            <category>Debian-Packages</category>
    
    <comments>http://blog.zugschlus.de/archives/30-DPotW-swaks.html#comments</comments>
    <wfw:comment>http://blog.zugschlus.de/wfwcomment.php?cid=30</wfw:comment>

    <slash:comments>3</slash:comments>
    <wfw:commentRss>http://blog.zugschlus.de/rss.php?version=2.0&amp;type=comments&amp;cid=30</wfw:commentRss>
    

    <author>mh+blog-zugschlus-de@zugschlus.de (Marc 'Zugschlus' Haber)</author>
    <content:encoded>
    &lt;p&gt;
&lt;blockquote&gt;&lt;pre&gt;
Description: SMTP command-line test tool
 swaks (Swiss Army Knife SMTP) is a command-line tool written in Perl
 for testing SMTP setups; it supports STARTTLS and SMTP AUTH (PLAIN,
 LOGIN, CRAM-MD5, SPA, and DIGEST-MD5). swaks allows to stop the SMTP
 dialog at any stage, e.g to check RCPT TO: without actually sending a
 mail.
 .
 If you are spending too much time iterating &amp;#8220;telnet foo.example 25&amp;#8221;
 swaks is for you.
&lt;/pre&gt;&lt;/blockquote&gt;
&lt;/p&gt;
&lt;p&gt;
A very important tool which makes debugging e-mail a breeze. A must for every mail admin.
&lt;/p&gt;
  
    </content:encoded>

    <pubDate>Tue, 06 Mar 2007 13:20:00 +0100</pubDate>
    <guid isPermaLink="false">http://blog.zugschlus.de/archives/30-guid.html</guid>
    <category>debian</category>
<category>debian-english</category>
<category>e-mail</category>
<category>swaks</category>

</item>
<item>
    <title>listadmin</title>
    <link>http://blog.zugschlus.de/archives/318-listadmin.html</link>
            <category>Debian-Packages</category>
    
    <comments>http://blog.zugschlus.de/archives/318-listadmin.html#comments</comments>
    <wfw:comment>http://blog.zugschlus.de/wfwcomment.php?cid=318</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.zugschlus.de/rss.php?version=2.0&amp;type=comments&amp;cid=318</wfw:commentRss>
    

    <author>mh+blog-zugschlus-de@zugschlus.de (Marc 'Zugschlus' Haber)</author>
    <content:encoded>
    &lt;p&gt;Die Kategorie &amp;#8220;Debian-Package of the Week&amp;#8221; habe ich umbenannt in &amp;#8220;Ausgesuchte
Debian-Packages&amp;#8221;, weil ich den angestrebten wöchentlichen Rhythmus drastisch verfehle.&lt;/p&gt;&lt;p&gt;Heute empfehle ich
&lt;a href=&quot;http://blog.zugschlus.de/exit.php?url_id=1704&amp;amp;entry_id=318&quot; title=&quot;http://packages.debian.org/listadmin&quot;  onmouseover=&quot;window.status=&#039;http://packages.debian.org/listadmin&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;listadmin&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;/p&gt; Wer sich um Mailinglisten kümmert, die mit &lt;a
href=&quot;http://blog.zugschlus.de/exit.php?url_id=1705&amp;amp;entry_id=318&quot; title=&quot;http://packages.debian.org/mailman&quot;  onmouseover=&quot;window.status=&#039;http://packages.debian.org/mailman&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;mailman&lt;/a&gt;&lt;p&gt; bedient werden, weiß, was es für eine Sysiphus-Arbeit es ist,
sich um die Mails zu kümmern, die in der Moderatorenqueue auflaufen. Bei Listen, die es schon etwas länger gibt, ist
das hauptsächlich Spam, und mit vertretbarem Aufwand ist das nicht zu managen.&lt;/p&gt;&lt;p&gt;listadmin bringt das Management
der Mailqueue auf die Kommandozeile. Man hinterlegt in einer &lt;font face=&quot;courier
new,courier,monospace&quot;&gt;~/.listadmin.ini&lt;/font&gt; die Information über und die Zugangsdaten zu den Listen. So konfiguriert
zum Beispiel&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;adminurl
http://mailman.{domain}/cgi-bin/mailman/admindb/{list}&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;font face=&quot;courier
new,courier,monospace&quot;&gt;username mh+straba-selbst-fahren@zugschlus.de&lt;/font&gt;&lt;br /&gt;&lt;font face=&quot;courier
new,courier,monospace&quot;&gt;password &amp;lt;snip&amp;gt;&lt;/font&gt;&lt;br /&gt;&lt;font face=&quot;courier
new,courier,monospace&quot;&gt;straba-selbst-fahren@lists.zugschlus.de&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;font face=&quot;courier
new,courier,monospace&quot;&gt;username mh+bofh-users@zugschlus.de&lt;/font&gt;&lt;br /&gt;&lt;font face=&quot;courier
new,courier,monospace&quot;&gt;password &amp;lt;snip&amp;gt;&lt;/font&gt;&lt;br /&gt;&lt;font face=&quot;courier
new,courier,monospace&quot;&gt;bofh-users@lists.bofh.de&lt;/font&gt;&lt;/blockquote&gt;&lt;p&gt;zwei Listen auf unterschiedlichen Hosts in
listadmins Verantwortung. Dann reicht ein Aufruf von &lt;font face=&quot;courier new,courier,monospace&quot;&gt;listadmin&lt;/font&gt; aus der
Shell, und listadmin holt&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Den Inhalt der Moderatorenqueue aus dem Webinterface&lt;/li&gt;&lt;li&gt;Fragt Dich für jede
Mail in der Queue, was es damit machen soll (Accept, Drop, View Body, View Headers, und noch ein paar Optionen)
und&lt;/li&gt;&lt;li&gt;führt schließlich Deine Kommandos aus&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;und das für alle Listen mit einem einzigen Aufruf.
Zusätzlich kann man Defaults vorgeben und den Spamassassin-Score mit in die Bewertung aufnehmen, so dass man z.B. alle
Mails mit einem Score über 10 automatisch droppen kann, oder auch einfach nur aus dem cron alle nicht approvten Mails
regelmäßg aus der Queue kicken kann.&lt;/p&gt;&lt;p&gt;Das ganze ist natürlich mit geparsten Webseiten und
&amp;#8220;getürkten&amp;#8221; POST-Requests ein übler Hack, der bei jedem Mailman-Update königlich auf die Nase fallen
kann, wenn sich das Webinterface ändert, aber es hilft, den Moderatorenaufwand auf ein paar Sekunden pro Tag und Liste
zu drücken was früher echt lästig war.&lt;/p&gt;&lt;p&gt;Schön wäre es natürlich, wenn Mailman (endlich) ein brauchbares
maschinenkompatibles Interface bieten würde, aber so lange Mailman das noch nicht selbst kann, ist listadmin eine
große HIlfe.&lt;/p&gt;&lt;p&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Sat, 11 Feb 2006 11:04:03 +0100</pubDate>
    <guid isPermaLink="false">http://blog.zugschlus.de/archives/318-guid.html</guid>
    <category>listadmin</category>
<category>mailman</category>

</item>
<item>
    <title>DPotW: grub</title>
    <link>http://blog.zugschlus.de/archives/24-DPotW-grub.html</link>
            <category>Debian-Packages</category>
    
    <comments>http://blog.zugschlus.de/archives/24-DPotW-grub.html#comments</comments>
    <wfw:comment>http://blog.zugschlus.de/wfwcomment.php?cid=24</wfw:comment>

    <slash:comments>2</slash:comments>
    <wfw:commentRss>http://blog.zugschlus.de/rss.php?version=2.0&amp;type=comments&amp;cid=24</wfw:commentRss>
    

    <author>mh+blog-zugschlus-de@zugschlus.de (Marc 'Zugschlus' Haber)</author>
    <content:encoded>
    &lt;p&gt;grub ist ein Bootmanager für Linux und andere Betriebssysteme mit durchaus bemerkenswerten Features&lt;/p&gt;

 &lt;p&gt;Bootmanager haben ein unauffälliges Leben. Man nimmt sie normalerweise nur dann wahr, wenn irgendwas schief läuft.
Für Linux auf x86-Systemen gibt es zwei, die Linux direkt booten können und die nennenswerte Verbreitung erlangt
haben: &lt;a onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;
href=&quot;http://blog.zugschlus.de/exit.php?url_id=1815&amp;amp;entry_id=24&quot; title=&quot;http://www.gnu.org/software/grub/grub.html&quot;  onmouseover=&quot;window.status=&#039;http://www.gnu.org/software/grub/grub.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;grub&lt;/a&gt; und das ältere lilo. lilo habe ich immer gehaßt - und wenn
es auch nur deswegen war, dass ich ständig vergessen habe, nach einem Kernelupdate lilo aufzurufen und deswegen das
System nicht mehr startfähig war.&lt;/p&gt;

&lt;p&gt;Grub macht das alles viel besser. Grub kann interaktiv sein, hat eine Kommandozeile, und kann Dateisysteme verstehen.
Das bedeutet, dass der Blocklisten-Hack bei Grub nur noch zum Tragen kommt, damit er seinen eigenen Code finden und
nachladen kann: Der schliesslich zu ladende Kernel kommt schon aus dem Dateisystem, und somit braucht man den
Bootmanager nicht mehr anzufassen, wenn man den Kernel getauscht hat. Für Hirnartisten ist das sehr praktisch: Ein
Schritt, den man weniger falsch machen kann.&lt;/p&gt;

&lt;p&gt;Von einem entfernbaren Medium wie einer Diskette gestartet, wirft grub einen auf eine Kommandozeile, auf der man die
wichtigsten Dinge direkt erledigen kann: Man kann grub auf einer Festplatte lauffähig installieren, oder ein
Betriebssystem booten. Sehr praktisch. Von einer Festplatte gebootet, liest grub eine Datei mit Kommandos, die z.B. ein
Menü verschiedener Optionen aufbauen und präsentieren kann. Per Leuchtbalken kann man dann auswählen, was man booten
möchte. &lt;/p&gt;

&lt;p&gt;Selbstverständlich kann man auch hier eingreifen, und den konkreten Bootvorgang auf Wunsch sehr komfortabel durch
Bearbeiten der in der Menüdatei hinterlegten Kommandos customizen. Besonders in Paniksituationen ist man damit sehr
flexibel; dieses Feature hat mir schon mehr als einmal den Arsch gerettet.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;Die &lt;a
onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot; href=&quot;http://blog.zugschlus.de/exit.php?url_id=1816&amp;amp;entry_id=24&quot; title=&quot;http://packages.debian.org/grub&quot;  onmouseover=&quot;window.status=&#039;http://packages.debian.org/grub&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Debian-Package&lt;/a&gt; von
grub geht noch einen Schritt weiter: Über Hooks in den Kernel-Paketen wird bei der Installation eines kernel-image.deb
sofort ein zum Kernel passender Eintrag im grub-Menü erzeugt, so dass man auch mehr als nur zwei Kernels booten
kann.&lt;/p&gt;

&lt;p&gt;Grub kann natürlich auch andere Betriebssysteme starten, muss bei den Systemen aus Redmond mangels
Standardkonformität dieser Systeme allerdings den Umweg über den eigenen Bootloader der Redmondware gehen.&lt;/p&gt;

&lt;p&gt;Unterstützung für serielle Konsole ist natürlich vorhanden und sehr komfortabel: Beim Booten wird zuerst parallel
auf &amp;#8220;richtiger&amp;#8221; und serieller Konsole ein Tastendruck (mit Timeout, versteht sich) erwartet, und dort wo die
erste Bedienhandlung erfolgt wird dann auch das grub-Menü gezeigt.&lt;/p&gt;

 
    </content:encoded>

    <pubDate>Sun, 19 Jun 2005 23:59:00 +0200</pubDate>
    <guid isPermaLink="false">http://blog.zugschlus.de/archives/24-guid.html</guid>
    <category>debian</category>
<category>grub</category>

</item>
<item>
    <title>stow - Packagemanagement für Arme</title>
    <link>http://blog.zugschlus.de/archives/58-stow-Packagemanagement-fuer-Arme.html</link>
            <category>Debian-Packages</category>
    
    <comments>http://blog.zugschlus.de/archives/58-stow-Packagemanagement-fuer-Arme.html#comments</comments>
    <wfw:comment>http://blog.zugschlus.de/wfwcomment.php?cid=58</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.zugschlus.de/rss.php?version=2.0&amp;type=comments&amp;cid=58</wfw:commentRss>
    

    <author>mh+blog-zugschlus-de@zugschlus.de (Marc 'Zugschlus' Haber)</author>
    <content:encoded>
    &lt;p&gt;&lt;a onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot; href=&quot;http://blog.zugschlus.de/exit.php?url_id=1818&amp;amp;entry_id=58&quot; title=&quot;http://www.gnu.org&quot;  onmouseover=&quot;window.status=&#039;http://www.gnu.org&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;GNU&lt;/a&gt; &lt;a
onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot; href=&quot;http://blog.zugschlus.de/exit.php?url_id=1821&amp;amp;entry_id=58&quot; title=&quot;http://packages.debian.org/stow&quot;  onmouseover=&quot;window.status=&#039;http://packages.debian.org/stow&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;stow&lt;/a&gt; erlaubt die
Installation von Software, die nicht aus einer &amp;#8220;richtigen&amp;#8221; Package kommt, ohne die unsäglichen Schmerzen,
die bei der Installation direkt nach &lt;tt&gt;/usr/local&lt;/tt&gt; entstehen.&lt;/p&gt;

 &lt;p&gt;Auf Systemen, die dem FHS gehorchen, landet aus Distributionspackages installierte Software üblicherweise in
&lt;tt&gt;/usr&lt;/tt&gt;. Lokal gebaute Software wird nach &lt;tt&gt;/usr/local&lt;/tt&gt; installiert. Dabei entsteht innerhalb
&lt;tt&gt;/usr/local&lt;/tt&gt; leicht das Problem, dass man die Übersicht darüber verliert, welche Datei zu welcher Package
gehört. Das Ergebnis ist ein schwer wartbares System, das einen Update-Albtraum darstellt.&lt;/p&gt;

&lt;p&gt;&lt;a onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot; href=&quot;http://blog.zugschlus.de/exit.php?url_id=1818&amp;amp;entry_id=58&quot; title=&quot;http://www.gnu.org&quot;  onmouseover=&quot;window.status=&#039;http://www.gnu.org&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;GNU&lt;/a&gt; &lt;a
onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot; href=&quot;http://blog.zugschlus.de/exit.php?url_id=1821&amp;amp;entry_id=58&quot; title=&quot;http://packages.debian.org/stow&quot;  onmouseover=&quot;window.status=&#039;http://packages.debian.org/stow&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;stow&lt;/a&gt; versucht
dieses Problem dadurch zu lösen, dass jede lokal gebaute Software in einen eigenen Tree unterhalb von
&lt;tt&gt;/usr/local/stow/[packagename]&lt;/tt&gt; installiert wird. Das Programm &lt;tt&gt;stow&lt;/tt&gt; legt dann Symlinks nach
&lt;tt&gt;/usr/local&lt;/tt&gt; an, damit die Files in den &amp;#8220;normalen&amp;#8221; Pfaden gefunden werden können.&lt;/p&gt;

&lt;p&gt;Über die Symlinks ist einfache Identifikation des Softwarepakets möglich, das für eine Datei
&amp;#8220;verantwortlich&amp;#8221; ist. Ebenso einfach ist die Deinstallation der Symlinks, so dass man eine Software
rückstandslos entsorgen kann. Insbesondere der Wechsel zwischen Versionen ist somit ohne Aufwand möglich, da einzelne
Versionen unter &lt;tt&gt;/usr/local/stow/[packagename]&lt;/tt&gt; installiert bleiben können, auch wenn sie gerade nicht nach
/usr/local verlinked sind.&lt;/p&gt;

&lt;p&gt;Am besten geeignet für die Installation in einem &lt;tt&gt;stow&lt;/tt&gt;-Directory sind Packages, die sich für die
Ausführung aus anderen Verzeichnissen kompilieren lassen als die, in die installiert wird. Packages, die
autoconf/automake verwenden, erfüllen diese Anforderung im allgemeinen.&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
./configure --prefix /usr/local
make
make install prefix=/usr/local/stow/[packagename]
cd /usr/local/stow
stow [packagename]&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Packages, deren Makefile keinen Prefix unterstützt, sollte man für die Ausführung aus
&lt;tt&gt;/usr/local/stow/[packagename]&lt;/tt&gt; übersetzen. Das ist zwar nicht schön, erfüllt aber in aller Regel ebenfalls
den Zweck. &lt;tt&gt;make install&lt;/tt&gt; sollte man mit einem Account ausführen, der nur in &lt;tt&gt;/usr/local/stow&lt;/tt&gt;, nicht
aber in den anderen Verzeichnissen unterhalb von &lt;tt&gt;/usr/local&lt;/tt&gt; schreiben darf - oder man prüft vor der
&amp;#8220;richtigen&amp;#8221; Installation mit &lt;tt&gt;make -n&lt;/tt&gt; install, ob der Installationscode auch das beabsichtigte
tut.&lt;/p&gt;

&lt;p&gt;GNU stow eignet sich insbesondere für die &amp;#8220;quick-and-dirty&amp;#8221; Installation von Software, für die es sich
nicht lohnt, eine &amp;#8220;richtige&amp;#8221; Package zu schnüren.&lt;/p&gt;

&lt;p&gt;In /usr/local/stow/[packagename] installierte Packages kann man durch tar recht einfach von einer Maschine auf
eine&lt;br /&gt;
andere verschieben, wenn man sich der fehlenden Features:&lt;/p&gt;



&lt;ul&gt;&lt;li&gt;Kein Dependency-Handling&lt;/li&gt;&lt;li&gt;kein conffile-Handling&lt;/li&gt;&lt;li&gt;keine Maintainer-Scripts&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;bewusst ist.&lt;/p&gt;

 
    </content:encoded>

    <pubDate>Sun, 12 Jun 2005 23:59:00 +0200</pubDate>
    <guid isPermaLink="false">http://blog.zugschlus.de/archives/58-guid.html</guid>
    <category>debian</category>
<category>stow</category>

</item>
<item>
    <title>DPotW: dpatch</title>
    <link>http://blog.zugschlus.de/archives/20-DPotW-dpatch.html</link>
            <category>Debian-Packages</category>
    
    <comments>http://blog.zugschlus.de/archives/20-DPotW-dpatch.html#comments</comments>
    <wfw:comment>http://blog.zugschlus.de/wfwcomment.php?cid=20</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.zugschlus.de/rss.php?version=2.0&amp;type=comments&amp;cid=20</wfw:commentRss>
    

    <author>mh+blog-zugschlus-de@zugschlus.de (Marc 'Zugschlus' Haber)</author>
    <content:encoded>
    &lt;p&gt;&lt;a href=&quot;http://blog.zugschlus.de/exit.php?url_id=1822&amp;amp;entry_id=20&quot; title=&quot;http://packages.debian.org/dpatch&quot;  onmouseover=&quot;window.status=&#039;http://packages.debian.org/dpatch&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Dpatch&lt;/a&gt; ist
ein Tool, das einem Debian-Maintainer die Arbeit kolossal einfach macht.&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;Patchsets können zusammen gehörend verwaltet werden&lt;/li&gt;&lt;li&gt;Die Upstream-Sourcen bleiben unverändert, auch
wenn sie verändert werden&lt;/li&gt;&lt;li&gt;Man braucht nur noch &lt;tt&gt;debian/&lt;/tt&gt; in einem Versionskontrollsystem
haben&lt;/li&gt;&lt;li&gt;Die Anwendung von Patches kann zur Bauzeit kontrolliert werden&lt;/li&gt;&lt;/ul&gt;

 &lt;p&gt;Beim Bau von debian-Packages ist das Unterverzeichnis &lt;tt&gt;debian/&lt;/tt&gt; die Domäne des Maintainers. Manchmal aber
muss er auch ausserhalb des Verzeichnisses Änderungen vornehmen. Klassisch tut er dies direkt, und die Änderungen
landen dann auch direkt im Debian-&lt;tt&gt;.diff.gz&lt;/tt&gt;. Funktioniert, und verletzt nicht das Prinzip der &amp;#8220;Pristine
Sources&amp;#8221;, da das &lt;tt&gt;.tar.gz&lt;/tt&gt; des Upstreams unangetastet bleibt.&lt;/p&gt;

&lt;p&gt;Wenn man aber nun - z.B. bei einem besonders unkooperativen Upstream - viele Änderungen an der Software vornehmen
muss, wird das Verfahren schnell unübersichtlich. Man wird also die gesamte Package in ein Versionskontrollsystem
einchecken, und hat dann nur noch bei Upstream-Updates ungefähr unendliche Schmerzen. Jedenfalls, wenn man mit CVS nur
über eine lange Geschichte der Abneigung verbunden ist und beim mergen von Changes immer nur Zerstörung erzeugt. Auch
ist es bei diesem Ansatz schwer, zusammengehörige Änderungen auch zusammen zu verwalten, und für Änderungen, die nur
unter gewissen Umständen (z.B. auf gewissen Architekturen) notwendig sind, scriptet man sich einen Wolf.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://blog.zugschlus.de/exit.php?url_id=1822&amp;amp;entry_id=20&quot; title=&quot;http://packages.debian.org/dpatch&quot;  onmouseover=&quot;window.status=&#039;http://packages.debian.org/dpatch&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Dpatch&lt;/a&gt;
löst einige dieser Probleme. Dpatch ist ein System, das es möglich macht, beim Packagebau automatisch Patches auf die
Package anzuwenden. Die Patches liegen dabei im Verzeichnis &lt;tt&gt;debian/patches&lt;/tt&gt;. Über eine Steuerdatei kann
ausgewählt werden, welcher Patch angewendet werden soll, und die die Patches selbst ein Shellscript enthalten, kann
auch der Patch selbst entscheiden, ob er angewendet werden will oder nicht.&lt;/p&gt;

&lt;p&gt;Dadurch, dass die Patches innerhalb des &lt;tt&gt;debian/&lt;/tt&gt;-Verzeichnisses liegen, reicht es völlig aus, dieses
Verzeichnis unter eigener Versionskontrolle zu haben, was Upstream-Updates drastisch erleichtert. Man muss zwar immer
noch aufpassen, dass die eigenen Patches auch auf die neue Upstream-Version anwendbar sind, der ganze Prozess ist aber
um Längen übersichtlicher. Geeignete Build-Scripts (&lt;a href=&quot;http://blog.zugschlus.de/exit.php?url_id=1824&amp;amp;entry_id=20&quot; title=&quot;http://packages.debian.org/svn-buildpackage&quot;  onmouseover=&quot;window.status=&#039;http://packages.debian.org/svn-buildpackage&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;
onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;svn-buildpackage&lt;/a&gt; kann das zum Beispiel) können das
Upstream &lt;tt&gt;.tar.gz&lt;/tt&gt; automatisch auspacken, so dass man auch diese Arbeit nicht manuell tun muss.&lt;/p&gt;

&lt;p&gt;Auch die Erstellung und Pflege der Patches wird durch &lt;tt&gt;dpatch&lt;/tt&gt; erleichtert. &lt;tt&gt;dpatch-edit-patch&lt;/tt&gt; macht
Dir eine Arbeitskopie des aktuellen Verzeichnisses und gibt Dir eine Shell innerhalb dieser Arbeitskopie. Nachdem Du
Deine Änderungen gemacht hast und diese Shell beendest, werden die von Dir an der Arbeitskopie durchgeführten
Änderungen zu einem Patch zusammengeschnürt und an die richtige Stelle ins &lt;tt&gt;debian/&lt;/tt&gt;-Verzeichnis geworfen. Auch
hier kann optional ein Upstream-&lt;tt&gt;.tar.gz&lt;/tt&gt; ausgepackt werden. Feine Sache das, die obendrein auch noch dafür
sorgt, dass thematisch zusammengehörige Änderungen zusammen in einem Patchfile landen, das man dann auch benutzen
kann, um die Änderung an den Upstream weiterzureichen.&lt;/p&gt;

&lt;p&gt;Dieser Artikel ist nicht so ganz uneigennützig: Ich bin Member des Dpatch Maintainer Teams, und eine neue, erheblich
erweiterte Version von Dpatch ist ab heute abend in Debian unstable. Please test! &lt;/p&gt; 
    </content:encoded>

    <pubDate>Tue, 07 Jun 2005 16:51:00 +0200</pubDate>
    <guid isPermaLink="false">http://blog.zugschlus.de/archives/20-guid.html</guid>
    <category>debian</category>
<category>dpatch</category>

</item>
<item>
    <title>DPotW: cdbs</title>
    <link>http://blog.zugschlus.de/archives/21-DPotW-cdbs.html</link>
            <category>Debian-Packages</category>
    
    <comments>http://blog.zugschlus.de/archives/21-DPotW-cdbs.html#comments</comments>
    <wfw:comment>http://blog.zugschlus.de/wfwcomment.php?cid=21</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.zugschlus.de/rss.php?version=2.0&amp;type=comments&amp;cid=21</wfw:commentRss>
    

    <author>mh+blog-zugschlus-de@zugschlus.de (Marc 'Zugschlus' Haber)</author>
    <content:encoded>
    &lt;p&gt;Eine durchaus umstrittene Debian-Package ist &lt;tt&gt;&lt;a href=&quot;http://blog.zugschlus.de/exit.php?url_id=1829&amp;amp;entry_id=21&quot; title=&quot;http://packages.debian.org/cdbs&quot;  onmouseover=&quot;window.status=&#039;http://packages.debian.org/cdbs&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;cdbs&lt;/a&gt;&lt;/tt&gt;, das Common
Debian Build System, was die Erstellung von Packages deutlich erleichtert.&lt;/p&gt;

 &lt;p&gt;Wenn man sich die &lt;a href=&quot;http://blog.zugschlus.de/exit.php?url_id=1826&amp;amp;entry_id=21&quot; title=&quot;http://www.debian.org/doc/debian-policy/&quot;  onmouseover=&quot;window.status=&#039;http://www.debian.org/doc/debian-policy/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Debian-Policy&lt;/a&gt; genauer anguckt, sieht man,
wie hoch die Anforderungen an das main package building script,&lt;tt&gt;&lt;a
href=&quot;http://blog.zugschlus.de/exit.php?url_id=1827&amp;amp;entry_id=21&quot; title=&quot;http://www.debian.org/doc/debian-policy/ch-source.html#s-debianrules&quot;  onmouseover=&quot;window.status=&#039;http://www.debian.org/doc/debian-policy/ch-source.html#s-debianrules&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;debian/rules&lt;/a&gt;&lt;/tt&gt;, sind. Selbst das
&lt;tt&gt;debian/rules&lt;/tt&gt; aus &lt;a href=&quot;http://blog.zugschlus.de/exit.php?url_id=1828&amp;amp;entry_id=21&quot; title=&quot;http://packages.debian.org/hello-debhelper&quot;  onmouseover=&quot;window.status=&#039;http://packages.debian.org/hello-debhelper&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;hello-debhelper&lt;/a&gt; ist über 50 Zeilen
lang. Das ist nicht nur bei der Erstellung viel Arbeit, sondern sorgt bei Änderungen an der Debian-Policy für graue
Haare, weil man als Maintainer die Änderungen manuell in jeder Package nachziehen muss.&lt;/p&gt;

&lt;p&gt;&lt;tt&gt;&lt;a href=&quot;http://blog.zugschlus.de/exit.php?url_id=1829&amp;amp;entry_id=21&quot; title=&quot;http://packages.debian.org/cdbs&quot;  onmouseover=&quot;window.status=&#039;http://packages.debian.org/cdbs&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;cdbs&lt;/a&gt;&lt;/tt&gt; erleichtert dies erheblich. Die Package enthält eine
Sammlung von &lt;tt&gt;make&lt;/tt&gt;-Include-Files, die für &amp;#8220;normale&amp;#8221; Packages die &lt;tt&gt;debian/rules&lt;/tt&gt;-Datei
zusammenschnurren lassen.&lt;/p&gt;

&lt;p&gt;Für eine Package, die sich straghtforward mit dem üblichen &amp;#8220;Dreikampf&amp;#8221; &lt;tt&gt;configure; make; make
install&lt;/tt&gt;&lt;bauen und installieren lässt, besteht &lt;tt&gt;debian/rules&lt;/tt&gt; mit cdbs nur noch aus drei Zeilen:&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
#!/usr/bin/make -f
include /usr/share/cdbs/1/rules/debhelper.mk
include /usr/share/cdbs/1/class/autotools.mk&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Der Vorteil an der Geschichte ist, dass bei Policy-Änderungen keine lokale Arbeit notwendig ist. Der Nachteil an der
Geschichte ist, dass man nicht mehr so detailliert eingreifen kann, wie man es manchmal will. Man kann zwar an vielen
Stellen mit Variablen in den Bau der Package eingreifen, aber was die &lt;tt&gt;cdbs&lt;/tt&gt;-Macher nicht vorgesehen haben, geht
auch nicht. Somit ist &lt;tt&gt;cdbs&lt;/tt&gt; sicher nicht das Tool der Wahl für komplexe Packages wie &lt;tt&gt;exim4&lt;/tt&gt;, aber so
simple Dinge wie &lt;tt&gt;rageircd&lt;/tt&gt;, &lt;tt&gt;apg&lt;/tt&gt; oder &lt;tt&gt;ser2net&lt;/tt&gt; lassen sich mit &lt;tt&gt;cdbs&lt;/tt&gt; einfachst
bauen.&lt;/p&gt;

&lt;p&gt;Einen typischen Debian-Nachteil hat &lt;tt&gt;cdbs&lt;/tt&gt; ebenfalls: Es ist verhältnismäßig zurückhaltend dokumentiert.
Ohne Beispielcode ist man aufgeschmissen. Die Dokumisere hat sich allerdings deutlich gebessert, seit das &lt;a
href=&quot;http://blog.zugschlus.de/exit.php?url_id=1830&amp;amp;entry_id=21&quot; title=&quot;https://wiki.duckcorp.org/DebianPackagingTutorial_2fCDBS&quot;  onmouseover=&quot;window.status=&#039;https://wiki.duckcorp.org/DebianPackagingTutorial_2fCDBS&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;CDBS-Wiki&lt;/a&gt; online gegangen ist. Lektüre, die sich
unbedingt lohnt.&lt;/p&gt;

 
    </content:encoded>

    <pubDate>Sun, 29 May 2005 17:00:00 +0200</pubDate>
    <guid isPermaLink="false">http://blog.zugschlus.de/archives/21-guid.html</guid>
    <category>cdbs</category>
<category>debian</category>

</item>
<item>
    <title>DPotW: guessnet-ifupdown</title>
    <link>http://blog.zugschlus.de/archives/22-DPotW-guessnet-ifupdown.html</link>
            <category>Debian-Packages</category>
    
    <comments>http://blog.zugschlus.de/archives/22-DPotW-guessnet-ifupdown.html#comments</comments>
    <wfw:comment>http://blog.zugschlus.de/wfwcomment.php?cid=22</wfw:comment>

    <slash:comments>3</slash:comments>
    <wfw:commentRss>http://blog.zugschlus.de/rss.php?version=2.0&amp;type=comments&amp;cid=22</wfw:commentRss>
    

    <author>mh+blog-zugschlus-de@zugschlus.de (Marc 'Zugschlus' Haber)</author>
    <content:encoded>
    &lt;p&gt;&lt;tt&gt;guessnet-ifupdown&lt;/tt&gt; ist die von mir präferierte Lösung für das Problem eines mobilen Hosts, der mal dort
und mal dort ans Netz angeschlossen wird, und die DHCP-Server in den verschiedenen Netzen einem zwar IP und
Defaultgateway geben mögen, aber andere Einstellungen trotzdem lokal geregelt werden müssen.&lt;/p&gt;

 &lt;p&gt;Ich mag &lt;tt&gt;guessnet-ifupdown&lt;/tt&gt; aus der &lt;tt&gt;&lt;a onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;
href=&quot;http://blog.zugschlus.de/exit.php?url_id=1832&amp;amp;entry_id=22&quot; title=&quot;http://packages.debian.org/guessnet&quot;  onmouseover=&quot;window.status=&#039;http://packages.debian.org/guessnet&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;guessnet&lt;/a&gt;&lt;/tt&gt;-Package deswegen,  deswegen, weil es sich schön in die
Debian-Philosophie der Netzkonfiguration einfügt: Es wird über &lt;tt&gt;/etc/network/interfaces&lt;/tt&gt;&lt;span
style=&quot;font-family: monospace;&quot;&gt; &lt;/span&gt;konfiguriert:&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
mapping eth0
        script /usr/sbin/guessnet-ifupdown
        map default: default
        map timeout: 3
        map verbose: true

iface l21 inet dhcp
        scheme l21
        route_silo silo unreachable
        route_lilo lilo unreachable
        exim4_smarthost smtp 25
        web_proxy web.proxy 8080
        ntp ntp
        cron_apt yes
        cups yes
        test-peer address 192.168.130.1

iface expensive inet manual
        scheme expensive
        route_silo silo unreachable
        route_lilo lilo unreachable
        exim4_smarthost q.bofh.de 25
        web_proxy none
        cron_apt refrain

iface disconnected inet manual
        scheme disconnected
        route_unreach 0.0.0.0/0 unreachable
        up ip link set dev eth0 down
        exim4_smarthost defer_always
        web_proxy none
        test missing-cable&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;Zusätzlich verwende ich &lt;tt&gt;&lt;a onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;
href=&quot;http://blog.zugschlus.de/exit.php?url_id=1833&amp;amp;entry_id=22&quot; title=&quot;http://packages.debian.org/ifplugd&quot;  onmouseover=&quot;window.status=&#039;http://packages.debian.org/ifplugd&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;ifplugd&lt;/a&gt;&lt;/tt&gt;, um das Interface beim Einstecken des Netzwerkkabels
&amp;#8220;up&amp;#8221; zu setzen. In der Folge wird guessnet-ifupdown aufgerufen, das einige Prüfungen durchführt (das sind
die &lt;tt&gt;test&lt;/tt&gt;-Klauseln in der &lt;tt&gt;/e/n/i&lt;/tt&gt;). Als Tests stehen zur Verfügung:&lt;/p&gt;&lt;p /&gt;&lt;ul&gt;&lt;li&gt;Wird ein System mit
bestimmter IP/MAC-Adresse gefunden?&lt;/li&gt;&lt;li&gt;Ist ein Kabel gesteckt?&lt;/li&gt;&lt;li&gt;Welchen Wert liefert ein Kommando
zurück?&lt;/li&gt;&lt;li&gt;Ist ein PPPoE&lt;a href=&quot;http://blog.zugschlus.de/exit.php?url_id=1834&amp;amp;entry_id=22&quot; title=&quot;http://example.com/new.php?page=PPPoE&quot;  onmouseover=&quot;window.status=&#039;http://example.com/new.php?page=PPPoE&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;?&lt;/a&gt;-Server im Netz?&lt;/li&gt;&lt;/ul&gt;



&lt;p&gt;Abhängig von den Tests wird das Interface dann so initialisiert, wie in der entsprechenden Stanza genannt. In meinem
Beispiel L21 ist das DHCP, wobei es auch möglich ist, bei Abwesenheit eines DHCP-Servers nach einem System mit
bestimmter IP-Adresse zu suchen, um dann eine zum Gegenstück passende statische IP-Adresse zu konfigurieren.&lt;/p&gt;&lt;p&gt;Die
anderen Zeilen in den Stanzas steuern Scripte, die in &lt;tt&gt;/etc/network/if-up.d&lt;/tt&gt; und &lt;tt&gt;/etc/network/if-down.d&lt;/tt&gt;
dafür sorgen, dass die Einstellungen bei der Interfaceinitialisierung ins System geprügelt werden. Hier ein
Beispiel:&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
$ cat web-proxy
#!/bin/bash

# Environment:
#  MODE = { start | stop }
#  IF_WEB_PROXY = hostname port
# TODO: Exceptions

USEFILE=&amp;#8220;/etc/use-proxy&amp;#8221;
PACFILE=&amp;#8220;/etc/proxy.pac&amp;#8221;

if [ -z &amp;#8220;$IF_WEB_PROXY&amp;#8221; ]; then
  exit 0
fi

if [ &amp;#8220;$MODE&amp;#8221; = &amp;#8220;stop&amp;#8221; ]; then
  rm -f $USEFILE
  rm -f $PACFILE
  exit 0
fi

if [ &amp;#8220;$IF_WEB_PROXY&amp;#8221; = &amp;#8220;none&amp;#8221; ]; then
  rm -f $USEFILE
  rm -f $PACFILE
  exit 0
fi

PORT=&amp;#8220;${IF_WEB_PROXY#* }&amp;#8221;
HOST=&amp;#8220;${IF_WEB_PROXY% *}&amp;#8221;

cat &amp;lt;&lt;eof&gt; $USEFILE&lt;br /&gt;#!/bin/bash&lt;br /&gt;&lt;br /&gt;export http_proxy=http://$HOST:$PORT/&lt;br /&gt;export
ftp_proxy=$http_proxy&lt;br /&gt;export no_proxy=127.0.0.1,localhost&lt;br /&gt;# the following is a local fix for #255742&lt;br
/&gt;export NO_PROXY=&amp;#8220;$no_proxy&amp;#8221;&lt;br /&gt;EOF&lt;br /&gt;&lt;br /&gt;cat &amp;lt;&lt;eof&gt; $PACFILE&lt;br /&gt;function FindProxyForURL(url,
host) {&lt;br /&gt;  if( isInNet(host, &amp;#8220;127.0.0.1&amp;#8221;, &amp;#8220;255.0.0.0&amp;#8221;)) {&lt;br /&gt;    return
&amp;#8220;DIRECT&amp;#8221;;&lt;br /&gt;  } else {&lt;br /&gt;    return &amp;#8220;PROXY $HOST:$PORT&amp;#8221;;&lt;br /&gt;  }&lt;br /&gt;}&lt;br
/&gt;EOF&lt;/eof&gt;&lt;/eof&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Das Script steht sowohl in if-up.d als auch in if-down.d und setzt abhängig von den aus &lt;tt&gt;/e/n/i&lt;/tt&gt; übergebenen
Werten die entsprechenden Daten in die Dateien &lt;tt&gt;/etc/use-proxy&lt;/tt&gt; und &lt;tt&gt;/etc/proxy.pac&lt;/tt&gt;. Das eine wird von
den User-Init-Scripts gesourced, das andere steht als file://-URL in den Proxyeinstellungen der Browser.&lt;/p&gt;

&lt;p&gt;Die anderen Scripts sind auf Anfrage verfügbar, und werden von mir vielleicht irgendwann mal zur
&lt;tt&gt;guessnet&lt;/tt&gt;-Package als examples veröffentlicht.&lt;/p&gt;

&lt;p&gt;Das Interface &amp;#8220;expensive&amp;#8221; wird nicht von guessnet bedient, sondern steht manuell als &amp;#8220;ifup
expensive&amp;#8221; in &lt;tt&gt;/etc/ppp/ip-up.d&lt;/tt&gt; für &amp;#8220;Provider&amp;#8221;, die &amp;#8220;teuer&amp;#8221; sind, also z.B. die
GPRS-Verbindung. Ich verhindere somit, dass trafficintensive Dinge wie &lt;tt&gt;cron-apt&lt;/tt&gt;&lt;span style=&quot;font-family:
monospace;&quot;&gt; &lt;/span&gt;gerade dann loslaufen, wenn IP &lt;u&gt;richtig&lt;/u&gt; teuer ist. Da die Methode &amp;#8220;manual&amp;#8221;
verwendet wird und keine Änderungen an der direkten Netzkonfiguration durchgeführt werden, ist der
&amp;#8220;ifup&amp;#8221;-Aufruf aus der PPP-Initialisierungsphase unschädlich.&lt;/p&gt;

&lt;p&gt;Noch nicht angegangen bin ich die Automatik für wireless LAN, die wegen der notwendigen Verschlüsselungsmechanismen
nicht 1:1 wie ein Ethernetinterface abbildbar ist. Dafür gibt es mit &lt;tt&gt;&lt;a
href=&quot;http://blog.zugschlus.de/exit.php?url_id=1835&amp;amp;entry_id=22&quot; title=&quot;http://packages.debian.org/waproamd&quot;  onmouseover=&quot;window.status=&#039;http://packages.debian.org/waproamd&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;waproamd&lt;/a&gt;&lt;/tt&gt; auch einen gut integrierenden Helfer, den ich allerdings
bisher noch nicht ausprobiert habe: Wireless ist für mich nach wie vor kein Vorrangthema.&lt;/p&gt;

 
    </content:encoded>

    <pubDate>Sun, 22 May 2005 15:41:00 +0200</pubDate>
    <guid isPermaLink="false">http://blog.zugschlus.de/archives/22-guid.html</guid>
    <category>debian</category>
<category>guessnet</category>
<category>ifupdown</category>

</item>
<item>
    <title>DPotW: cron-apt</title>
    <link>http://blog.zugschlus.de/archives/19-DPotW-cron-apt.html</link>
            <category>Debian-Packages</category>
    
    <comments>http://blog.zugschlus.de/archives/19-DPotW-cron-apt.html#comments</comments>
    <wfw:comment>http://blog.zugschlus.de/wfwcomment.php?cid=19</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.zugschlus.de/rss.php?version=2.0&amp;type=comments&amp;cid=19</wfw:commentRss>
    

    <author>mh+blog-zugschlus-de@zugschlus.de (Marc 'Zugschlus' Haber)</author>
    <content:encoded>
    &lt;p&gt;Die dieswöchige Debian-Package of the Week ist &lt;tt&gt;&lt;a href=&quot;http://blog.zugschlus.de/exit.php?url_id=1840&amp;amp;entry_id=19&quot; title=&quot;http://packages.debian.org/cron-apt&quot;  onmouseover=&quot;window.status=&#039;http://packages.debian.org/cron-apt&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;cron-apt&lt;/a&gt;&lt;/tt&gt;,
ein Tool, mit dessen Hilfe unter anderem das automatische Ausrollen von Security-Updates auf eine große Zahl von
Systemen drastisch vereinfacht wird.&lt;/p&gt;

 &lt;p&gt;Eigentlich ist das, was &lt;tt&gt;&lt;a href=&quot;http://blog.zugschlus.de/exit.php?url_id=1840&amp;amp;entry_id=19&quot; title=&quot;http://packages.debian.org/cron-apt&quot;  onmouseover=&quot;window.status=&#039;http://packages.debian.org/cron-apt&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;cron-apt&lt;/a&gt;&lt;/tt&gt; tut, denkbar einfach: Es
ruft aus dem &lt;tt&gt;&lt;a href=&quot;http://blog.zugschlus.de/exit.php?url_id=1842&amp;amp;entry_id=19&quot; title=&quot;http://packages.debian.org/cron&quot;  onmouseover=&quot;window.status=&#039;http://packages.debian.org/cron&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;cron&lt;/a&gt;&lt;/tt&gt; regelmäßig die Kombination &lt;tt&gt;&lt;a
href=&quot;http://blog.zugschlus.de/exit.php?url_id=1846&amp;amp;entry_id=19&quot; title=&quot;http://packages.debian.org/apt&quot;  onmouseover=&quot;window.status=&#039;http://packages.debian.org/apt&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;apt&lt;/a&gt;-get update; &lt;a href=&quot;http://blog.zugschlus.de/exit.php?url_id=1846&amp;amp;entry_id=19&quot; title=&quot;http://packages.debian.org/apt&quot;  onmouseover=&quot;window.status=&#039;http://packages.debian.org/apt&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;apt&lt;/a&gt;-get
--download-only dist-upgrade&lt;/tt&gt; auf und stellt dem Systemverwalter das Ergebnis per Mail zu.&lt;/p&gt;

&lt;p&gt;Was so einfach klingt, ist in der Praxis sehr hilfreich, weil auf diese Weise jedes einzelne System ständig
überprüft, ob es aktuell ist. Sprich, man kann beim Update ruhig einzelne Systeme vergessen, sie brüllen Dich beim
nächsten &lt;tt&gt;cron&lt;/tt&gt;-Zyklus selbsttätig wieder an, und das so lange, bis Du sie mit dem Update versorgt hast.&lt;/p&gt;

&lt;p&gt;Obwohl &lt;tt&gt;cron-apt&lt;/tt&gt; natürlich die Updates auch gleich installieren könnte, habe ich mich zu diesem Schritt
bisher noch nicht getraut: Meine &lt;tt&gt;cron-apt&lt;/tt&gt;s laden die Updates sofort nach Verfügbarkeit auf das Zielsystem; die
eigentliche Installation mache ich aber noch manuell. Dabei kann ich mir gut vorstellen, dass die
Konfigurationsfähigkeit es hergeben müsste, das unkritische Packages wie das stündliche Virenpatternupdate sofort
auch installiert werden. Probiert habe ich das freilich bisher genausowenig wie die Verwendung von &lt;tt&gt;&lt;a
href=&quot;http://blog.zugschlus.de/exit.php?url_id=1845&amp;amp;entry_id=19&quot; title=&quot;http://packages.debian.org/aptitude&quot;  onmouseover=&quot;window.status=&#039;http://packages.debian.org/aptitude&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;aptitude&lt;/a&gt;&lt;/tt&gt; anstelle des klassischen &lt;a
href=&quot;http://blog.zugschlus.de/exit.php?url_id=1846&amp;amp;entry_id=19&quot; title=&quot;http://packages.debian.org/apt&quot;  onmouseover=&quot;window.status=&#039;http://packages.debian.org/apt&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;&lt;tt&gt;apt-get&lt;/tt&gt;&lt;/a&gt;, was ab sarge aktuell werden könnte.&lt;/p&gt;



&lt;p&gt;Um die Last auf den Mirrors besser zu verteilen, wartet ein aufgerufenes &lt;tt&gt;cron-apt&lt;/tt&gt; erstmal eine zufällige
Zeit, bevor es mit dem Download beginnt.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;Was ich auch sehr nett finde, ist die Möglichkeit, nur dann eine
Mail zu schicken, wenn sich die Ausgabe des Installationstools gegenüber dem letzten Aufruf geändert hat. Das
ermöglicht häufigen Aufruf, ohne die Mailbox zu bombardieren.&lt;/p&gt;

&lt;p&gt;&lt;tt&gt;cron-apt&lt;/tt&gt; nützt sowohl auf stable- als auch auf unstable-Systemen. Auf stable-Systemen erhält man von
cron-apt Informationen, wenn neue Security-Updates bzw. Point Releases verfügbar sind. Oft sind die Mails von
&lt;tt&gt;cron-apt &lt;/tt&gt;schon da, bevor überhaupt das Advisory erschienen ist. Auf unstable-Systemen kommen natürlich mehr
Mails, die einen daran erinnern, dass das lokale unstable nicht mehr bleeding edge ist.&lt;/p&gt;

&lt;p&gt;Zum Abschluss hier noch meine cron-apt-Konfiguration, die stündlich nach Updates guckt, diese auch sofort
herunterlädt (aber nicht installiert), aber nur bei Veränderungen eine Mail schickt. Für den Fall, dass das Update
nicht sofort ausgeführt wurde, gibt es einmal nächtlich eine Erinnerung. Bedingt durch das automatische Herunterladen
und den Diff-Check gibt es bei neu erschienenen Packages zwei Mails im Stundenabstand - die erste zeigt, dass neue
Packages da sind und dass sie heruntergeladen wurden, die zweite zeigt dann nur noch, dass neue Packages auf
Installation warten - und nach erfolgter Installation auch eine &amp;#8220;Bestätigung&amp;#8221;, dass nix neues mehr auf
Installation wartet. Damit wird Teamwork unterstützt, weil man sieht, dass jemand anders schon aktiv war - und das ganz
automatisch.&lt;/p&gt;

&lt;p&gt;&lt;tt&gt;/etc/cron.d/cron-apt&lt;/tt&gt;&lt;br /&gt;

&lt;/p&gt;&lt;pre&gt;&lt;code&gt;
0 4 &lt;strong&gt; &lt;/strong&gt; &lt;strong&gt;  root    test -x /usr/sbin/cron-apt &amp;amp;&amp;amp; /usr/sbin/cron-apt
0 &lt;/strong&gt; &lt;strong&gt; &lt;/strong&gt; *  root    test -x /usr/sbin/cron-apt &amp;amp;&amp;amp; /usr/sbin/cron-apt /etc/cron-apt/config
/etc/cron-apt/config-hourly&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;

&lt;/p&gt;&lt;p&gt;&lt;tt&gt;/etc/cron-apt/config&lt;/tt&gt;&lt;br /&gt;

&lt;/p&gt;&lt;pre&gt;&lt;code&gt;
MAILTO=&amp;#8220;mh+$(hostname --fqdn)-cron-apt@zugschlus.de&amp;#8221;
MAILON=&amp;#8220;upgrade&amp;#8221;
DIFFONCHANGES=prepend&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;

&lt;/p&gt;&lt;p&gt;&lt;tt&gt;/etc/cron-apt/config-hourly&lt;/tt&gt;&lt;br /&gt;

&lt;/p&gt;&lt;pre&gt;&lt;code&gt;
MAILON=&amp;#8220;changes&amp;#8221;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;

&lt;/p&gt; 
    </content:encoded>

    <pubDate>Sun, 15 May 2005 11:57:00 +0200</pubDate>
    <guid isPermaLink="false">http://blog.zugschlus.de/archives/19-guid.html</guid>
    <category>cron-apt</category>
<category>debian</category>

</item>
<item>
    <title>DPotW: file-rc</title>
    <link>http://blog.zugschlus.de/archives/23-DPotW-file-rc.html</link>
            <category>Debian-Packages</category>
    
    <comments>http://blog.zugschlus.de/archives/23-DPotW-file-rc.html#comments</comments>
    <wfw:comment>http://blog.zugschlus.de/wfwcomment.php?cid=23</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>http://blog.zugschlus.de/rss.php?version=2.0&amp;type=comments&amp;cid=23</wfw:commentRss>
    

    <author>mh+blog-zugschlus-de@zugschlus.de (Marc 'Zugschlus' Haber)</author>
    <content:encoded>
    &lt;p&gt;file-rc ist ein Ersatz für die unter SysV-Derivaten und Linux üblichen Linkfarmen, die sich inzwischen halbwegs
einheitlich unter /etc/rcx.d angesammelt haben. Statt Linkfarm gibt es ein einziges Konfigurationsfile,
&lt;tt&gt;/etc/runlevel.conf&lt;/tt&gt;&lt;/p&gt;

 &lt;p&gt;Ein Ausschnitt aus meiner &lt;tt&gt;/etc/runlevel.conf&lt;/tt&gt; sieht so aus:&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
# This file was automatically generated by /usr/share/file-rc/rclink2file.sh.
# You can use your favourite editor or update-rc.d(8) to modify it.
# Read runlevel.conf(5) man page for more information about this file.
#
# Format:
# &amp;lt;sort&amp;gt; &amp;lt;off-&amp;gt; &amp;lt;on-levels&amp;gt;     &amp;lt;command&amp;gt;
01      0,1,6   -               /etc/init.d/kdm
02      -       S               /etc/init.d/mountvirtfs
05      -       1               /etc/init.d/single
05      -       S               /etc/init.d/bootlogd
05      -       S               /etc/init.d/initrd-tools.sh
05      -       S               /etc/init.d/keymap.sh
20      0,1,6   2,3,4,5         /etc/init.d/console-log
20      0,1,6   2,3,4,5         /etc/init.d/exim4
20      0,1,6   2,3,4,5         /etc/init.d/ifplugd
20      0,1,6   2,3,4,5         /etc/init.d/inetd
20      0,1,6   2,3,4,5         /etc/init.d/makedev
20      0,1,6   2,3,4,5         /etc/init.d/pcmcia
20      0,1,6   2,3,4,5         /etc/init.d/ssh
20      0,1,2,3,4,5,6   -       /etc/init.d/inn2
20      0,1,6   2,3,4,5         /etc/init.d/xinetd
20      0,1,2,3,4,5,6   -       /etc/init.d/snmpd
20      0,1,2,3,4,5,6   -       /etc/init.d/smokeping
20      0,1,6   -               /etc/init.d/munin-node
20      0,1,2,3,4,5,6   -       /etc/init.d/torrus-common
23      0,1,2,3,4,5,6   -       /etc/init.d/ntp-server&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Ich denke, man sieht schön deutlich, wie das Ding gemacht ist. Jede Ziffer in den Spalten zwei und drei ersetzt
einen&lt;br /&gt;
Link in der Linkfarm.&lt;/p&gt;

&lt;p&gt;file-rc hat volle Unterstüzung des Debian-Abstraktionslayers, d.h. Packages, die &lt;tt&gt;update-rc.d&lt;/tt&gt; und
&lt;tt&gt;invoke-rc.d&lt;/tt&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt; &lt;/span&gt;verwenden, merken nicht einmal, dass sie keine
Symlinks verarbeiten. Leider hat das Debian-Abstraktionslayer die &lt;a
href=&quot;http://blog.zugschlus.de/exit.php?url_id=1847&amp;amp;entry_id=23&quot; title=&quot;http://blog.zugschlus.de/archives/18-Do-we-need-a-read-rc.d.html&quot;  onmouseover=&quot;window.status=&#039;http://blog.zugschlus.de/archives/18-Do-we-need-a-read-rc.d.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;);
return false;&quot;&gt;bekannte, lästige Lücke&lt;/a&gt;, die einen dazu zwingt, manchmal doch auf die Symlinks zuzugreifen.&lt;/p&gt;

&lt;p&gt;Bei der Installation von file-rc wird die vorgefundene Linkfarm 1:1 in eine &lt;tt&gt;runlevel.conf&lt;/tt&gt; umgesetzt, und
andersrum, wobei ich das &amp;#8220;andersrum&amp;#8221; mangels Deinstallation noch nie wirklich ausprobiert habe.&lt;/p&gt;

&lt;p&gt;Wie ich zu file-rc gekommen bin? Bei meiner ersten Debian-Installation (hamm, wenn sich noch jemand erinnert) habe
ich noch die Liste der Packages vollständig durchgeschaut, und fand die Description interessant - ohne zu wissen, dass
ich mir gleich mein ganzes System umstelle. Später hielt ich file-rc für den Default, und war ganz entsetzt, als ich
auf meiner zweiten Debian-Installation (slink, falls sich, Ihr wisst schon) wieder die althergebrachte Link-Farm
fand.&lt;/p&gt; 
    </content:encoded>

    <pubDate>Mon, 09 May 2005 12:34:25 +0200</pubDate>
    <guid isPermaLink="false">http://blog.zugschlus.de/archives/23-guid.html</guid>
    <category>debian</category>
<category>file-rc</category>

</item>

</channel>
</rss>