Pacnew- und Pacsave-Dateien: Unterschied zwischen den Versionen
Abschnitt .pacnew fertiggestellt |
Dirk (Diskussion | Beiträge) K Verschiebung community -> extra |
||
(18 dazwischenliegende Versionen von 8 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
{{ | {{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 | /etc), die mit der Endung {{ic|.pacnew}} installiert werden, oder mit der Endung | ||
{{ic|.pacsave}} gesichert werden. | |||
Eine .pacnew-Datei kann während einer System-Aktualisierung ( | Eine .pacnew-Datei kann während einer System-Aktualisierung ({{ic|pacman -Syu}}, {{ic|pacman | ||
-Su | -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 15: | 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 | 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 | eine {{ic|.pacsave}}-Datei angelegt. Wenn dies geschieht, gibt Pacman eine Nachricht | ||
ähnlich der folgenden aus: | ähnlich der folgenden aus: | ||
Zeile 38: | 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 | 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: | ||
'''original = X, aktuell = X, neu = X''' | ; '''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.) | ||
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 {{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=== | |||
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 {{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.}} | |||
== *.pac*-Dateien finden == | |||
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. | |||
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]] | |||
[[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