[gelöst] Pfadanggaben in Konfig-Dateien korrigieren

Dieses Forum ist für die erweiterte Hilfe und Unterstützung vorgesehen:

Bitte stelle hier Deine Fragen zur fortgeschrittenen Benutzung von Mageia. Beispielsweise geht es hier um Fragen zum Netzwerk, automatischen Installationen, komplexer Serverkonfiguration, Kerneltuning, Aufsetzen eines Mageia-Mirrors, kurz gesagt: alle Aufgaben, die auch für erfahrene Benutzer eine Herausforderung sind.

[gelöst] Pfadanggaben in Konfig-Dateien korrigieren

Beitragvon linuxfreund » Nov 15th, '15, 16:15

Hallo allerseits,
schon immer gibt es in meinen PCs mehrere Linux-Root-Partitionen. Auf einer dieser Partionen läuft das produktive System, auf der Zweiten das zuvor genutzte System, auf der Dritten ein Testsystem. Mein persönliches Benutzerkonto hat immer den gleichen Namen. Um die Benutzerverzeichnisse zu unterscheiden, erfand ich eine zusätzliche Verzeichnisebene unterhalb der home-Partition.
Da gab es /home/mandriva/user, später /home/mageia/user. Zuletzt wechselte ich von Mageia1 direkt zu Mageia4. Mein Benutzerordner heißt heute /home/mageia4/user.
Für Mageia5 soll es wieder home/magiea/user heißen.
Leider schreiben viele Programme absolute Pfade in ihre Konfig-Dateien. Beim letzten Wechsel merkte ich viele Folgefehler erst mit der Zeit. Daher dachte ich jetzt, diese Korrektur automatisiert ausführen zu lassen. sed kann so etwas. Also mal im tmp-Ordner probieren:
Code: Alles auswählen
$ cp -av .jameica/cfg /tmp/jameica/
$ find /tmp/jameica/ -type f -exec sed 's/\/home\/mageia4\/user/\/home\/mageia\/user/g' {} \; > /tmp/jameica2/ 
bash: /tmp/jameica2/: Ist ein Verzeichnis
$ find /tmp/jameica/ -type f -exec sed 's/\/home\/mageia4\/user/\/home\/mageia\/user/g' {} \; > /tmp/jameica2/*

Jetzt steht eine einzige Datei "*" als Ergebnis.
Richtigerweise müsste jede eizelne Datei nach einer Korrektur zurückgeschrieben werden. Das geht vermutlich nur mit einem Skript, das mittels einer Schleife die sed-Prozedur für jede einzelne Datei aufruft.
Ist das korrekt? Wenn ja, ist dafür besser ein sed-Skript oder ein bash-Skript geeignet? Hat jemand ein konkretes Rezept für die zielgerichtete Korrektur der Pfadangaben?
Zuletzt geändert von linuxfreund am Jan 23rd, '16, 11:29, insgesamt 1-mal geändert.
linuxfreund
 
Beiträge: 186
Registriert: Mär 3rd, '12, 11:41

Re: Pfadanggaben in Konfig-Dateien korrigieren

Beitragvon doktor5000 » Nov 15th, '15, 17:04

Zum einen, benutze bitte einen anderen Trenner anstatt / wenn man Pfadangaben bearbeitet. Was immer gut geht ist | oder auch @ weil das in sehr wenig Strings vorkommt. Also dann anstatt
Code: Alles auswählen
sed 's/\/home\/mageia4\/user/\/home\/mageia\/user/g'

etwa
Code: Alles auswählen
sed 's|/home/mageia4/user/|/home/mageia/user/|g'

Dann würde ich das mit Variablen machen, also
Code: Alles auswählen
sed "s|$HOME_ALT|$HOME_NEU|g"


Und zuletzt, definitiv ein bash-Skript weil find und sed allein dafür das falsche Mittel ist. Ich hätte ja erst grep -Rl $HOME_ALT auf das Verzeichnis gemacht,
so bekommst du alle Dateien zurück wo der alte String drin steht. (ist übrigens ein kleines L und kein grosses i)

Und dann sed -i.bak benutzt, so wird in-place ersetzt und du hast für jede Datei ein Backup.
Ich bin nicht böse, sondern nur ehrlich. Und wer lesen kann, ist klar im Vorteil.
----
Mageia - the magic continues
Benutzeravatar
doktor5000
 
Beiträge: 5946
Registriert: Jun 2nd, '11, 09:39

Re: Pfadanggaben in Konfig-Dateien korrigieren

Beitragvon linuxfreund » Jan 23rd, '16, 11:24

Inzwischen läuft mga5. Mein Benutzerordner heißt immer noch /home/mageia4/user. Denn ich stellte fest, dass die automatische Korrektur großer Verzeichnisse eine erhebliche Systembelastung darstellt. Abbrüche des Skripts können die Folge sein.
Betreffs genauer Formulierung der Befehlszeilen suchte und fand ich Unterstützung in der hiesigen LUG. Heraus kam dieses Skript:
Code: Alles auswählen
$ cat ~/Skripte/pfade_korrigieren.sh
#! /bin/bash
START_DIR="$1"
HOME_ALT="/home/mageia4/user/"
HOME_NEU="/home/mageia/user/"

for i in $(grep -rl $HOME_ALT $START_DIR) ;do sed 's|$HOME_ALT|$HOME_NEU|g' $i ;done

Mit dem eingangs dieses Freds beschriebenen Testordner funktioniert dieses Skript tadellos.
Zuletzt geändert von linuxfreund am Jan 23rd, '16, 11:30, insgesamt 1-mal geändert.
linuxfreund
 
Beiträge: 186
Registriert: Mär 3rd, '12, 11:41

Re: Pfadanggaben in Konfig-Dateien korrigieren

Beitragvon doktor5000 » Jan 23rd, '16, 11:29

Bitte noch Thread als [gelöst] markieren, dazu den ersten Post editieren und dem Betreff ein [gelöst] voranstellen, Danke.
Ich bin nicht böse, sondern nur ehrlich. Und wer lesen kann, ist klar im Vorteil.
----
Mageia - the magic continues
Benutzeravatar
doktor5000
 
Beiträge: 5946
Registriert: Jun 2nd, '11, 09:39

Re: [gelöst] Pfadanggaben in Konfig-Dateien korrigieren

Beitragvon linuxfreund » Jan 23rd, '16, 11:34

Da war ich wohl nicht schnell genug! Wurde gleich anschließend erledigt. Inzwischen weiß ich doch, was sich gehört.
linuxfreund
 
Beiträge: 186
Registriert: Mär 3rd, '12, 11:41


Zurück zu Erweiterter Support

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

cron