{"id":3301,"date":"2016-07-13T19:47:16","date_gmt":"2016-07-13T17:47:16","guid":{"rendered":"http:\/\/speefak.spdns.de\/oss_lifestyle\/?p=3301"},"modified":"2024-06-02T13:52:40","modified_gmt":"2024-06-02T11:52:40","slug":"paketmanagement-grundlagen","status":"publish","type":"post","link":"https:\/\/speefak.spdns.de\/oss_lifestyle\/paketmanagement-grundlagen\/","title":{"rendered":"Paketmanagement &#8211; Grundlagen"},"content":{"rendered":"<table border=\"1\">\n<tbody>\n<tr>\n<td style=\"text-align: left;\">\n<h2>Grundlagen<a id=\"overview\"><\/a><\/h2>\n<\/td>\n<td style=\"text-align: left;\">\n<h2>Konfiguration<\/h2>\n<\/td>\n<td style=\"text-align: left;\">\n<h2>Anwendungen<\/h2>\n<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><a href=\"#Paketformate\">Paketformate<\/a><\/td>\n<td style=\"text-align: left;\"><\/td>\n<td style=\"text-align: left;\"><a href=\"https:\/\/speefak.spdns.de\/oss_lifestyle\/paketmanagement-befehle-zypper-vs-apt\/\">Befehle &#8211; Zypper \/ APT (Shell)<\/a><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><a href=\"#Paketverwaltungsbestandteile\">Paketverwaltungsbestandteile<\/a><\/td>\n<td style=\"text-align: left;\"><\/td>\n<td style=\"text-align: left;\"><a href=\"https:\/\/speefak.spdns.de\/oss_lifestyle\/paketmanagement-packagekit-befehle\/\" target=\"_blank\" rel=\"noopener noreferrer\">Befehle &#8211; Packagekit (Shell)<\/a><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><a href=\"#PackageKit\">PackageKit<\/a><\/td>\n<td style=\"text-align: left;\"><\/td>\n<td style=\"text-align: left;\"><a href=\"https:\/\/wiki.ubuntuusers.de\/Synaptic\/\" target=\"_blank\" rel=\"noopener noreferrer\">Synaptic &#8211; APT\/DEB (GUI)<\/a><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><a href=\"#Komplexit\u00e4t\">Komplexit\u00e4t<\/a><\/td>\n<td style=\"text-align: left;\"><\/td>\n<td style=\"text-align: left;\"><a href=\"https:\/\/de.opensuse.org\/YaST_Module_Software-Management\" target=\"_blank\" rel=\"noopener noreferrer\">YaST &#8211; YUM\/RPM (GUI)<\/a><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><a href=\"#Fazit\">Fazit<\/a><\/td>\n<td style=\"text-align: left;\"><\/td>\n<td style=\"text-align: left;\"><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<\/td>\n<td style=\"text-align: left;\">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<\/td>\n<td style=\"text-align: left;\">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<h2 style=\"text-align: center;\"><span style=\"color: #ff6600;\">Grundlagen<\/span><\/h2>\n<h2 id=\"Paketformate\">Paketformate<\/h2>\n<p>F\u00fcr viele ist das Paket<em>format<\/em> und die Paket<em class=\"last\">verwaltung<\/em> quasi identisch. Technisch gesehen ist das aber keineswegs so. Zum Einen gibt es das Paketformat, also das Dateiformat, welches die Software-Daten und Metainformationen enth\u00e4lt, sowie die Software, welche dieses Format einliest und verwaltet. Zum Anderen existiert der Paketmanager, welcher f\u00fcr das Interpretieren der Paket-Metainformationen (Abh\u00e4ngigkeiten, Konflikte, etc.) und f\u00fcr diverse Hilfsaufgaben (z.B. Repositories, Updates) zust\u00e4ndig ist.<\/p>\n<p>Ein Paketformat w\u00e4re z.B. <a href=\"https:\/\/de.wikipedia.org\/wiki\/RPM_Package_Manager\" target=\"_blank\" rel=\"noopener noreferrer\">RPM<\/a>, die Paketverwaltung und das zugeh\u00f6rige Tool hei\u00dfen ebenfalls RPM. F\u00fcr RPM gibt es nun diverse Paketmanager, wie z.B. die textbasierenden Werkzeuge Yum oder Zypper, oder auch grafische Werkzeuge wie <a href=\"https:\/\/de.opensuse.org\/YaST_Module_Software-Management\" target=\"_blank\" rel=\"noopener noreferrer\">YaST<\/a>. Bei Debian hingegen w\u00e4re das Paketformat <a href=\"https:\/\/de.wikipedia.org\/wiki\/Debian-Paket\" target=\"_blank\" rel=\"noopener noreferrer\">DEB<\/a>\/<a href=\"https:\/\/de.wikipedia.org\/wiki\/Debian_Package_Manager\" target=\"_blank\" rel=\"noopener noreferrer\">DPKG<\/a>, der textbasierende Paketmanager jedoch <a href=\"https:\/\/de.wikipedia.org\/wiki\/Advanced_Packaging_Tool\" target=\"_blank\" rel=\"noopener noreferrer\">APT<\/a> und als grafisches Frontend w\u00e4re hier <a href=\"https:\/\/wiki.ubuntuusers.de\/Synaptic\/\" target=\"_blank\" rel=\"noopener noreferrer\">Synaptic<\/a> zu nennen<\/p>\n<p>Jedes Paketformat wurde f\u00fcr einen speziellen Einsatzzweck entwickelt und setzt andere Schwerpunkte. RPM und DEB als eine der \u00e4ltesten Paketformate wurden als flexible Formate f\u00fcr den generellen Einsatz entwickelt. DEB hat dabei eine eigene Evolution durchgemacht, da Debian selbst als winzige Distribution mit nur einer Handvoll Pakete und sehr einfach gestricktem Paketformat gestartet ist, und dann wesentlich gr\u00f6\u00dfer wurde. Das DEB-Format wurde dabei leicht an die gr\u00f6\u00dferen Anforderungen angepasst. RPM kam von Beginn an f\u00fcr gr\u00f6\u00dfere Paketquellen zum Einsatz, hat sich aber ebenfalls ver\u00e4ndert.<\/p>\n<p>Warum wechselt jetzt nicht z.B. Debian zu RPM oder Fedora zu DEB? Die Gr\u00fcnde sind ziemlich pragmatisch: Es hat keinen Sinn und w\u00e4re kontraproduktiv. Der gesamte Workflow in Debian ist auf das DEB-Format ausgerichtet, alle Entwickler kommen damit klar, es funktioniert hervorragend und erf\u00fcllt alle Anspr\u00fcche. Gleiches gilt f\u00fcr RPM bei Fedora: Es hat schlicht keinen Sinn, zu wechseln. Der Nutzer h\u00e4tte nichts davon, und f\u00fcr die Entwickler w\u00e4re es sinnloser Aufwand.<\/p>\n<hr \/>\n<p style=\"text-align: center;\"><span style=\"text-decoration: underline;\"><strong><em><a href=\"#overview\">Zur\u00fcck zur \u00dcbersicht<\/a><\/em><\/strong><\/span><\/p>\n<hr \/>\n<h2 id=\"Paketverwaltungsbestandteile\">Paketverwaltungsbestandteile<\/h2>\n<p>Die zwei o.g. Paketverwaltungssysteme APT (Advanced Packaging Tool) und RPM\u00a0 (RPM Package Manager) gliedern sich in folgende Teilprogramme auf, wobei jeder Bestandteil eine spezielle Funktion \u00fcbernimmt.<\/p>\n<p><strong>dpkg-buildpackage<\/strong> ist ein Entwicklertool, es wird auf produktiven Systemen nicht verwendet und hat da eigentlich auch nichts zu suchen. Es verwendet v\u00f6llig andere Parameter als das Pakettool und der Paketmanager, es macht also Sinn, dieses separat zu haben.<\/p>\n<p><strong>Das Pakettool (<\/strong>dpkg \/ rpm) verarbeitet lokale Pakete und abstrahiert die ganzen Details des Paketformates vom Paketmanager. Der Paketmanager muss nur noch das Pakettool aufrufen, um ein Paket zu installieren oder zu entfernen.<\/p>\n<p><strong>Der Paketmanager<\/strong> (APT \/Zypper,Yum) hat den \u00dcberblick \u00fcber die gesamte auf dem System installierte Software, sowie \u00fcber verf\u00fcgbare Software und deren Quellen. Er ist au\u00dferdem in der Lage, Abh\u00e4ngigkeiten zwischen Paketen aufzul\u00f6sen und dem Pakettool genau zu sagen, welche Aktion wann aufgerufen werden muss, um das System in einem konsistenten Zustand zu halten und alle Pakete sinnvoll zu installieren\/zu entfernen.<\/p>\n<p>Diese Aktionen sind hoch spezialisiert und daher voneinander getrennt. Der Paketmanager braucht keine genaue Kenntnis vom Paketformat, ebenso wenig, wie das Pakettool wissen muss, was gerade im gesamten Archiv passiert. Mit all dem \u00fcberhaupt nichts zu tun hat das Paket-Entwicklerwerkzeug.<\/p>\n<p>Zugegeben, ein Paket ist komplex \u2013 allerdings ist diese Komplexit\u00e4t oft essenziell. Und nahezu alle Dateien sind einfache Textdateien, die sowohl von Menschen gut gelesen werden k\u00f6nnen, als auch von Maschinen verarbeitet werden k\u00f6nnen. Paketmanager und Pakettool k\u00f6nnen in einer Anwendung zusammengefasst werden ( Arch Linux ), was aber in Bezug auf Flexibilit\u00e4t und Fehlersuche suboptimal ist.<\/p>\n<hr \/>\n<p style=\"text-align: center;\"><span style=\"text-decoration: underline;\"><strong><em><a href=\"#overview\">Zur\u00fcck zur \u00dcbersicht<\/a><\/em><\/strong><\/span><\/p>\n<hr \/>\n<h2 id=\"PackageKit\">PackageKit<\/h2>\n<p>PackageKit ist eine dritte Schicht \u00fcber dem Pakettool und dem Paketmanager und stellt viele Aktionen der Paketverwaltung \u00fcber eine Schnittstelle systemweit und unabh\u00e4ngig von den Paketverwaltungsbestandteilen zur Verf\u00fcgung. \u00dcber diese Schnittstelle k\u00f6nnen Nutzer mit dem Paketmanagement einfach kommunizieren, wenn sie sich nicht mit der (n\u00fctzlichen) Komplexit\u00e4t des Systems oder der Syntax der verschiedenen Paketverwaltungssysteme auseinandersetzen wollen. Somit sind folgende Befehle f\u00fcr Systeme auf denen Packekit installiert allgemein g\u00fcltig:<\/p>\n<ul>\n<li class=\"theme:dark-terminal lang:sh decode:true \">pkcon update =&gt; Aktualisierung des Paket-Zwischenspeichers<\/li>\n<li class=\"theme:dark-terminal lang:sh decode:true \">pkcon upgrade =&gt; Aktualisierung des Systems<\/li>\n<li class=\"theme:dark-terminal lang:sh decode:true \">pkcon search file \/path\/to\/filename.txt =&gt; Auflisten eines Paketes, welches die besagte Datei enth\u00e4lt.<\/li>\n<\/ul>\n<hr \/>\n<p style=\"text-align: center;\"><span style=\"text-decoration: underline;\"><strong><em><a href=\"#overview\">Zur\u00fcck zur \u00dcbersicht<\/a><\/em><\/strong><\/span><\/p>\n<hr \/>\n<h2 id=\"Komplexit\u00e4t\">Komplexit\u00e4t<\/h2>\n<p>Das Paketmanagement einer Distribution ist mitunter unglaublich komplex. Das liegt aber nicht daran, dass die Programmierer das so gewollt haben, sondern viel mehr am komplexen Problem selber.<\/p>\n<p>Alleine der Paketbauprozess muss mit etlichen Buildsystemen f\u00fcr Software zurechtkommen, es m\u00fcssen zig verschiedene Dateien an die richtigen Orte installiert, kopiert und registriert werden. Zudem muss auf distributionsspezifische Eigenheiten eingegangen werden. Damit muss der Buildprozess sehr flexibel sein, was ihn automatisch komplizierter macht.<\/p>\n<p>Das Pakettool hingegen muss seine Datenbank extrem schnell verwalten k\u00f6nnen, und muss zu jeder Zeit sicherstellen, dass diese konsistent ist, und nicht besch\u00e4digt wird.<\/p>\n<p>Der Paketmanager wiederum muss die ganzen Paketpools verwalten, und Abh\u00e4ngigkeiten zwischen Paketen m\u00f6glichst schnell aufl\u00f6sen. Dazu z\u00e4hlen nicht nur \u201cPaket X braucht Paket Y\u201d-Abh\u00e4ngigkeiten, sondern auch Konflikte eines Paketes mit einer Version eines anderen Paketes, oder vom Nutzer festgelegte Sperren eines Paketes (z.B. apt-pinning).<\/p>\n<hr \/>\n<p style=\"text-align: center;\"><span style=\"text-decoration: underline;\"><strong><em><a href=\"#overview\">Zur\u00fcck zur \u00dcbersicht<\/a><\/em><\/strong><\/span><\/p>\n<hr \/>\n<h2 id=\"Fazit\">Fazit<\/h2>\n<p>Jeder Versuch, das Paketmanagement an sich zu vereinfachen, wird aufgrund des Problems selber nicht funktionieren, oder nur unter Verlust vieler Funktionen und der \u201cRobustheit\u201d des Systems. Zudem ist jedes Paketmanagement quasi mit der Distribution \u201egewachsen\u201c, es zu ersetzten w\u00fcrde also in jedem Fall erstmal zu mehr Bugs und Problemen f\u00fchren. Um das zu tun, braucht man also schon einen triftigen Grund.<\/p>\n<p>Was allerdings auch stimmt, ist, dass der Zugang zum Paketmanagement unn\u00f6tig kompliziert ist, vor allem f\u00fcr simplere Aufgaben. Auch noch so komplexe Dinge kann man hinter einer sch\u00f6nen GUI oder einem cleveren CLI-Tool verstecken. An dieser Stelle kann ich jedem das PackageKit tool pkcon empfehlen, welches alle allgemeinen Aktionen der Paketdatenbank abdecken sollte.<\/p>\n<hr \/>\n<p style=\"text-align: center;\"><span style=\"text-decoration: underline;\"><strong><em><a href=\"#overview\">Zur\u00fcck zur \u00dcbersicht<\/a><\/em><\/strong><\/span><\/p>\n<hr \/>\n<p><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-2821 alignleft\" src=\"https:\/\/speefak.spdns.de\/oss_lifestyle\/wp-content\/uploads\/2014\/08\/CC_BY_NC_SA.png\" alt=\"CC_BY_NC_SA\" width=\"65\" height=\"23\" \/>by Speefak<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Grundlagen Konfiguration Anwendungen Paketformate Befehle &#8211; Zypper \/ APT (Shell) Paketverwaltungsbestandteile Befehle &#8211; Packagekit (Shell) PackageKit Synaptic &#8211; APT\/DEB (GUI) Komplexit\u00e4t YaST &#8211; YUM\/RPM (GUI) Fazit &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;- &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;- &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;- &nbsp; Grundlagen Paketformate F\u00fcr viele ist das Paketformat und die Paketverwaltung quasi identisch. Technisch gesehen ist das aber keineswegs so. Zum Einen gibt es das Paketformat, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7,26],"tags":[],"class_list":["post-3301","post","type-post","status-publish","format-standard","hentry","category-grundlagen","category-linux"],"rttpg_featured_image_url":null,"rttpg_author":{"display_name":"speefak","author_link":"https:\/\/speefak.spdns.de\/oss_lifestyle\/author\/speefak_oss\/"},"rttpg_comment":0,"rttpg_category":"<a href=\"https:\/\/speefak.spdns.de\/oss_lifestyle\/category\/grundlagen\/\" rel=\"category tag\">Grundlagen<\/a> <a href=\"https:\/\/speefak.spdns.de\/oss_lifestyle\/category\/linux\/\" rel=\"category tag\">Linux<\/a>","rttpg_excerpt":"Grundlagen Konfiguration Anwendungen Paketformate Befehle &#8211; Zypper \/ APT (Shell) Paketverwaltungsbestandteile Befehle &#8211; Packagekit (Shell) PackageKit Synaptic &#8211; APT\/DEB (GUI) Komplexit\u00e4t YaST &#8211; YUM\/RPM (GUI) Fazit &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;- &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;- &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;- &nbsp; Grundlagen Paketformate F\u00fcr viele ist das Paketformat und die Paketverwaltung quasi identisch. Technisch gesehen ist das aber keineswegs so. Zum Einen gibt es das Paketformat,&hellip;","_links":{"self":[{"href":"https:\/\/speefak.spdns.de\/oss_lifestyle\/wp-json\/wp\/v2\/posts\/3301","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/speefak.spdns.de\/oss_lifestyle\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/speefak.spdns.de\/oss_lifestyle\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/speefak.spdns.de\/oss_lifestyle\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/speefak.spdns.de\/oss_lifestyle\/wp-json\/wp\/v2\/comments?post=3301"}],"version-history":[{"count":0,"href":"https:\/\/speefak.spdns.de\/oss_lifestyle\/wp-json\/wp\/v2\/posts\/3301\/revisions"}],"wp:attachment":[{"href":"https:\/\/speefak.spdns.de\/oss_lifestyle\/wp-json\/wp\/v2\/media?parent=3301"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/speefak.spdns.de\/oss_lifestyle\/wp-json\/wp\/v2\/categories?post=3301"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/speefak.spdns.de\/oss_lifestyle\/wp-json\/wp\/v2\/tags?post=3301"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}