[[Vorlage(archiviert, "Wie auf der [http://paco.sourceforge.net: Projektseite] {en} bekannt gegeben, wird paco unter dem Namen '''porg''' weiter entwickelt. Details gibt es in diesem Wiki unter [:porg:].")]] {{{#!vorlage Wissen [:Pakete_installieren: Installation von Programmen] [:Terminal: Ein Terminal öffnen] [:sudo: Root-Rechte erlangen] }}} [[Inhaltsverzeichnis(1)]] [[Bild(Wiki/Icons/terminal.png, 48, align=left)]] Ein klassisches Problem bei Kompilierung eines Programms aus dem Quellcode ist, dass man (als Nicht-Entwickler) häufig nicht nachvollziehen kann, welche Dateien bei der Installation wohin kopiert werden. Das macht eine Deinstallation so gut wie unmöglich, wenn der ursprüngliche Entwickler keinen `make uninstall`-Befehl hinterlegt hat. [sourceforge2:paco:Paco] {en} ('''PAC'''kage '''O'''rganizer) ist ein Kommandozeilenwerkzeug, um ein Protokoll der installierten Dateien anzulegen. Mit Hilfe dieses Protokolls können selbstkompilierte Programme anschließend wieder rückstandsfrei entfernt werden. Erstellt wurde paco mit [:Perl:] als Ergänzung für [wikipedia:Linux_From_Scratch:Linux From Scratch]. Eine andere Möglichkeit der Kompilierung, die die Erstellung eines DEB-Pakets einschließt, ist [:checkinstall:]. = Installation = [[Bild(Wiki/Icons/synaptic.png, 48, align=right)]] Das Programm ist bis einschließlich [:16.04:Ubuntu 16.04] Bestandteil der offiziellen Paketquellen. Folgendes Paket muss installiert werden [1]: {{{#!vorlage Paketinstallation paco, universe }}} Ab [:16.10:Ubuntu 16.10] wird der Nachfolger [:porg:] installiert. = Verwendung = Zwei einfache Beispiele, die die Verwendung von paco demonstrieren [2]: {{{#!vorlage Befehl tar xvf foo-1.0.tar.gz cd foo-1.0 ./configure make sudo paco -lp foo-1.0 "make install" }}} Der einzige Unterschied zum sonst üblichen Dreisatz aus `configure`, `make` und `sudo make install` ist in der letzten Zeile zu finden. Die Option `-lp` besteht aus zwei Parametern: `-l` (log) sorgt dafür, dass ein Installationsprotokoll angelegt wird, während `-p` (package) sich auf das Programm `foo` in der Version `1.0` bezieht. Eine Deinstallation erfolgt mit dem Befehl: {{{#!vorlage Befehl sudo paco -r foo-1.0 }}} == Weitere Beispiele == * Welche Programme wurden über paco installiert? {{{#!vorlage Befehl paco -a }}} {{{ foo-1.0 }}} * Welche Dateien gehören zum Programm `foo-1.0`? {{{#!vorlage Befehl paco -f foo-1.0 }}} {{{ /usr/local/bin/foo /usr/local/bin/bar /usr/local/bin/foobar }}} * Zu welchem Programm gehört die Datei `foo`: {{{#!vorlage Befehl paco -q /usr/local/bin/foo }}} {{{ /usr/local/bin/foo: foo-1.0 }}} Neben diesen Beispielen besitzt das Programm eine Reihe weiterer Optionen, die der lesenswerten [:man:Manpage] zu entnehmen sind. paco verwendet '''/var/log/paco/''' als Standardordner für Installationsprotokolle und die Datei '''/etc/pacorc''' für systemweite Einstellungen. == pacoball == Mit diesem Zusatzprogramm können Binärpakete im TGZ-Format erzeugt werden. Des Weiteren kann es benutzt werden, um diese Pakete zu (re)installieren. == Grafische Oberfläche == Wenn die grundlegenden Vorgänge verstanden worden sind, kann man alternativ zur Kommandozeilenversion auch eine ausschließlich englischsprachige grafische Oberfläche nutzen. Diese kann allerdings kein Installationsprotokoll erstellen, sondern dient in erster Linie zur Verwaltung der über paco installierten Programme. {{{#!vorlage Paketinstallation gpaco, universe }}} Anschließend kann das Programm bei Ubuntu-Varianten mit einem Anwendungsmenü über den Eintrag ''„System -> Package Organizer“'' oder den Befehl `gpaco` gestartet werden. Zum Entfernen eines systemweit installierten Programms werden Root-Rechte benötigt [3]. = Problembehebung = == Nachträgliche Nutzung == Um ein selbstkompiliertes und bereits per `sudo make install` installiertes Programm mit paco deinstallieren zu können, wiederholt man die Installation des selbstkompilierten Programms wie [#Verwendung oben angegeben]. Daneben gibt es eine zweite Möglichkeit, ein bereits installiertes Programm mit paco zu verwalten. Diese Variante funktioniert aber nur, wenn bekannt ist, dass ausschließlich ein bestimmter Ordner verwendet wird. Beispiel: {{{#!vorlage Befehl find /opt/bar-1.1 | paco -lp bar-1.1 }}} == Einschränkungen == Grundsätzlich werden von paco nur Dateien protokolliert, aber keine Verzeichnisse (Ordner). Falls eine Installationsroutine einen neuen Ordner anlegt, aber keine Datei in diesem speichert, wird das nicht erfasst. Das gilt auch für während der Laufzeit eines Programms erstellte Dateien und Ordner, z.B. im Homeverzeichnis. Durch Beschränkungen von `LD_PRELOAD` kann paco nicht mit SUID-Programmen verwendet werden. Als Beispiel soll der folgende Befehl dienen: {{{#!vorlage Befehl paco -lp foobar-1.0 "sudo make install" }}} Zwar wird nun das Programm `foobar-1.0` wie gewünscht installiert, aber ein Installationsprotokoll kann nicht erstellt werden. = Links = * [sourceforge2:paco:Projektseite] {en} * [http://paco.sourceforge.net/doc.html Documentation] {en} * [http://paco.sourceforge.net/faq.html FAQ] {en} - häufige Fragen und Antworten * [man:paco:Manpage] {en} * [:Programme_kompilieren:] {Übersicht} Übersichtsartikel #tag: Paketverwaltung, Installation, System, Programmierung