Hallo Leute, ich teste gerade die Replikation der Postfix-Konfiguration auf mehrere Server. Zum Abgleich habe ich ein kleines Makefile gebaut, welches zwar läuft, aber nicht die Funktionalität hat, welche ich mir wünsche. Konkret geht es darum, dass die alten Konfig-Dateien in einem Backup-Verzeichnis gesichert werden sollen und ich dieses gerne in dem Makefile dynamisch zuordnen möchte. BACKUPDIR=/backup/postfix_$(date +%F) Dies scheint aber nicht zu funktionieren. Wie kann ich in Makefiles solche Variablen einsetzen? -- Sandy Antworten bitte nur in die Mailingliste! PMs bitte an: news-reply2 (@) japantest (.) homelinux (.) com -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo, Sandy Drobic wrote (17.8.2007):
BACKUPDIR=/backup/postfix_$(date +%F)
Ich vermute, bei $(date +%F) wir "date +%F) als Makefile-Variable verstanden, also nicht als Befehl. Vielleicht solltest Du vorher eine Variable definieren, z.B. DATUM=date +%F und danach die Variable verwenden: BACKUPDIR=/backup/postfix_$(DATUM) Andere möglichkeit könnte sein: BACKUPDIR=/backup/postfix_$$(date +%F) Dies, weil: "There is an important distinction to be made here between Make variables, like '$(includedir)', and shell variables, such as `$$p'. [...]Unfortunately the `$' symbol is already used to denote Make variables, and consequently to pass `$' through to the shell from the command part of a rule the `$' symbol needs to be doubled up: Hence the `$$p' in this command becomes `$p' when finally executed by the shell." (s. http://www.lrde.epita.fr/~akim/gnuprog2.pdf, S. 120) Vielleicht funktioniert's damit. Gruß Kimmo -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
K. Elo wrote:
Hallo,
Sandy Drobic wrote (17.8.2007):
BACKUPDIR=/backup/postfix_$(date +%F)
Ich vermute, bei $(date +%F) wir "date +%F) als Makefile-Variable verstanden, also nicht als Befehl.
Vielleicht solltest Du vorher eine Variable definieren, z.B. DATUM=date +%F
Dies wird leider nicht als Befehl ausgewertet und der Variable DATUM zugewiesen.
und danach die Variable verwenden: BACKUPDIR=/backup/postfix_$(DATUM)
Andere möglichkeit könnte sein:
BACKUPDIR=/backup/postfix_$$(date +%F)
Auch dies kann nicht funktionieren, da es sich hier nicht um eine Shellvariable handelt. Ansonsten müsste ich diese vorher definieren. Möglich wäre es, da ich make aus einem Script aufrufe. Ich denke, ich rufe einfach ein Shellscript aus dem Makefile auf, welches das Sichern der alten Konfig übernimmt. Nicht sehr elegant, aber es sollte funktionieren. -- Sandy Antworten bitte nur in die Mailingliste! PMs bitte an: news-reply2 (@) japantest (.) homelinux (.) com -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am Freitag, 17. August 2007 schrieb Sandy Drobic:
Hallo Leute,
ich teste gerade die Replikation der Postfix-Konfiguration auf mehrere Server. Zum Abgleich habe ich ein kleines Makefile gebaut, welches zwar läuft, aber nicht die Funktionalität hat, welche ich mir wünsche.
Konkret geht es darum, dass die alten Konfig-Dateien in einem Backup-Verzeichnis gesichert werden sollen und ich dieses gerne in dem Makefile dynamisch zuordnen möchte.
BACKUPDIR=/backup/postfix_$(date +%F)
Dies scheint aber nicht zu funktionieren. Wie kann ich in Makefiles solche Variablen einsetzen?
es muß BACKUPDIR=/backup/postfix_$(shell date +%F) heissen, oder portabler: BACKUPDIR=/backup/postfix_`date +%F` Zu Bedenken ist, daß _jedesmal_ wenn $(BACKUPDIR) benutzt wird das Kommnado date erneut aufgerufen wird. Bye Jürgen -- Dr.rer.nat. Juergen Vollmer, Viktoriastrasse 15, D-76133 Karlsruhe Tel: +49(721) 92 04 87 1 Fax: +49(721) 92 04 87 2 Juergen.Vollmer@informatik-vollmer.de www.informatik-vollmer.de Internet-Telefonie: www.skype.com Benutzer: juergen.vollmer
Dr. Jürgen Vollmer wrote:
Am Freitag, 17. August 2007 schrieb Sandy Drobic:
Konkret geht es darum, dass die alten Konfig-Dateien in einem Backup-Verzeichnis gesichert werden sollen und ich dieses gerne in dem Makefile dynamisch zuordnen möchte.
BACKUPDIR=/backup/postfix_$(date +%F)
Dies scheint aber nicht zu funktionieren. Wie kann ich in Makefiles solche Variablen einsetzen?
es muß
BACKUPDIR=/backup/postfix_$(shell date +%F)
heissen, oder portabler:
BACKUPDIR=/backup/postfix_`date +%F`
Zu Bedenken ist, daß _jedesmal_ wenn $(BACKUPDIR) benutzt wird das Kommnado date erneut aufgerufen wird.
Hm, dass könnte natürlich eine Tretmine werden. Mit den Backticks funktioniert es jedenfalls. Jetzt muss ich mir nur noch einen Mechanismus überlegen, damit das Backup-Verzeichnis nur einmal angelegt wird. Vermutlich wird es am einfachsten sein, wenn ich in dem aufrufenden Script das Backupverzeichnis anlege und als Shellvariable definiere und diese dann in dem Makefile verwende. Das aufrufende Script kann dann notfalls das Backupverzeichnis löschen, wenn es leer geblieben ist. Damit habe ich jedenfalls alle notwendigen Infos. Vielen Dank an alle hier, das hat mir sehr geholfen! -- Sandy Antworten bitte nur in die Mailingliste! PMs bitte an: news-reply2 (@) japantest (.) homelinux (.) com -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am Freitag, 17. August 2007 schrieb Sandy Drobic:
Dr. Jürgen Vollmer wrote:
Am Freitag, 17. August 2007 schrieb Sandy Drobic:
Konkret geht es darum, dass die alten Konfig-Dateien in einem Backup-Verzeichnis gesichert werden sollen und ich dieses gerne in dem Makefile dynamisch zuordnen möchte.
BACKUPDIR=/backup/postfix_$(date +%F)
Dies scheint aber nicht zu funktionieren. Wie kann ich in Makefiles solche Variablen einsetzen?
es muß
BACKUPDIR=/backup/postfix_$(shell date +%F)
heissen, oder portabler:
BACKUPDIR=/backup/postfix_`date +%F`
Zu Bedenken ist, daß _jedesmal_ wenn $(BACKUPDIR) benutzt wird das Kommnado date erneut aufgerufen wird.
Hm, dass könnte natürlich eine Tretmine werden. Mit den Backticks funktioniert es jedenfalls. Jetzt muss ich mir nur noch einen Mechanismus überlegen, damit das Backup-Verzeichnis nur einmal angelegt wird.
GNU-Make kennt die "Einmalzuweisung" BACKUPDIR := /backup/postfix_`date +%F` (also ":=" statt "=") oder aber, wenn es nur eine Makefile-Regel ist: backup: BACKUPDIR=/backup/postfix_`date +%F` ; \ mkdir $$BACKUPDIR; \ .... ; \ tar -czvf ... $$BACKUPDIR also die ganze Regel zu einem Shell-Kommando machen, dann ist BACKUPDIR eine "ganz normale" Shell-Variable. Bye Jürgen -- Dr.rer.nat. Juergen Vollmer, Viktoriastrasse 15, D-76133 Karlsruhe Tel: +49(721) 92 04 87 1 Fax: +49(721) 92 04 87 2 Juergen.Vollmer@informatik-vollmer.de www.informatik-vollmer.de Internet-Telefonie: www.skype.com Benutzer: juergen.vollmer
moin moin, Am Freitag, 17. August 2007 schrieb Sandy Drobic:
Konkret geht es darum, dass die alten Konfig-Dateien in einem Backup-Verzeichnis gesichert werden sollen und ich dieses gerne in dem Makefile dynamisch zuordnen möchte.
BACKUPDIR=/backup/postfix_$(date +%F)
Dies scheint aber nicht zu funktionieren. Wie kann ich in Makefiles solche Variablen einsetzen?
Backticks sind die Lösung... backup: echo /backup/postfix_`date +%F` :~/> make backup echo /backup/postfix_`date +%F` /backup/postfix_2007-08-17 Ciao Andre -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hi Sandy, On Fri, 17 Aug 2007 12:31:14 +0200, Sandy Drobic wrote:
BACKUPDIR=/backup/postfix_$(date +%F)
Dies scheint aber nicht zu funktionieren. Wie kann ich in Makefiles solche Variablen einsetzen?
Mach das BACKUPDIR=/backup/postfix_$(shell date '+%F') und es sollte funktionieren :) Make ist eben keine Shell und hat eine andere Syntax $() ist eben kein Ersatz für `` sondern die Dereferenzierung einer Variable oder, bei GNU make, der Aufruf spezieller Funktionen von make. Genaueres kannst Du 'pinfo make' entnehmen. Philipp -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
participants (5)
-
Andre Heine
-
Dr. Jürgen Vollmer
-
K. Elo
-
Philipp Thomas
-
Sandy Drobic