• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Gelöst: smart error: Macro % has illegal name (%define)

ba0645

Member
Habe seit heute folgendes Problem mit smart:

Beim Aufruf von smart check bzw. upgrade kommt folgende Meldung einmal:
error: Macro % has illegal name (%define)

Beim Aufruf von smart update kommt die selbe Meldung zweimal.

Merkwürdigerweise scheint smart trotzdem zu laufen. Wie bekomme ich die Meldung wieder weg ?
Habe bereits unter var/lib/smart und /tmp bereinigt und smart erneut installiert - ohne Erfolg.

Wie komme ich dem Fehler auf die Spur ? Auch google etc. hat nichts ausgespuckt.
 

frankwbb

Newbie
ba0645 schrieb:
Beim Aufruf von smart check bzw. upgrade kommt folgende Meldung einmal:
error: Macro % has illegal name (%define)

Beim Aufruf von smart update kommt die selbe Meldung zweimal.

Merkwürdigerweise scheint smart trotzdem zu laufen. Wie bekomme ich die Meldung wieder weg ?
Habe bereits unter var/lib/smart und /tmp bereinigt und smart erneut installiert - ohne Erfolg.

Wie komme ich dem Fehler auf die Spur ? Auch google etc. hat nichts ausgespuckt.

Exakt diese Fehlermeldung habe ich seit heute auch. Wäre über jeden Tipp sehr dankbar :twisted:
 
OP
ba0645

ba0645

Member
Auch ein Aufruf von rpm bringt diesen Fehler.

rpm --initdb und rpm --rebuilddb hat leider auch nicht geholfen.
 

oc2pus

Ultimate Guru
ba0645 schrieb:
Auch ein Aufruf von rpm bringt diesen Fehler.

rpm --initdb und rpm --rebuilddb hat leider auch nicht geholfen.
rpm --initdb ==> SCHWACHSINN!!
damit löscht du deine gesamte Datenbank :mrgreen:

bei welchem Paket bzw channel tritt dieser Fehler den auf?
==> TIP: probiere einen channel nach dem anderen zu deaktivieren bis du den Störenfried gefundne hast, mit grosser Wahrscheinlichkeit ist es ein defektes Paket welches die Metadaten zerschossen hat ...

aber nach rpm --initdb bist du eh "verloren"
 
OP
ba0645

ba0645

Member
Danke für die aufmunternden Worte wegen dem initdb :-(.

Er bringt den Fehler schon bei blanker Eingabe von rpm. Das mit den Channel deaktivieren werde ich mal ausprobieren. Danke erst einmal.
 

oc2pus

Ultimate Guru
ba0645 schrieb:
Danke für die aufmunternden Worte wegen dem initdb :-(.

Er bringt den Fehler schon bei blanker Eingabe von rpm. Das mit den Channel deaktivieren werde ich mal ausprobieren. Danke erst einmal.

verstehe es: duhast KEINE rpm-Datenbank mehr ... (bzw sie ist leer)

man rpm:
Use --initdb to create a new database, use --rebuilddb to rebuild the database indices from the installed package headers.

wech is wech ...

rpm -qa ==> Liste der installierten Paket
müsste bei dir leer sein, oder einen Fehler liefern ...

in /var/adm/backup/rpmdb sind die letzen 5 RPM-Datenbanken abgespeichert, von dort kannst du eine zurückholen.
 
OP
ba0645

ba0645

Member
Hallo oc2pus,
habe jetzt alle alle Smart-Channels und auch alle RPM-Quellen entfernt doch leider ist der Fehler geblieben. Habe leider keinen Plan mehr was ich jetzt noch probieren kann oder wo ich suchen soll. Werde wenn ich nichts finde die Kiste doch früher oder später mal plattmachen müssen. Na eventuell finde ich ja noch was und durch das Suchen nach Fehlern lernt man ja auch das eine oder andere ;-)

Falls noch jemand einen Hinweis hat wo und was ich noch testen kann würde ich mich freuen.
 
OP
ba0645

ba0645

Member
Hallo oc2pus,

habe keine Ahnung wieso, aber die RPM-Datenbank ist noch da :). Habe diese mit dem letzten Backup von gestern verglichen und die sind von der Größe her nahezu identisch. Somit Glück gehabt. Das mit dem Backup-Verzeichnis wußte ich noch nicht - man lernt nie aus. Werde dann mal weitersuchen ob ich noch was finde.

Danke erst mal für Deine Hilfe !!!
 

oc2pus

Ultimate Guru
ba0645 schrieb:
Hallo oc2pus,

habe keine Ahnung wieso, aber die RPM-Datenbank ist noch da :). Habe diese mit dem letzten Backup von gestern verglichen und die sind von der Größe her nahezu identisch. Somit Glück gehabt. Das mit dem Backup-Verzeichnis wußte ich noch nicht - man lernt nie aus. Werde dann mal weitersuchen ob ich noch was finde.

Danke erst mal für Deine Hilfe !!!

hast du mal rpm -qa ausgeführt ?
das sollte alle installierten Pakete auflisten, wenn nicht, dann hast du deine leere RPM-Datenbank mit der Sicherung der leeren RPM-Datenbank verglichen ..
 
OP
ba0645

ba0645

Member
Er zeigt mir jede Menge Pakete mit rpm -qa an - mit altem und neuem DB-Stand. Soweit ist alles OK. Habe vorsichtshalber aber den gestrigen DB-Stand zurückgespielt. Also den vor dem RPM --initdb.

Gibt es eine Möglichkeit den Aufruf von rpm zu protokollieren, so daß er anzeigt wo es hakt bzw wo der Fehler herkommt?
 
OP
ba0645

ba0645

Member
Vermutlich liegt mein Fehler in den Java RPMs begraben. ein strace /bin/rpm liefert unter anderem das:

-------8<---------------8<---------------8<---------------8<---------------8<---------------8<--------

open("/etc/rpm/macros.jpackage", O_RDONLY|O_LARGEFILE) = 3
fcntl64(3, F_SETFD, FD_CLOEXEC) = 0
mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f32000
poll([{fd=3, events=POLLIN, revents=POLLIN}], 1, 1000) = 1
read(3, "#\n# RPM macros for Java applicat"..., 8192) = 8192
poll([{fd=3, events=POLLIN, revents=POLLIN}], 1, 1000) = 1
read(3, "/%{name}.conf\\\nfi\\\n\\\n# Source us"..., 8192) = 407
poll([{fd=3, events=POLLIN, revents=POLLIN}], 1, 1000) = 1
read(3, "", 7785) = 0
open("/usr/share/locale-langpack/de_DE.UTF-8/LC_MESSAGES/rpm.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/de_DE.UTF-8/LC_MESSAGES/rpm.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale-langpack/de_DE.utf8/LC_MESSAGES/rpm.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/de_DE.utf8/LC_MESSAGES/rpm.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale-langpack/de_DE/LC_MESSAGES/rpm.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/de_DE/LC_MESSAGES/rpm.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale-langpack/de.UTF-8/LC_MESSAGES/rpm.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/de.UTF-8/LC_MESSAGES/rpm.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale-langpack/de.utf8/LC_MESSAGES/rpm.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/de.utf8/LC_MESSAGES/rpm.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale-langpack/de/LC_MESSAGES/rpm.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/de/LC_MESSAGES/rpm.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
write(2, "error: ", 7error: ) = 7
write(2, "Macro % has illegal name (%defin"..., 35Macro % has illegal name (%define)
) = 35
poll([{fd=3, events=POLLIN, revents=POLLIN}], 1, 1000) = 1
read(3, "", 8192) = 0
close(3) = 0

-------8<---------------8<---------------8<---------------8<---------------8<---------------8<--------

Werde mal in dieser Richtung weitersuchen.
 
OP
ba0645

ba0645

Member
Erstmal 1000 DANK an oc2pus für die Unterstützung !!!

Habe mal wieder viel gelernt - und - strace ist Klasse :-D

Der Fehler scheint an /etc/rpm/macros.jpackage zu liegen. Die habe ich mal weggenommen dann geht der rpm-Aufruf ohne Fehler !!. Die Datei kommt mit den jpackage-utils und hat bei mir die Versionsnummer 1.7.4-1.jpp@noarch. Vermutlich ist in der Version ein Fehler. Werde mir die Datei morgen mal zu Gemüte führen.

Habe die Datei von http://mirrors.sunsite.dk/jpackage/1.7/generic/RPMS.free/jpackage-utils-1.7.4-1.jpp.noarch.rpm durch Smart bekommen.
Bleibt nur zu hoffen, daß der Fehler bald durch eine neuere Version geflickt wird. Werde wohl auf die 1.7.0 zurückgehen und testen ob es da funktioniert.

Es gibt dazu auch bereits einen Eintrag in Bugzilla von jpackage:
293 maj P5 Linu jpackage-discuss@jpackage.org NEW macros.jpackage causes rpm error message
und das ist der Link dazu:
https://www.jpackage.org/bugzilla/show_bug.cgi?id=293

da ist auch eine Beschreibung was man tun kann um den Fehler zu beheben - oder - auf die nächste Version des RPMs warten.
 
OP
ba0645

ba0645

Member
... und für alle die schnell eine Lösung brauchen hier die Zusammenfassung:

unter /etc/rpm die macros.jpackage wie am Schluß wie folgt editieren:

>Upon further review it seems that the problem may be as simple as a missing backslash in the line before the last, i.e.:
chmod 755 $RPM_BUILD_ROOT%{_bindir}/%5
%{nil}

>instead of
chmod 755 $RPM_BUILD_ROOT%{_bindir}/%5\
%{nil}

Hat bei mir so funktioniert.
 
OP
ba0645

ba0645

Member
Seit gestern Abend gibt es ein neues jpackage-Paket in dem die besagte Änderung auch drin ist.

Habt Ihr den \ hinter die 5 geschrieben ?

Testhalber könnt Ihr die /etc/rpm/macros.jpackage auch mal umbenennen in macros.jpackage.old und dann sehen ob smart oder rpm noch den Fehler bringen. Bei mir war der Fehler dann weg. Wenn das bei Euch auch so ist, so liegt der Fehler sicher an dieser Datei.

Evtl. könnt Ihr mir dann die besagte Datei mal schicken.
 

elastic

Member
Oh mann, in dem Ordner war noch ein Backup File der alten Datei, welches KWrite automatisch angelegt hat ... - Dieses hat den Fehler ausgelöst ... *schäm*
 
Oben