Pacnew- und Pacsave-Dateien: Unterschied zwischen den Versionen

Aus wiki.archlinux.de
Boenki (Diskussion | Beiträge)
K Diese Vorlage gibt's nicht
K Verschiebung community -> extra
 
(11 dazwischenliegende Versionen von 5 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
{{Unvollständig}}
{{righttoc}}


Während der Installation oder dem Entfernen von Paketen wird [[Pacman]] eventuell
Während der Installation oder dem Entfernen von Paketen wird [[Pacman]] eventuell
über Dateien informieren (üblicherweise Konfigurationsdateien in
über Dateien informieren (üblicherweise Konfigurationsdateien in
/etc), die mit der Endung <code>.pacnew</code> installiert werden, oder mit der Endung
/etc), die mit der Endung {{ic|.pacnew}} installiert werden, oder mit der Endung
<code>.pacsave</code> gesichert werden.
{{ic|.pacsave}} gesichert werden.


Eine .pacnew-Datei kann während einer System-Aktualisierung (<code>pacman -Syu</code>, <code>pacman
Eine .pacnew-Datei kann während einer System-Aktualisierung ({{ic|pacman -Syu}}, {{ic|pacman
-Su</code>, oder <code>pacman -U</code>) erstellt werden, um zu verhindern, dass eine bereits
-Su}}, oder {{ic|pacman -U}}) erstellt werden, um zu verhindern, dass eine bereits
existierende, vom Nutzer veränderte Datei überschrieben wird. Wenn dies
existierende, vom Nutzer veränderte Datei überschrieben wird. Wenn dies
geschieht, gibt Pacman eine Nachricht ähnlich der folgenden aus:
geschieht, gibt Pacman eine Nachricht ähnlich der folgenden aus:
Zeile 13: Zeile 13:
  Warnung: /etc/pam.d/usermod installiert als /etc/pam.d/usermod.pacnew
  Warnung: /etc/pam.d/usermod installiert als /etc/pam.d/usermod.pacnew


Eine <code>.pacsave</code>-Datei kann während des Entfernen eines Paketes (nach <code>pacman -R</code>),
Eine {{ic|.pacsave}}-Datei kann während des Entfernen eines Paketes (nach {{ic|pacman -R}}),
oder während einer System-Aktualisierung angelegt werden (wenn das ältere Paket
oder während einer System-Aktualisierung angelegt werden (wenn das ältere Paket
zunächst entfernt werden muss). Wenn Pacman aus seiner Datenbank erfährt, dass
zunächst entfernt werden muss). Wenn Pacman aus seiner Datenbank erfährt, dass
eine bestimmte Datei einem Paket gehört, dass aktualisiert werden soll, wird
eine bestimmte Datei einem Paket gehört, dass aktualisiert werden soll, wird
eine <code>.pacsave</code>-Datei angelegt. Wenn dies geschieht, gibt Pacman eine Nachricht
eine {{ic|.pacsave}}-Datei angelegt. Wenn dies geschieht, gibt Pacman eine Nachricht
ähnlich der folgenden aus:
ähnlich der folgenden aus:


Zeile 36: Zeile 36:
=== *.pacnew ===
=== *.pacnew ===


Für jede Sicherungsdatei innerhalb eines zu aktualisierenden Paketes vergleicht Pacman drei [[md5sum|MD5-Summen]], die aus dem Inhalt der Datei erstellt werden: Eine Summe für die Version, die ursprünglich von dem Paket installiert wurde, eine für die Version, die sich derzeit innerhalb des Dateisystems befindet, und eine weitere für die zu installierende Version. Wenn die derzeit bestehende Version verändert wurde und somit von der ursprünglich installierten abweicht, kann Pacman diese Änderungen nicht in die zu installierende Version übernehmen. Statt die veränderte Version zu überschreiben, legt Pacman nun eine neue Fassung mit der Endung <code>.pacnew</code> an.
Für jede Sicherungsdatei innerhalb eines zu aktualisierenden Paketes vergleicht Pacman drei [[md5sum|MD5-Summen]], die aus dem Inhalt der Datei erstellt werden: Eine Summe für die Version, die ursprünglich von dem Paket installiert wurde, eine für die Version, die sich derzeit innerhalb des Dateisystems befindet, und eine weitere für die zu installierende Version. Wenn die derzeit bestehende Version verändert wurde und somit von der ursprünglich installierten abweicht, kann Pacman diese Änderungen nicht in die zu installierende Version übernehmen. Statt die veränderte Version zu überschreiben, legt Pacman nun eine neue Fassung mit der Endung {{ic|.pacnew}} an.


Der Vergleich der drei MD5-Summen führt zu einem der folgenden Ergebnisse:
Der Vergleich der drei MD5-Summen führt zu einem der folgenden Ergebnisse:
Zeile 48: Zeile 48:
; '''original = X, aktuell = Y, neu = Y''' : Die neue Fassung entspricht der aktuellen. Die aktuelle Version wird mit der neuen überschrieben, ohne den Nutzer zu benachrichtigen. (Obwohl die Inhalte der Dateien gleich sind, wird diese Aktion die Informationen des Dateisystems in Bezug auf Installations-, Modifizierungs- und Zugangszeiten aktualisieren. Gleichzeitig wird sichergestellt, dass veränderte Zugriffsberechtigungen übernommen werden.)
; '''original = X, aktuell = Y, neu = Y''' : Die neue Fassung entspricht der aktuellen. Die aktuelle Version wird mit der neuen überschrieben, ohne den Nutzer zu benachrichtigen. (Obwohl die Inhalte der Dateien gleich sind, wird diese Aktion die Informationen des Dateisystems in Bezug auf Installations-, Modifizierungs- und Zugangszeiten aktualisieren. Gleichzeitig wird sichergestellt, dass veränderte Zugriffsberechtigungen übernommen werden.)


; '''original = X, aktuell = Y, neu = Z''' : Alle drei Versionen unterscheiden sich voneinander. Die aktuelle Fassung wird beibehalten und die neue mit der Endung <code>.pacnew</code> gespeichert. Der Nutzer wird über die Existenz der .pacnew-Datei informiert. Er muss nun die früheren Änderungen manuell in die neue Version übertragen.
; '''original = X, aktuell = Y, neu = Z''' : Alle drei Versionen unterscheiden sich voneinander. Die aktuelle Fassung wird beibehalten und die neue mit der Endung {{ic|.pacnew}} gespeichert. Der Nutzer wird über die Existenz der .pacnew-Datei informiert. Er muss nun die früheren Änderungen manuell in die neue Version übertragen.


===.pacsave===
===.pacsave===


Wenn der Nutzer eine der Dateien verändert hat, die in <code>backup</code> spezifiziert sind, wird diese Datei in die Endung <code>.pacsave</code> umbenannt und verbleibt im Dateisystem, nachdem der Rest des Paketes entfernt wurde.
Wenn der Nutzer eine der Dateien verändert hat, die in {{ic|backup}} spezifiziert sind, wird diese Datei in die Endung {{ic|.pacsave}} umbenannt und verbleibt im Dateisystem, nachdem der Rest des Paketes entfernt wurde.


{{Hinweis|Die Verwendung der Option <code>-n</code> zusammen mit <code>pacman -R</code> wird zu einer vollständigen Entfernung ''aller'' Dateien in dem spezifizierten Paket führen. Daher werden in diesem Fall keine <code>.pacsave</code>-Dateien erstellt.}}
{{Hinweis|Die Verwendung der Option {{ic|-n}} zusammen mit {{ic|pacman -R}} wird zu einer vollständigen Entfernung ''aller'' Dateien in dem spezifizierten Paket führen. Daher werden in diesem Fall keine {{ic|.pacsave}}-Dateien erstellt.}}


===.pacorig===
== *.pac*-Dateien finden ==


Wenn während der Installation oder Aktualisierung eine Datei gefunden wird (üblicherweise eine Konfigurationsdatei in <code>/etc</code>), die zu keinem installierten Paket gehört, aber in <code>backup</code> für das derzeit zu bearbeitende Paket aufgeführt ist, wird sie mit der Endung <code>'''.pacorig'''</code> gespeichert und durch die neue Fassung ersetzt. Typischerweise geschieht dies, wenn eine Konfigurationsdatei von einem Paket einem anderen Pakt zugeordnet wird. Wenn eine solche Datei nicht in <code>backup</code> aufgeführt wäre, würde Pacman mit einem Dateikonflikt-Fehler abbrechen.
Arch Linux stellt keine offiziellen Werkzeuge zum Bearbeiten von {{ic|.pacnew}}-Dateien bereiten. Diese müssen vom Nutzer selbst aktualisiert werden; einige Vorschläge dazu finden sich im folgenden Abschnitt. Als Erstes müssen die entsprechenden Dateien gefunden werden. Besonders wenn eine große Anzahl von Dateien aktualisiert oder entfernt wird, können neue {{ic|*.pac*}}-Dateien leicht übersehen werden.


{{Hinweis|Da <code>.pacorig</code>-Dateien nur unter besonderen Umständen erstellt werden, gibt es auch keine generellen Empfehlungen für den Umgang mit ihnen. Bitte achtet in solchen Fällen stets auf die [http://www.archlinux.org/news/ Arch News].}}
Am besten sucht man zunächst dort, wo die meisten globalen Einstellungen gespeichert werden:
 
find /etc -name "*.pac*"
 
oder gleich auf der gesamten Festplatte:
 
find / -name "*.pac*"
 
Man kann auch locate verwenden, wenn dieses installiert ist. Zunächst muss die Datenbank neu indiziert werden:
 
# updatedb
 
Dann folgt:
 
locate -e --regex "\.pac"
 
Oder man durchsucht die Log-Dateien von [[Pacman]]:
 
egrep "pac(new|orig|save)" /var/log/pacman.log
 
Beachte, dass das Log nicht jene Dateien verzeichnet, die gegenwärtig im Dateisystem enthalten sind, oder die bereits entfernt wurden.
 
== .pacnew-Dateien bearbeiten ==
 
Wenn alle {{ic|.pacnew}}-Dateien gefunden wurden, können sie leicht mit Hilfe einiger Werkzeuge bearbeitet werden, die eigens dem Verschmelzen zweier Dateien dienen. Zur Auswahl stehen u.a.:
* '''vimdiff''' für [[vim]]-Nutzer
* '''ediff''' für [[Emacs]]-Nutzer
* '''Kompare''' für [[KDE]]-Nutzer
* '''meld''' für [[Gnome]]-Nutzer, oder
* '''sdiff''' aus dem Paket {{ic|diffutils}}
* '''pacdiff''' - Ein sehr rudimentäres Werkzeug, das inzwischen in [[Pacman]] enthalten ist. Der Befehl {{ic|pacdiff -h}} zeigt die verfügbaren Optionen an.
 
Nach dem Verschmelzen können die {{ic|.pacnew}}-Dateien entfernt werden.
 
Von dritter Seite werden weitere Werkzeuge im Extra-Repo oder im [[AUR]] bereitgestellt:
 
* '''pacmerge-git''' - Ein interaktives Kommandozeilen-Programm im [[AUR]]


[[Kategorie:Paketverwaltung]]
[[Kategorie:Paketverwaltung]]
[[en:Pacnew and Pacsave Files]]

Aktuelle Version vom 24. Mai 2023, 18:21 Uhr

Während der Installation oder dem Entfernen von Paketen wird Pacman eventuell über Dateien informieren (üblicherweise Konfigurationsdateien in /etc), die mit der Endung .pacnew installiert werden, oder mit der Endung .pacsave gesichert werden.

Eine .pacnew-Datei kann während einer System-Aktualisierung (pacman -Syu, pacman -Su, oder pacman -U) erstellt werden, um zu verhindern, dass eine bereits existierende, vom Nutzer veränderte Datei überschrieben wird. Wenn dies geschieht, gibt Pacman eine Nachricht ähnlich der folgenden aus:

Warnung: /etc/pam.d/usermod installiert als /etc/pam.d/usermod.pacnew

Eine .pacsave-Datei kann während des Entfernen eines Paketes (nach pacman -R), oder während einer System-Aktualisierung angelegt werden (wenn das ältere Paket zunächst entfernt werden muss). Wenn Pacman aus seiner Datenbank erfährt, dass eine bestimmte Datei einem Paket gehört, dass aktualisiert werden soll, wird eine .pacsave-Datei angelegt. Wenn dies geschieht, gibt Pacman eine Nachricht ähnlich der folgenden aus:

Warnung: /etc/pam.d/usermod gespeichert als /etc/pam.d/usermod.pacsave

Diese Dateien erfordern einen manuellen Eingriff des Nutzers und sollten idealerweise nach jeder Aktualisierung oder Lösch-Aktion bearbeitet werden. Wenn sie unbehandelt bleiben, kann dies zu Konfigurationsfehlern führen, oder die Software funktioniert vielleicht überhaupt nicht mehr.

Paket-Sicherungsdateien

Das PKGBUILD eines Paketes legt fest, welche Dateien beibehalten oder gesichert werden sollen, wenn das Paket aktualisiert oder entfernt wird. So enthält z.B. das PKGBUILD für pulseaudio die folgende Zeile:

 backup=('etc/pulse/client.conf' 'etc/pulse/daemon.conf' 'etc/pulse/default.pa')

Typen von *.pac*-Dateien

*.pacnew

Für jede Sicherungsdatei innerhalb eines zu aktualisierenden Paketes vergleicht Pacman drei MD5-Summen, die aus dem Inhalt der Datei erstellt werden: Eine Summe für die Version, die ursprünglich von dem Paket installiert wurde, eine für die Version, die sich derzeit innerhalb des Dateisystems befindet, und eine weitere für die zu installierende Version. Wenn die derzeit bestehende Version verändert wurde und somit von der ursprünglich installierten abweicht, kann Pacman diese Änderungen nicht in die zu installierende Version übernehmen. Statt die veränderte Version zu überschreiben, legt Pacman nun eine neue Fassung mit der Endung .pacnew an.

Der Vergleich der drei MD5-Summen führt zu einem der folgenden Ergebnisse:

original = X, aktuell = X, neu = X
Alle drei Dateien haben den gleichen Inhalt, und die Überschreibung kann keine Probleme verursachen. Die aktuelle Version wird mit der neuen überschrieben, ohne den Nutzer zu benachrichtigen. (Obwohl die Inhalte der Dateien gleich sind, wird diese Aktion die Informationen des Dateisystems in Bezug auf Installations-, Modifizierungs- und Zugangszeiten aktualisieren. Gleichzeitig wird sichergestellt, dass veränderte Zugriffsberechtigungen übernommen werden.)
original = X, aktuell = X, neu = Y
Die aktuelle Version entspricht der ursprünglich installierten, doch die neue unterscheidet sich davon. Da der Nutzer die Datei bisher nicht verändert hat und die neue Version Verbesserungen oder Fehlerbehebungen enthalten kann, wird die aktuelle Fassung mit der neuen überschrieben, ohne den Nutzer zu benachrichtigen. Dies ist die einzige Form des automatischen Zusammenführens von Dateien, die Pacman beherrscht.
original = X, aktuell = Y, neu = X
Die ursprüngliche Version stimmt exakt mit der neuen überein, doch die Datei wurde zwischenzeitlich vom Nutzer verändert. Die aktuelle Version wird beibehalten und die neue verworfen, ohne den Nutzer zu benachrichtigen.
original = X, aktuell = Y, neu = Y
Die neue Fassung entspricht der aktuellen. Die aktuelle Version wird mit der neuen überschrieben, ohne den Nutzer zu benachrichtigen. (Obwohl die Inhalte der Dateien gleich sind, wird diese Aktion die Informationen des Dateisystems in Bezug auf Installations-, Modifizierungs- und Zugangszeiten aktualisieren. Gleichzeitig wird sichergestellt, dass veränderte Zugriffsberechtigungen übernommen werden.)
original = X, aktuell = Y, neu = Z
Alle drei Versionen unterscheiden sich voneinander. Die aktuelle Fassung wird beibehalten und die neue mit der Endung .pacnew gespeichert. Der Nutzer wird über die Existenz der .pacnew-Datei informiert. Er muss nun die früheren Änderungen manuell in die neue Version übertragen.

.pacsave

Wenn der Nutzer eine der Dateien verändert hat, die in backup spezifiziert sind, wird diese Datei in die Endung .pacsave umbenannt und verbleibt im Dateisystem, nachdem der Rest des Paketes entfernt wurde.

Hinweis: Die Verwendung der Option -n zusammen mit pacman -R wird zu einer vollständigen Entfernung aller Dateien in dem spezifizierten Paket führen. Daher werden in diesem Fall keine .pacsave-Dateien erstellt.

*.pac*-Dateien finden

Arch Linux stellt keine offiziellen Werkzeuge zum Bearbeiten von .pacnew-Dateien bereiten. Diese müssen vom Nutzer selbst aktualisiert werden; einige Vorschläge dazu finden sich im folgenden Abschnitt. Als Erstes müssen die entsprechenden Dateien gefunden werden. Besonders wenn eine große Anzahl von Dateien aktualisiert oder entfernt wird, können neue *.pac*-Dateien leicht übersehen werden.

Am besten sucht man zunächst dort, wo die meisten globalen Einstellungen gespeichert werden:

find /etc -name "*.pac*"

oder gleich auf der gesamten Festplatte:

find / -name "*.pac*"

Man kann auch locate verwenden, wenn dieses installiert ist. Zunächst muss die Datenbank neu indiziert werden:

# updatedb

Dann folgt:

locate -e --regex "\.pac"

Oder man durchsucht die Log-Dateien von Pacman:

egrep "pac(new|orig|save)" /var/log/pacman.log

Beachte, dass das Log nicht jene Dateien verzeichnet, die gegenwärtig im Dateisystem enthalten sind, oder die bereits entfernt wurden.

.pacnew-Dateien bearbeiten

Wenn alle .pacnew-Dateien gefunden wurden, können sie leicht mit Hilfe einiger Werkzeuge bearbeitet werden, die eigens dem Verschmelzen zweier Dateien dienen. Zur Auswahl stehen u.a.:

  • vimdiff für vim-Nutzer
  • ediff für Emacs-Nutzer
  • Kompare für KDE-Nutzer
  • meld für Gnome-Nutzer, oder
  • sdiff aus dem Paket diffutils
  • pacdiff - Ein sehr rudimentäres Werkzeug, das inzwischen in Pacman enthalten ist. Der Befehl pacdiff -h zeigt die verfügbaren Optionen an.

Nach dem Verschmelzen können die .pacnew-Dateien entfernt werden.

Von dritter Seite werden weitere Werkzeuge im Extra-Repo oder im AUR bereitgestellt:

  • pacmerge-git - Ein interaktives Kommandozeilen-Programm im AUR