{"id":5241,"date":"2011-12-14T18:00:04","date_gmt":"2011-12-14T17:00:04","guid":{"rendered":"https:\/\/www.gambaru.de\/blog\/?p=5241"},"modified":"2019-10-15T00:45:08","modified_gmt":"2019-10-14T22:45:08","slug":"mehrere-pbuilder-und-hooks-rxvt-unicode-256color-von-debian-sid-nach-squeeze-backporten","status":"publish","type":"post","link":"https:\/\/gambaru.de\/blog\/2011\/12\/14\/mehrere-pbuilder-und-hooks-rxvt-unicode-256color-von-debian-sid-nach-squeeze-backporten\/","title":{"rendered":"Mehrere Pbuilder und Hooks: rxvt-unicode-256color von Debian Sid nach Squeeze backporten"},"content":{"rendered":"<p>Mit <a href=\"http:\/\/www.netfort.gr.jp\/~dancer\/software\/pbuilder-doc\/pbuilder-doc.html\">Pbuilder<\/a> wollte ich noch den Terminalemulator rxvt-unicode-256color von Debian Sid nach Debian Squeeze zur\u00fcckporten. Dabei sind ein paar Probleme aufgetreten und die L\u00f6sungen zum Nachschlagen habe ich hier verewigt.<br \/>\nWie ich hierhin gekommen bin, habe ich in den Artikeln zum <a href=\"https:\/\/www.gambaru.de\/blog\/2011\/06\/11\/wie-man-debian-pakete-aus-den-quellen-baut\/\">Paketbau mit Debian<\/a>, <a href=\"https:\/\/www.gambaru.de\/blog\/2011\/06\/12\/mplayer-nur-fur-den-framebuffer\/\">Mplayer f\u00fcr den Framebuffer<\/a>, einen <a href=\"https:\/\/www.gambaru.de\/blog\/2011\/10\/01\/ein-versuch-debian-pakete-mit-pbuilder-backporten\/\">Backportversuch mit Pbuilder<\/a> und den Beitrag zum <a href=\"https:\/\/www.gambaru.de\/blog\/2011\/12\/12\/einen-masgeschneiderten-dwm-fenstermanager-von-sid-nach-squeeze-backporten\/\">ma\u00dfgeschneiderten DWM-Fenstermanager<\/a> niedergeschrieben. Du kannst dich nat\u00fcrlich auch sofort in die Details st\u00fcrzen.<br \/>\nNachdem ich DWM und Surf erfolgreich mit pbuilder kompiliert und in ein Deb-Paket verschn\u00fcrt hatte, machte ich guten Mutes mit <a href=\"http:\/\/packages.debian.org\/sid\/rxvt-unicode-256color\">rxvt-unicode-256color<\/a> weiter. Das Paket lie\u00df sich ebenfalls problemlos \u00fcbersetzen, doch als ich es auf dem Thinkpad mit Debian Squeeze installieren wollte, fehlte mir eine aktuellere Abh\u00e4ngigkeit von <a href=\"http:\/\/packages.debian.org\/sid\/ncurses-term\">ncurses-term<\/a>.<br \/>\nUm aber ncurses-term erfolgreich zu bauen, brauchte ich wiederum die aktuelle Version von <a href=\"http:\/\/packages.debian.org\/squeeze-backports\/debhelper\">debhelper<\/a> aus dem offiziellen <a href=\"http:\/\/backports-master.debian.org\/\">Backports-Archiv<\/a>.<\/p>\n<h2>Wie man einen Backport von rxvt-unicode-256color erstellt<\/h2>\n<p><code>apt-get source rxvt-unicode-256color<\/code><br \/>\n<code>apt-get source ncurses-term<\/code><\/p>\n<blockquote><p>Randbemerkung: Beim Ver\u00e4ndern meiner Tastaturbelegung mit xmodmap habe ich einen <a href=\"http:\/\/bugs.debian.org\/cgi-bin\/bugreport.cgi?bug=393847\">5 Jahre alten Debian Bug<\/a> ausgegraben. Scheinbar l\u00f6st die Tastenkombination Strg+Shift ein ISO14755 Feature aus und ein nicht zu \u00fcbersehendes Rechteck wird auf dem Bildschirm angezeigt. Der Bug ist wohl in rxvt-unicode-lite behoben, in 256color aber absichtlich nicht.<br \/>\nDas Verhalten l\u00e4sst sich ausschalten, indem man die Option <em>--enable-iso14755<\/em> in debian\/rules auf <em>--disable-iso14755<\/em> setzt. Quellpaket danach mit <code>dpkg -b source<\/code> aktualisieren!<\/p><\/blockquote>\n<p>Kopiert man dann die unten beschriebenen Skripte bzw. Konfigurationsdatei an die richtige Stelle lassen sich DEB-Pakete f\u00fcr i386 und Squeeze mit dem folgenden Befehl bauen. Beim ersten Mal noch <strong><code>--override-config<\/code><\/strong> anh\u00e4ngen, damit die ge\u00e4nderte config eingelesen wird!<\/p>\n<p><code>ARCH=i386 DIST=squeeze pbuilder build ncurses_5.9-4.dsc<\/code><br \/>\n<code>ARCH=i386 DIST=squeeze pbuilder build rxvt-unicode_9.12-1.dsc<\/code><\/p>\n<p><code><\/code>Die fertigen Pakete befinden sich danach in <em>\/var\/cache\/pbuilder\/squeeze-i386\/result<\/em><br \/>\nDie folgenden Skripte und Konfigurationen wurden mit geringen \u00c4nderungen aus dem <a href=\"https:\/\/wiki.ubuntu.com\/PbuilderHowto\">Pbuilder Howto<\/a> auf ubuntu.com \u00fcbernommen. Empfehlenswert zum Nachlesen! Au\u00dferdem hilft <strong>man pbuilder<\/strong> weiter.<br \/>\nHat man Pbuilder einmal so eingerichtet, lassen sich damit auch von einem Debiansystem Pakete f\u00fcr Ubuntu und umgekehrt erstellen, womit man ab sofort Software f\u00fcr 2\/3 aller Linuxdistributionen leicht selbst \u00fcbersetzen kann. \ud83d\ude09<\/p>\n<h2>Hooks<\/h2>\n<h3>apt-preferences<\/h3>\n<p>Mit sogenannten Hooks l\u00e4sst sich Pbuilder dazu bewegen, gewisse Prozesse und Abl\u00e4ufe mit Hilfe von Skripten automatisch w\u00e4hrend des Paketbaus oder davor und danach auszuf\u00fchren. Mein Hook-Verzeichnis ist <em>\/var\/cache\/pbuilder\/hook.d<\/em><br \/>\nMit dem folgenden ausf\u00fchrbaren Skript <strong>E01apt-preferences<\/strong> wird den Paketen <a href=\"http:\/\/packages.debian.org\/sid\/debhelper\">debhelper<\/a> und <a href=\"http:\/\/packages.debian.org\/sid\/lintian\">lintian<\/a> aus dem offiziellen Backport-Archiv eine h\u00f6here Pin-Priorit\u00e4t zugewiesen als den regul\u00e4ren Squeeze-Paketen. Damit werden beide Pakete automatisch aus Backports installiert, falls diese angefordert werden. Apt-Pinning hatte ich schon einmal <a href=\"https:\/\/www.gambaru.de\/blog\/2011\/11\/23\/apt-pinning-fur-die-mutigen\/\">allgemein vorgestellt<\/a>, diese Methode hier demonstriert das Anpinnen von zwei spezifischen Paketen in <em>\/etc\/apt\/preferences<\/em> innerhalb der Build-Umgebung von Pbuilder.<\/p>\n<pre class=\"brush:shell\">#!\/bin\/sh\nset -e\nSTABLE_VERSION_REGEX='^6.0.[0-9]+<\/pre>\n<p>Es wird empfohlen das Verwenden von Backports auf das absolut notwendige Minimum zu begrenzen und so weit es geht auf die reinen Squeeze-Pakete zur\u00fcckzugreifen.<\/p>\n<h3>Eine Shell ausf\u00fchren, wenn das Bauen fehlschl\u00e4gt<\/h3>\n<p>Das Skript wird als <strong>C10Shell<\/strong> in <em>\/var\/cache\/pbuilder\/hook.d<\/em> abgespeichert. Laut Pbuilder-Howto soll es f\u00fcr alle ausf\u00fchrbar sein (a+x). Ich muss hier in Zukunft einmal genauer nachforschen, ob das tats\u00e4chlich immer notwendig ist und ob man Pbuilder auch problemlos im User Mode Linux (UML) betreiben kann.<\/p>\n<pre class=\"brush:shell\">#!\/bin\/sh\n# Shell aufrufen, wenn das Bauen fehlschl\u00e4gt\napt-get install -y --force-yes vim less bash\ncd \/tmp\/buildd\/*\/debian\/..\n\/bin\/bash &lt; \/dev\/tty &gt; \/dev\/tty 2&gt; \/dev\/tty<\/pre>\n<h3>Multiple Pbuilder und Archive: Konfiguration f\u00fcr pbuilderrc<\/h3>\n<pre class=\"brush:shell\">HOOKDIR=\"\/var\/cache\/pbuilder\/hook.d\/\"\nOTHERMIRROR=\"deb http:\/\/backports.debian.org\/debian-backports squeeze-backports main\"\n# Codenamen f\u00fcr die verschiedenen Debian Versionen.\n# Einfach editieren, falls die Codenamen sich in Zukunft \u00e4ndern\nUNSTABLE_CODENAME=\"sid\"\nTESTING_CODENAME=\"wheezy\"\nSTABLE_CODENAME=\"squeeze\"\nSTABLE_BACKPORTS_SUITE=\"$STABLE_CODENAME-backports\"\n# Liste der Debian Versionen.\nDEBIAN_SUITES=($UNSTABLE_CODENAME $TESTING_CODENAME $STABLE_CODENAME\n    \"unstable\" \"testing\" \"stable\")\n# Liste der Ubuntu Versionen.\nUBUNTU_SUITES=(\"natty\" \"maverick\" \"lucid\" \"karmic\" \"jaunty\" \"intrepid\" \"oneiric\")\n# Debian-Spiegel\nDEBIAN_MIRROR=\"ftp.de.debian.org\"\nUBUNTU_MIRROR=\"mirrors.kernel.org\"\n# Falls die Version nicht zu ermitteln ist, durchsuche das Changelog nach Hinweisen\nif [ -z \"${DIST}\" ] &amp;&amp; [ -r \"debian\/changelog\" ]; then\n    DIST=$(dpkg-parsechangelog | awk '\/^Distribution: \/ {print $2}')\n    # Benutze die Unstable Version f\u00fcr bestimmte Versions Werte\n    if $(echo \"experimental UNRELEASED\" | grep -q $DIST); then\n        DIST=\"$UNSTABLE_CODENAME\"\n    fi\n    # Benutze die Stable Version f\u00fcr Backports.\n    if $(echo \"$STABLE_BACKPORTS_SUITE\" | grep -q $DIST); then\n        DIST=\"$STABLE\"\n    fi\nfi\n# Optional: Standard Distribution\/Version angeben\n# z.B (${DIST:=\"unstable\"}).\n: ${DIST:=\"$(lsb_release --short --codename)\"}\n# Optional: Debians generische Namen(stable, testing, unstable) in die jeweiligen Codenamen um\u00e4ndern\ncase \"$DIST\" in\n    unstable)\n        DIST=\"$UNSTABLE_CODENAME\"\n        ;;\n    testing)\n        DIST=\"$TESTING_CODENAME\"\n        ;;\n    stable)\n        DIST=\"$STABLE_CODENAME\"\n        ;;\nesac\n# Optional: Die Standardarchitektur angeben. Z.B. (${ARCH:=\"i386\"}).\n: ${ARCH:=\"$(dpkg --print-architecture)\"}\nNAME=\"$DIST\"\nif [ -n \"${ARCH}\" ]; then\n    NAME=\"$NAME-$ARCH\"\n    DEBOOTSTRAPOPTS=(\"--arch\" \"$ARCH\" \"${DEBOOTSTRAPOPTS[@]}\")\nfi\nBASETGZ=\"\/var\/cache\/pbuilder\/$NAME-base.tgz\"\n# Optional: BASEPATH (und nicht BASETGZ) setzen, wenn man cowbuilder benutzt\n# BASEPATH=\"\/var\/cache\/pbuilder\/$NAME\/base.cow\/\"\nDISTRIBUTION=\"$DIST\"\nBUILDRESULT=\"\/var\/cache\/pbuilder\/$NAME\/result\/\"\nAPTCACHE=\"\/var\/cache\/pbuilder\/$NAME\/aptcache\/\"\nBUILDPLACE=\"\/var\/cache\/pbuilder\/build\/\"\nBINDMOUNTS=\"\/var\/cache\/archive\"\nif $(echo ${DEBIAN_SUITES[@]} | grep -q $DIST); then\n    # Debian configuration\n    MIRRORSITE=\"http:\/\/$DEBIAN_MIRROR\/debian\/\"\n    COMPONENTS=\"main contrib non-free\"\n    DEBOOTSTRAPOPTS=(\"${DEBOOTSTRAPOPTS[@]}\" \"--keyring=\/usr\/share\/keyrings\/debian-archive-keyring.gpg\")\n    #OTHERMIRROR=\"deb file:\/\/\/var\/cache\/archive $DIST\/\"\nelif $(echo ${UBUNTU_SUITES[@]} | grep -q $DIST); then\n    # Ubuntu configuration\n    MIRRORSITE=\"http:\/\/$UBUNTU_MIRROR\/ubuntu\/\"\n    COMPONENTS=\"main restricted universe multiverse\"\n    DEBOOTSTRAPOPTS=(\"${DEBOOTSTRAPOPTS[@]}\" \"--keyring=\/usr\/share\/keyrings\/ubuntu-archive-keyring.gpg\")\n   #OTHERMIRROR=\"deb file:\/\/\/var\/cache\/archive $DIST\/\"\nelse\n    echo \"Unknown distribution: $DIST\"\n    exit 1\nfi<\/pre>\n<pre class=\"brush:shell\">if $(cat \"\/etc\/debian_version\" | grep -q -e \"$STABLE_VERSION_REGEX\"); then cat &gt; \"\/etc\/apt\/preferences\" &lt;&lt; EOF Package: debhelper Pin: release a=squeeze-backports Pin-Priority: 999 Package: lintian Pin: release a=squeeze-backports Pin-Priority: 999 EOF fi<\/pre>\n<p>Es wird empfohlen das Verwenden von Backports auf das absolut notwendige Minimum zu begrenzen und so weit es geht auf die reinen Squeeze-Pakete zur\u00fcckzugreifen.<\/p>\n<h3>Eine Shell ausf\u00fchren, wenn das Bauen fehlschl\u00e4gt<\/h3>\n<p>Das Skript wird als <strong>C10Shell<\/strong> in <em>\/var\/cache\/pbuilder\/hook.d<\/em> abgespeichert. Laut Pbuilder-Howto soll es f\u00fcr alle ausf\u00fchrbar sein (a+x). Ich muss hier in Zukunft einmal genauer nachforschen, ob das tats\u00e4chlich immer notwendig ist und ob man Pbuilder auch problemlos im User Mode Linux (UML) betreiben kann.<\/p>\n<pre><\/pre>\n<h3>Multiple Pbuilder und Archive: Konfiguration f\u00fcr pbuilderrc<\/h3>\n<pre><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Mit Pbuilder wollte ich noch den Terminalemulator rxvt-unicode-256color von Debian Sid nach Debian Squeeze zur\u00fcckporten. Dabei sind ein paar Probleme aufgetreten und die L\u00f6sungen zum Nachschlagen habe ich hier verewigt. Wie ich hierhin gekommen bin, habe ich in den Artikeln zum Paketbau mit Debian, Mplayer f\u00fcr den Framebuffer, einen Backportversuch mit Pbuilder und den Beitrag &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/gambaru.de\/blog\/2011\/12\/14\/mehrere-pbuilder-und-hooks-rxvt-unicode-256color-von-debian-sid-nach-squeeze-backporten\/\" class=\"more-link\"><span class=\"screen-reader-text\">\u201eMehrere Pbuilder und Hooks: rxvt-unicode-256color von Debian Sid nach Squeeze backporten\u201c<\/span> weiterlesen<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[6],"tags":[53,69,202,207],"_links":{"self":[{"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/posts\/5241"}],"collection":[{"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/comments?post=5241"}],"version-history":[{"count":1,"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/posts\/5241\/revisions"}],"predecessor-version":[{"id":10915,"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/posts\/5241\/revisions\/10915"}],"wp:attachment":[{"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/media?parent=5241"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/categories?post=5241"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/tags?post=5241"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}