{"id":5585,"date":"2018-02-17T15:53:34","date_gmt":"2018-02-17T14:53:34","guid":{"rendered":"https:\/\/u-labs.de\/portal\/?p=5585"},"modified":"2018-02-17T15:53:34","modified_gmt":"2018-02-17T14:53:34","slug":"fehlerhafte-pacman-paketupdates-unter-arch-linux-rueckgaengig-machen","status":"publish","type":"post","link":"https:\/\/u-labs.de\/portal\/fehlerhafte-pacman-paketupdates-unter-arch-linux-rueckgaengig-machen\/","title":{"rendered":"(Fehlerhafte) pacman Paketupdates unter Arch Linux r\u00fcckg\u00e4ngig machen"},"content":{"rendered":"<p>Arch Linux ist dank\u00a0<em>Rolling Release<\/em>\u00a0immer auf dem neusten Stand. Manchmal werden jedoch auch fehlerhafte Updates verteilt. In diesem Fall kann es zumindest als tempor\u00e4rer Workaround hilfreich sein, die Vorversion des betroffenen Paketes zu installieren. So kann man dies weiter nutzen, bis ein entsprechender Fix verf\u00fcgbar ist.<\/p>\n<h3>Beispiel: Docker-Compose<\/h3>\n<p>Aktuell wurde das <a href=\"https:\/\/github.com\/docker\/compose\/issues\/5685\" rel=\"nofollow\" target=\"_blank\">Pyhon-SDK von Docker-Compose<\/a> auf Version 3.0.1 aktualisiert. Dies ist jedoch nicht vollst\u00e4ndig mit Docker-Compose kompatibel: M\u00f6chte man einen Container aus Docker-Compose neu bauen, wird folgender Fehler ausgegeben:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\n&#x5B;daniel@antergos account-boerse]$ docker-compose up --build\r\nBuilding ab\r\nTraceback (most recent call last):\r\n  File &quot;\/usr\/bin\/docker-compose&quot;, line 11, in &amp;amp;amp;lt;module&amp;amp;amp;gt;\r\n    load_entry_point('docker-compose==1.19.0', 'console_scripts', 'docker-compose')()\r\n  &#x5B;...]\r\n  File &quot;\/usr\/lib\/python3.6\/site-packages\/compose\/service.py&quot;, line 989, in build\r\n    'memory': parse_bytes(memory) if memory else None\r\nTypeError: build() got an unexpected keyword argument 'stream'\r\n<\/pre>\n<p>Da es sich um ein recht neues Update handelt, gibt es bislang noch keine saubere L\u00f6sung. Um mit Docker-Compose weiterarbeiten zu k\u00f6nnen, soll als Workaround daher wieder die vorherige Python 2.7 Version installiert werden.<\/p>\n<h3>1. Exakte Version ermitteln<\/h3>\n<p>In der Regel wird man die exakten Versionsnummern nicht mehr im Kopf haben. Daher suchen wir in der Logdatei von Pacman nach dem letzten Update des betroffenen Paketes, hier <strong>python-docker:<\/strong><\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\n&#x5B;daniel@antergos ~]$ cat \/var\/log\/pacman.log | grep python-docker | tail -1\r\n&#x5B;2018-02-17 12:27] &#x5B;ALPM] upgraded python-docker (2.7.0-1 =&amp;gt; 3.0.1-1)\r\n<\/pre>\n<p>Hier wurde also von <strong>2.7.0-1<\/strong> auf <strong>3.0.1-1<\/strong> aktualisiert, wir wollen also auf\u00a0<strong>2.7.0-1<\/strong> zur\u00fcck. Ein Vorteil von Pacman ist, dass er alte Pakete nach Updates in seinem Cache beh\u00e4lt. So kann problemlos eine \u00e4ltere Version installiert werden, ohne diese nachladen zu m\u00fcssen.<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\"> \r\n&#x5B;daniel@antergos ~]$ ls \/var\/cache\/pacman\/pkg\/ | grep python-docker | grep 2.7.0-1 \r\npython-docker-2.7.0-1-any.pkg.tar.xz \r\n<\/pre>\n<p>Das gew\u00fcnschte Installationsarchiv liegt also im Pfad <code class=\"\" data-line=\"\">\/var\/cache\/pacman\/pkg\/python-docker-2.7.0-1-any.pkg.tar.xz<\/code>.<\/p>\n<h3>2. Alte Version installieren<\/h3>\n<p>Durch folgenden Befehl wird das derzeit installierte Paket durch die angegebene Version installiert. Abh\u00e4ngigkeiten l\u00f6st Pacman entsprechend auf. Allerdings werden keine Versionskonflikte mit anderen Paketen beachtet! Hier muss man ggf. eigenst\u00e4ndig weitere Downgrades durchf\u00fchren.<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nsudo pacman -U \/var\/cache\/pacman\/pkg\/python-docker-2.7.0-1-any.pkg.tar.xz \r\n<\/pre>\n<p><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/u-img.net\/img\/3186Rq.png\" \/><\/p>\n<p>Nun ist das Downgrade abgeschlossen und die alte Version kann genutzt werden.<\/p>\n<h3>3. Paket ignorieren<\/h3>\n<p>Allerdings wird Pacman das Paket beim n\u00e4chsten Update erneut als veraltet erkennen und versuchen, es zu aktualisieren:<\/p>\n<p><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/u-img.net\/img\/2569Rz.png\" \/><\/p>\n<p>Dieses Paket darf nat\u00fcrlich vorerst nicht aktualisiert werden, bis das Problem gefixt wurde. Es empfiehlt sich daher, das betroffene Paket von Pacman auszuschlie\u00dfen.<\/p>\n<p>Dazu \u00f6ffnet man die Datei <code class=\"\" data-line=\"\">\/etc\/pacman.conf<\/code> und setzt bzw. erweitert IgnorePkg mit dem Namen des Paketes:<\/p>\n<p><code class=\"\" data-line=\"\">IgnorePkg = python-docker<\/code><\/p>\n<p>Nun wird Pacman das Paket nicht mehr als Update anbieten, warnt aber weiterhin, dass es ignorierte Aktualisierungen gibt:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/u-img.net\/img\/7994Xg.png\" \/><\/p>\n<p>Dadurch wird sichergestellt, dass man seine Ausnahmeregeln nicht vergisst und regelm\u00e4\u00dfig pr\u00fcft, ob ein Fix verf\u00fcgbar ist.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Arch Linux ist dank\u00a0Rolling Release\u00a0immer auf dem neusten Stand. Manchmal werden jedoch auch fehlerhafte Updates verteilt. In diesem Fall kann es zumindest als tempor\u00e4rer Workaround hilfreich sein, die Vorversion des betroffenen Paketes zu installieren. So kann man dies weiter nutzen, bis ein entsprechender Fix verf\u00fcgbar ist. Beispiel: Docker-Compose Aktuell wurde das Pyhon-SDK von Docker-Compose auf &#8230;<\/p>\n","protected":false},"author":5,"featured_media":5592,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[74,78],"tags":[641,661],"class_list":["post-5585","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-linux","category-software","tag-arch-linux","tag-pacman"],"_links":{"self":[{"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/posts\/5585","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/comments?post=5585"}],"version-history":[{"count":21,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/posts\/5585\/revisions"}],"predecessor-version":[{"id":5609,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/posts\/5585\/revisions\/5609"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/media\/5592"}],"wp:attachment":[{"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/media?parent=5585"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/categories?post=5585"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/tags?post=5585"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}