• 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) nach perl-Update kommt in Yast: cpio Bad magic

cjmatsel

Newbie
Hi,

ich habe seit einiger Zeit einen OpenSuse 10.3-Server laufen. Vor kurzem habe ich mit cpan ein Perl-Update (von 5.8.8 auf 5.8.9) durchgeführt. Leider verweigert mit Yast jetzt die Arbeit: Neue Pakete werden zwar heruntergeladen, aber beim Entpacken kommt cpio: Bad magic. Hängt das Problem zusammen und wenn ja, wie könnte ich das lösen? Das System läuft zwar, aber Updates sind so nicht möglich... :/
 
A

Anonymous

Gast
Hi,

wenn ich mich recht entsinne, hat die Software-Verwaltung einige Abhängigkeiten zu best. Perl-Paketen. Ich denke, dass diese nun durch dein Update futsch sind. Ausserdem kann es sein, dass die CPAN-Pakete in anderen Pfaden liegen als die Suse-Pakete.
Ich weiss jetzt nur nicht genau, wie man die Abhängigkeiten herausfindet...Mal schauen, ob das mit zypper geht....
 
OP
C

cjmatsel

Newbie
Leider kenn ich mich mit zypper überhaupt nicht aus. Aber danke für den Tip. Ich hab mal versucht, ein kleines Tool zu installieren: "zypper install iotop", aber der Fehler beim Entpacken bleibt
Code:
Error: Subprocess failed. Error: RPM failed: error: unpacking of archive failed: cpio: Bad magic

Hmm,

kann ich temporär den Pfad für die Perl-Installation wiede rauf den alten Stand bringen und dann normal aktualisieren?
 

whois

Ultimate Guru
Welche Perl Pakete sind denn jetzt definitv installiert?
Wirklich die 5.89 oder hängt da ein Mischmasch aus beiden drin?
 
A

Anonymous

Gast
Guten Morgen,

Code:
Herbie@RossTheBoss:~> rpm -q --requires yast2
fillup
coreutils
grep
diffutils
yast2-core >= 2.17.1
yast2-ycp-ui-bindings >= 2.17.8
yast2-pkg-bindings >= 2.17.31
yast2_ui
yast2-branding
perl-Config-Crontab
coreutils
sysconfig
yast2-xml
yast2-hardware-detection
yast2-perl-bindings
perl-XML-Simple
rpmlib(VersionedDependencies) <= 3.0.3-1
/bin/sh
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(CompressedFileNames) <= 3.0.4-1
/bin/bash
/usr/bin/perl
rpmlib(PayloadIsLzma) <= 4.4.2-1
Code:
Herbie@RossTheBoss:~> rpm -q --requires rpm
insserv
sed
fillup
coreutils
grep
diffutils
permissions
rpmlib(VersionedDependencies) <= 3.0.3-1
/bin/sh
/bin/sh
/bin/sh
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(CompressedFileNames) <= 3.0.4-1
/bin/bash
/bin/sh
/usr/bin/perl
libbz2.so.1()(64bit)
libc.so.6()(64bit)
libc.so.6(GLIBC_2.2.5)(64bit)
libc.so.6(GLIBC_2.3)(64bit)
libc.so.6(GLIBC_2.3.4)(64bit)
libc.so.6(GLIBC_2.4)(64bit)
libdl.so.2()(64bit)
libdl.so.2(GLIBC_2.2.5)(64bit)
libm.so.6()(64bit)
libm.so.6(GLIBC_2.2.5)(64bit)
libpopt.so.0()(64bit)
libpthread.so.0()(64bit)
libpthread.so.0(GLIBC_2.2.5)(64bit)
libpthread.so.0(GLIBC_2.3.2)(64bit)
libpthread.so.0(GLIBC_2.3.3)(64bit)
librpm-4.4.so()(64bit)
librpmbuild-4.4.so()(64bit)
librpmdb-4.4.so()(64bit)
librpmio-4.4.so()(64bit)
librt.so.1()(64bit)
libselinux.so.1()(64bit)
libz.so.1()(64bit)
rpmlib(PayloadIsBzip2) <= 3.0.5-1
Herbie@RossTheBoss:~>

Du könntest versuchen, die perl-xml-simple-, yast2-perl-bindings-, perl-Config-Crontab-, perl-Rpms aus dem Oss(?)-Repo runterzuladen und mit
Code:
rpm -ivh --force perl-*
manuell zu installieren. Ob das so funktioniert, weiss ich nicht, weil rpm ja auch perl braucht...
 
OP
C

cjmatsel

Newbie
Sorry,

sitze erst jetzt wieder vor dem System und kann alle Fragen beantworten.

@whois: Es ist ein Mischmasch aus beiden Versionen. Leider! Aber das Standard-Perl "perl -v" ist 5.8.9.

@DaBossDaChef:
Code:
rpm -q --requires rpm
insserv
sed
fillup
coreutils
permissions
/bin/sh
/bin/sh
/bin/sh
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(VersionedDependencies) <= 3.0.3-1
/bin/bash
/bin/sh
/usr/bin/perl
libbz2.so.1
libc.so.6
libc.so.6(GLIBC_2.0)
libc.so.6(GLIBC_2.1)
libc.so.6(GLIBC_2.1.3)
libc.so.6(GLIBC_2.2)
libc.so.6(GLIBC_2.2.3)
libc.so.6(GLIBC_2.3)
libc.so.6(GLIBC_2.3.2)
libc.so.6(GLIBC_2.3.4)
libc.so.6(GLIBC_2.4)
libdl.so.2
libdl.so.2(GLIBC_2.0)
libdl.so.2(GLIBC_2.1)
libm.so.6
libm.so.6(GLIBC_2.0)
libpopt.so.0
libpthread.so.0
libpthread.so.0(GLIBC_2.0)
libpthread.so.0(GLIBC_2.1)
libpthread.so.0(GLIBC_2.2)
libpthread.so.0(GLIBC_2.3.3)
librpm-4.4.so
librpmbuild-4.4.so
librpmdb-4.4.so
librpmio-4.4.so
librt.so.1
libz.so.1
rpmlib(PayloadIsBzip2) <= 3.0.5-1
Code:
rpm -q --requires yast2
yast2-core >= 2.15.4
yast2-pkg-bindings >= 2.15.47
yast2_ui
yast2_theme
perl-Config-Crontab
coreutils
yast2-xml
yast2-hardware-detection
yast2-perl-bindings
rpmlib(VersionedDependencies) <= 3.0.3-1
/bin/sh
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(CompressedFileNames) <= 3.0.4-1
/bin/bash
/usr/bin/perl
rpmlib(PayloadIsBzip2) <= 3.0.5-1

edit: Die bei beiden Auflistungen stehende perl-Version ist perl 5.8.9...

edit2: Ich hatte damals das alte Perl-Binary gesichert unter perl5.8.8. Ich werde das mal umbenennen und testen, ob der Fehler noch auftritt... Melde mich gleich...
 

whois

Ultimate Guru
Puh kannst du nicht versuchen die alte Perl Version wieder aufzubauen?
Ich glaube so wird das sonst nichts. :???:
 
OP
C

cjmatsel

Newbie
@whois: Sorry, ich hab Deine Meldung erst jetzt gelesen... Ich hatte damals das alte Binary umbenannt (von /usr/bin/perl in /usr/bin/perl5.8.8 ) und damit gesichert. Ich hab das jetzt wieder rückgängig gemacht; leider kein Erfolg... "cpio: Bad magic"

Wie kann ich das alte Perl wieder aufbauen und dann korrekt aktualisieren? Oder kann ich nicht gleich das neue Perl aufbauen?
 

whois

Ultimate Guru
Hi

Sorry, mit dem neuen Perl habe ich noch keine Erfahrung gesammelt dazu fehlt mir einfach die Zeit.
Was du versuchen kannst ist die Perl Suse DVD Version drauf zu tun.
Also zuerst den ganzen Kram löschen und dann ein downgrade.
Mach dir bitte aber vorher ein Backup davon, das bringt extra Leben.
Vielleicht fällt alternativ jemand anderem noch was dazu ein, mir kommt im Moment jedenfalls keine andere Idee wie du das lösen könntest.

cu
 
OP
C

cjmatsel

Newbie
Danke... Da ich beide Versionen drauf habe, versuche ich erstmal, die alte wieder zu erwecken... Wenn ich auf der Kommandozeile "perl -v" eingebe, kommt immer noch die neue Version. Wie kann ich sehen, welche Pfade er durcharbeitet um das Binary aufzurufen? "echo $PATH"?
 
OP
C

cjmatsel

Newbie
er hat das Binary aus /usr/local/bin gezogen...

Trotzdem gibts ein "cpio: Bad magic"! Verdammte Axt! Hängen diese beiden Fehler überhaupt zusammen oder stehe ich da auf einem Holzweg?

edit: Mal ne blöde Frage: Welche perl-Version ist denn bei Suse aktuell?
 

Curryfrosch

Member
openSUSE 11.1:

Code:
perl -v

This is perl, v5.10.0 built for x86_64-linux-thread-multi

Was Du vielleicht auch mal versuchen könntest:

Code:
strace yast2 2> yast2.txt

Und dann mal im Output nachsehen an welcher Stelle YaST2 genau aussteigt. Vielleicht kommt so mal raus woran es genau liegt.
 

revealed

Guru
Hallo!

Darf ich fragen ...? Hast du mit CPAN ein bestimmtest Paket installieren wollen?

Hilft eventuell ein autobundle?

Gruß,

R
 

whois

Ultimate Guru
Er hat Suse 10.3 drauf. ;)

Zusatzlich mal mit lsof sehen welche Files geöffnet werden

Code:
lsof|grep perl
 
OP
C

cjmatsel

Newbie
Zuallererst: Vielen Dank an euch für eure Mühe und den Support! Ich bin neu hier und wirklich positiv überrascht!

@Curryfrosch:
Code:
linux:~ # strace yast2 2> yast2.txt
linux:~ # cat yast2.txt
-bash: strace: command not found
Mist! Und installieren mit Yast oder Zypper kann ich es ja nicht... :roll:

Danke für die Perl-Info... Ich brauchte das 5.8.9 bevor Suse es veröffentlichte... Dann weiß ich ja zumindest, dass ich jetzt keine Schwierigkeiten hätte...

@revealed:
Jup, habe ich... Und dabei hat mir cpan erzählt, dass es eine neue Perl-Version gibt und hat mir diese gegeben... Der Parameter "autobundle" sagt mir gar nix; ich google mal dazu...

@whois: Ich hab natürlich jetzt das alte Binary aktiviert:
Code:
lsof | grep perl
snmptt     2899       root  txt       REG        9,0   1187568    5063369 /usr/bin/perl.old
snmptt     2899       root  mem       REG        9,0    125252    5456332 /usr/lib/perl5/vendor_perl/5.8.8/i586-linux-thread-multi/auto/DBD/mysql/mysql.so
snmptt     2899       root  mem       REG        9,0     42744    5162542 /usr/lib/perl5/5.8.8/i586-linux-thread-multi/auto/List/Util/Util.so
snmptt     2899       root  mem       REG        9,0    124968    5456310 /usr/lib/perl5/vendor_perl/5.8.8/i586-linux-thread-multi/auto/DBI/DBI.so
snmptt     2899       root  mem       REG        9,0    153840    5456199 /usr/lib/perl5/vendor_perl/5.8.8/i586-linux-thread-multi/auto/SNMP/SNMP.so
snmptt     2899       root  mem       REG        9,0     26244    5456179 /usr/lib/perl5/vendor_perl/5.8.8/i586-linux-thread-multi/auto/NetSNMP/OID/OID.so
snmptt     2899       root  mem       REG        9,0     34348    5456196 /usr/lib/perl5/vendor_perl/5.8.8/i586-linux-thread-multi/auto/NetSNMP/default_store/default_store.so
snmptt     2899       root  mem       REG        9,0     22100    5162726 /usr/lib/perl5/5.8.8/i586-linux-thread-multi/auto/Socket/Socket.so
snmptt     2899       root  mem       REG        9,0    112716    5162552 /usr/lib/perl5/5.8.8/i586-linux-thread-multi/auto/POSIX/POSIX.so
snmptt     2899       root  mem       REG        9,0     17904    5162755 /usr/lib/perl5/5.8.8/i586-linux-thread-multi/auto/Sys/Syslog/Syslog.so
snmptt     2899       root  mem       REG        9,0      9788    5162353 /usr/lib/perl5/5.8.8/i586-linux-thread-multi/auto/Cwd/Cwd.so
snmptt     2899       root  mem       REG        9,0      9728    5162752 /usr/lib/perl5/5.8.8/i586-linux-thread-multi/auto/Sys/Hostname/Hostname.so
snmptt     2900       root  txt       REG        9,0   1187568    5063369 /usr/bin/perl.old
snmptt     2900       root  mem       REG        9,0    125252    5456332 /usr/lib/perl5/vendor_perl/5.8.8/i586-linux-thread-multi/auto/DBD/mysql/mysql.so
snmptt     2900       root  mem       REG        9,0     42744    5162542 /usr/lib/perl5/5.8.8/i586-linux-thread-multi/auto/List/Util/Util.so
snmptt     2900       root  mem       REG        9,0    124968    5456310 /usr/lib/perl5/vendor_perl/5.8.8/i586-linux-thread-multi/auto/DBI/DBI.so
snmptt     2900       root  mem       REG        9,0    153840    5456199 /usr/lib/perl5/vendor_perl/5.8.8/i586-linux-thread-multi/auto/SNMP/SNMP.so
snmptt     2900       root  mem       REG        9,0     26244    5456179 /usr/lib/perl5/vendor_perl/5.8.8/i586-linux-thread-multi/auto/NetSNMP/OID/OID.so
snmptt     2900       root  mem       REG        9,0     34348    5456196 /usr/lib/perl5/vendor_perl/5.8.8/i586-linux-thread-multi/auto/NetSNMP/default_store/default_store.so
snmptt     2900       root  mem       REG        9,0     22100    5162726 /usr/lib/perl5/5.8.8/i586-linux-thread-multi/auto/Socket/Socket.so
snmptt     2900       root  mem       REG        9,0    112716    5162552 /usr/lib/perl5/5.8.8/i586-linux-thread-multi/auto/POSIX/POSIX.so
snmptt     2900       root  mem       REG        9,0     17904    5162755 /usr/lib/perl5/5.8.8/i586-linux-thread-multi/auto/Sys/Syslog/Syslog.so
snmptt     2900       root  mem       REG        9,0      9788    5162353 /usr/lib/perl5/5.8.8/i586-linux-thread-multi/auto/Cwd/Cwd.so
snmptt     2900       root  mem       REG        9,0      9728    5162752 /usr/lib/perl5/5.8.8/i586-linux-thread-multi/auto/Sys/Hostname/Hostname.so
snmptrapd  2907       root  mem       REG        9,0   1292760    5162266 /usr/lib/perl5/5.8.8/i586-linux-thread-multi/CORE/libperl.so
miniserv.  3258       root  txt       REG        9,0   1187568    5063369 /usr/bin/perl
miniserv.  3258       root  mem       REG        9,0     34636    5162724 /usr/lib/perl5/5.8.8/i586-linux-thread-multi/auto/SDBM_File/SDBM_File.so
miniserv.  3258       root  mem       REG        9,0     13848    5162501 /usr/lib/perl5/5.8.8/i586-linux-thread-multi/auto/Digest/MD5/MD5.so
miniserv.  3258       root  mem       REG        9,0     17904    5162755 /usr/lib/perl5/5.8.8/i586-linux-thread-multi/auto/Sys/Syslog/Syslog.so
miniserv.  3258       root  mem       REG        9,0    112716    5162552 /usr/lib/perl5/5.8.8/i586-linux-thread-multi/auto/POSIX/POSIX.so
miniserv.  3258       root  mem       REG        9,0     13792    5162527 /usr/lib/perl5/5.8.8/i586-linux-thread-multi/auto/Fcntl/Fcntl.so
miniserv.  3258       root  mem       REG        9,0     22100    5162726 /usr/lib/perl5/5.8.8/i586-linux-thread-multi/auto/Socket/Socket.so
perl      27049     nagios  cwd       DIR        9,0      4096          2 /
perl      27049     nagios  rtd       DIR        9,0      4096          2 /
perl      27049     nagios  txt       REG        9,0   1187568    5063369 /usr/bin/perl
perl      27049     nagios  mem       REG        9,0   1281488    3129650 /lib/libc-2.6.1.so
perl      27049     nagios  mem       REG        9,0    117749    3129714 /lib/libpthread-2.6.1.so
perl      27049     nagios  mem       REG        9,0     10148    3129722 /lib/libutil-2.6.1.so
perl      27049     nagios  mem       REG        9,0     39000    3129654 /lib/libcrypt-2.6.1.so
perl      27049     nagios  mem       REG        9,0    154108    3129695 /lib/libm-2.6.1.so
perl      27049     nagios  mem       REG        9,0     10288    3129661 /lib/libdl-2.6.1.so
perl      27049     nagios  mem       REG        9,0     81088    3129700 /lib/libnsl-2.6.1.so
perl      27049     nagios  mem       REG        9,0    114636    3129639 /lib/ld-2.6.1.so
perl      27049     nagios    0r      CHR        1,3                 4878 /dev/null
perl      27049     nagios    1w     FIFO        0,6                68206 pipe
perl      27049     nagios    2w      CHR        1,3                 4878 /dev/null
perl      27049     nagios    3r      REG        9,0     27846    5407693 /usr/local/nagios/libexec/process_perfdata.pl
perl      27049     nagios    4r      REG        9,0     79105    5162054 /usr/lib/perl5/5.8.8/Getopt/Long.pm
perl      27049     nagios    6u     unix 0xf75b5e40                23218 socket
perl      27049     nagios    8w     FIFO        0,6                68163 pipe

edit: In Yast kann ich auch die neuen Versionen sehen (auch das neue Perl) und alle Abhängigkeiten auflösen; nur installieren geht nicht... Dafür klappts mit cpan und autobundle...
 

whois

Ultimate Guru
Hhmm die 5.88 wird gelistet.
Warum läuft die Socke denn nicht. :???:
Das gibts doch gar nicht.
 

revealed

Guru
edit: In Yast kann ich auch die neuen Versionen sehen (auch das neue Perl) und alle Abhängigkeiten auflösen; nur installieren geht nicht... Dafür klappts mit cpan und autobundle...
Ich war mir da jetzt nicht mehr sicher, aber ich glaube das macht eine automatische zusammenstellung?

Hatte nur ein bisschen mit CPAN gespielt weil ich ein paar bestimmte module für Webmin brauchte.

Gruß,

R
 

Curryfrosch

Member
Gibt's bei Deinem System den Ordner /usr/share/doc/packages/yast2-perl-bindings? Falls ja, könntest Du dort mal reinschauen, da steht einiges über die Perl-Module von YaST2.
 
OP
C

cjmatsel

Newbie
Ein autobundle-File wurde geschrieben und ein paar kleinere Versionen sind unterschiedlich... Mit cpan lassen sich auch perl-Module installieren (wie eben das autobundle-Modul). Leider brauche ich cpan, da nur dort viele Perl-Module drin sind (In Yast ist nicht alles enthalten und zypper werde ich mir erst noch anschauen)...

Kann ich cpio vielleicht neu übersetzen oder dem genauer auf die Finger schauen (Abhängigkeiten, Debug, etc.)? Wo bekäme ich den cpio-Quellcode her? Beim Downgrade (bzw. einer Suse-Reparatur) habe ich die Befürchtung, dass die nicht so sauber läuft; ich trau dem Yast nicht so ganz...

Hast du dazu Erfahrungen?

BTW:
Code:
cpio --version
cpio (GNU cpio) 2.9

edit: Den Ordner hab ich und da stehen auch ein paar Dateien drin. Ich werd mich mal umsehen. Haste nen Fingerzeig für mich oder soll ich was posten?

edit2: Ich hab mal ein Log gefunden "/var/log/YaST2/y2log", in dem u.a. Folgendes steht:
Code:
2009-07-09 14:27:44 <1> linux(6038) [wfm] SlideShowCallbacks.ycp:317 Pkg Builtin called: TargetAvailable
2009-07-09 14:27:44 <1> linux(6038) [wfm] SlideShowCallbacks.ycp:317 Pkg Builtin called: TargetAvailable
2009-07-09 14:27:44 <1> linux(6038) [zypp] RpmDb.cc(doInstallPackage):1872 RpmDb::installPackage(/var/adm/mount/AP_0x00000003/suse/i586/iotop-0.2.1-1
6.33.i586.rpm,12)
2009-07-09 14:27:44 <5> linux(6038) [zypp] Exception.cc(log):119 RpmDb.cc(doInstallPackage):1971 THROW:    RpmDb.cc(doInstallPackage):1971: Subproces
s failed. Error: RPM failed: error: unpacking of archive failed: cpio: Bad magic
2009-07-09 14:27:44 <5> linux(6038) [zypp] Exception.cc(log):119
2009-07-09 14:27:44 <5> linux(6038) [zypp] Exception.cc(log):119
2009-07-09 14:27:44 <1> linux(6038) [YCP] PackageCallbacks.ycp:430 DonePackage(error: 3, reason: 'Subprocess failed. Error: RPM failed: error: unpack
ing of archive failed: cpio: Bad magic

')
2009-07-09 14:27:45 <1> linux(6038) [YCP] PackageCallbacks.ycp:508 DonePackage `abort
2009-07-09 14:27:45 <3> linux(6038) [ui] YTable.cc(itemWithId):261 Table: No item "cd(0,0)" existing
2009-07-09 14:27:45 <3> linux(6038) [ui] YTable.cc(itemWithId):261 Table: No item "cd(0,0)" existing
2009-07-09 14:27:45 <3> linux(6038) [ui] YTable.cc(itemWithId):261 Table: No item "cd(0,0)" existing
2009-07-09 14:27:45 <3> linux(6038) [ui] YTable.cc(itemWithId):261 Table: No item "cd(0,0)" existing
2009-07-09 14:27:45 <3> linux(6038) [ui] YTable.cc(itemWithId):261 Table: No item "cd(0,0)" existing
2009-07-09 14:27:45 <3> linux(6038) [ui] YTable.cc(itemWithId):261 Table: No item "cd(0,0)" existing
2009-07-09 14:27:45 <1> linux(6038) [YCP] PackageCallbacks.ycp:430 DonePackage(error: 3, reason: '')
 
Oben