x86_64 + i586 Mess!

Hi all.

Ok, ok, I admit: That is probably the biggest mess I could have done on one machine. :slight_smile:

Skiping the details, but while I was tracking down (remotely) that strange nfs_server error on one of mines Suse 11**.0** machines, I clearly made a big mess at the time, but successfully recovered most of it.

The key word is “most”. Today, I found out that the yast was having problems, including with the 1-click install feature. It yields me the following error if I try:

Can't locate XML/Parser.pm in @INC (@INC contains: /y2update/modules /home/johannes/.yast2/modules /usr/share/YaST2/modules /usr/lib/perl5/5.10.0/i586-linux-thread-multi /usr/lib/perl5/5.10.0 /usr/lib/perl5/site_perl/5.10.0/i586-linux-thread-multi /usr/lib/perl5/site_perl/5.10.0 /usr/lib/perl5/vendor_perl/5.10.0/i586-linux-thread-multi /usr/lib/perl5/vendor_perl/5.10.0 /usr/lib/perl5/vendor_perl .) at /usr/lib/perl5/vendor_perl/5.10.0/XML/XPath/XMLParser.pm line 7.
BEGIN failed--compilation aborted at /usr/lib/perl5/vendor_perl/5.10.0/XML/XPath/XMLParser.pm line 7.
Compilation failed in require at /usr/lib/perl5/vendor_perl/5.10.0/XML/XPath.pm line 13.
BEGIN failed--compilation aborted at /usr/lib/perl5/vendor_perl/5.10.0/XML/XPath.pm line 13.
Compilation failed in require at /usr/share/YaST2/modules/YPX.pm line 6.
BEGIN failed--compilation aborted at /usr/share/YaST2/modules/YPX.pm line 6.
Compilation failed in require.
BEGIN failed--compilation aborted.

Following the clue in perl, I decided to look after what could be in the wrong architecture. After a long time over the machine, I found that the system became a full mess of i586 and x86_64 architectures… :frowning: And, when we talk abou my dearly loved yast, it’s like this:

S | Nome                                   | Tipo   | Versão       | Arquitetura | Repositório
--+----------------------------------------+--------+--------------+-------------+------------------------------
i | yast2                                  | pacote | 2.16.71-6.1  | x86_64      | openSUSE-11.0-Oss
i | yast2-CASA                             | pacote | 1.7.1535-3.1 | x86_64      | openSUSE-11.0-Oss
i | yast2-bootloader                       | pacote | 2.16.20-0.1  | x86_64      | openSUSE-11.0-Oss
i | yast2-control-center                   | pacote | 2.16.2-11.1  | x86_64      | openSUSE-11.0-Oss
i | yast2-control-center-debuginfo         | pacote | 2.16.2-11.1  | x86_64      | Repositório principal (DEBUG)
i | yast2-control-center-debugsource       | pacote | 2.16.2-11.1  | x86_64      | Repositório principal (DEBUG)
i | yast2-control-center-gnome             | pacote | 2.13.3-11.1  | i586        | openSUSE-11.0-Oss
i | yast2-control-center-gnome-debuginfo   | pacote | 2.13.3-11.1  | x86_64      | Repositório principal (DEBUG)
i | yast2-control-center-gnome-debugsource | pacote | 2.13.3-11.1  | x86_64      | Repositório principal (DEBUG)
i | yast2-control-center-qt                | pacote | 2.16.2-11.1  | x86_64      | openSUSE-11.0-Oss
i | yast2-core                             | pacote | 2.16.51-6.1  | i586        | openSUSE-11.0-Oss
i | yast2-core-debuginfo                   | pacote | 2.16.51-6.1  | x86_64      | Repositório principal (DEBUG)
i | yast2-core-debugsource                 | pacote | 2.16.51-6.1  | x86_64      | Repositório principal (DEBUG)
i | yast2-core-devel                       | pacote | 2.16.51-6.1  | x86_64      | openSUSE-11.0-Oss
i | yast2-country                          | pacote | 2.16.26-6.1  | x86_64      | openSUSE-11.0-Oss
i | yast2-country-data                     | pacote | 2.16.26-6.1  | x86_64      | openSUSE-11.0-Oss
i | yast2-devel-doc                        | pacote | 2.16.71-6.1  | x86_64      | openSUSE-11.0-Oss
i | yast2-fingerprint-reader               | pacote | 2.16.8-6.1   | i586        | openSUSE-11.0-Oss
i | yast2-fingerprint-reader-debuginfo     | pacote | 2.16.8-6.1   | x86_64      | Repositório principal (DEBUG)
i | yast2-fingerprint-reader-debugsource   | pacote | 2.16.8-6.1   | x86_64      | Repositório principal (DEBUG)
i | yast2-gtk                              | pacote | 2.16.14-1.1  | i586        | openSUSE-11.0-Updates
i | yast2-gtk                              | pacote | 2.16.14-1.1  | i586        | openSUSE-11.0-Oss
i | yast2-gtk-debuginfo                    | pacote | 2.16.14-1.1  | x86_64      | Repositório principal (DEBUG)
i | yast2-gtk-debugsource                  | pacote | 2.16.14-1.1  | x86_64      | Repositório principal (DEBUG)
i | yast2-hardware-detection               | pacote | 2.16.1-49.1  | i586        | openSUSE-11.0-Oss
i | yast2-hardware-detection-debuginfo     | pacote | 2.16.1-49.1  | x86_64      | Repositório principal (DEBUG)
i | yast2-hardware-detection-debugsource   | pacote | 2.16.1-49.1  | x86_64      | Repositório principal (DEBUG)
i | yast2-kdump                            | pacote | 2.16.10-36.1 | x86_64      | openSUSE-11.0-Oss
i | yast2-ldap                             | pacote | 2.16.0-52.1  | i586        | openSUSE-11.0-Oss
i | yast2-ldap-debuginfo                   | pacote | 2.16.0-52.1  | x86_64      | Repositório principal (DEBUG)
i | yast2-ldap-debugsource                 | pacote | 2.16.0-52.1  | x86_64      | Repositório principal (DEBUG)
i | yast2-libyui                           | pacote | 2.16.48-3.1  | i586        | openSUSE-11.0-Oss
i | yast2-libyui-debuginfo                 | pacote | 2.16.48-3.1  | x86_64      | Repositório principal (DEBUG)
i | yast2-libyui-debugsource               | pacote | 2.16.48-3.1  | x86_64      | Repositório principal (DEBUG)
i | yast2-libyui-devel                     | pacote | 2.16.48-3.1  | x86_64      | openSUSE-11.0-Oss
i | yast2-mcs-plugin                       | pacote | 0.1.0-115.1  | i586        | openSUSE-11.0-Oss
i | yast2-mcs-plugin-debuginfo             | pacote | 0.1.0-115.1  | x86_64      | Repositório principal (DEBUG)
i | yast2-mcs-plugin-debugsource           | pacote | 0.1.0-115.1  | x86_64      | Repositório principal (DEBUG)
i | yast2-mouse                            | pacote | 2.16.1-26.1  | x86_64      | openSUSE-11.0-Oss
i | yast2-ncurses                          | pacote | 2.16.27-8.1  | i586        | openSUSE-11.0-Oss
i | yast2-ncurses-debuginfo                | pacote | 2.16.27-8.1  | x86_64      | Repositório principal (DEBUG)
i | yast2-ncurses-debugsource              | pacote | 2.16.27-8.1  | x86_64      | Repositório principal (DEBUG)
i | yast2-ncurses-devel                    | pacote | 2.16.27-8.1  | x86_64      | openSUSE-11.0-Oss
i | yast2-ncurses-pkg                      | pacote | 2.16.13-4.1  | i586        | openSUSE-11.0-Oss
i | yast2-ncurses-pkg-debuginfo            | pacote | 2.16.13-4.1  | x86_64      | Repositório principal (DEBUG)
i | yast2-ncurses-pkg-debugsource          | pacote | 2.16.13-4.1  | x86_64      | Repositório principal (DEBUG)
i | yast2-network                          | pacote | 2.16.48-3.1  | x86_64      | openSUSE-11.0-Oss
i | yast2-network-devel-doc                | pacote | 2.16.48-3.1  | x86_64      | openSUSE-11.0-Oss
i | yast2-nis-client                       | pacote | 2.16.3-6.1   | i586        | openSUSE-11.0-Oss
i | yast2-nis-client-debuginfo             | pacote | 2.16.3-6.1   | x86_64      | Repositório principal (DEBUG)
i | yast2-nis-client-debugsource           | pacote | 2.16.3-6.1   | x86_64      | Repositório principal (DEBUG)
i | yast2-packager                         | pacote | 2.16.53-3.1  | x86_64      | openSUSE-11.0-Updates
i | yast2-packager                         | pacote | 2.16.53-3.1  | x86_64      | openSUSE-11.0-Oss
i | yast2-perl-bindings                    | pacote | 2.16.7-14.1  | i586        | openSUSE-11.0-Oss
i | yast2-perl-bindings-debuginfo          | pacote | 2.16.7-14.1  | x86_64      | Repositório principal (DEBUG)
i | yast2-perl-bindings-debugsource        | pacote | 2.16.7-14.1  | x86_64      | Repositório principal (DEBUG)
i | yast2-pkg-bindings                     | pacote | 2.16.39-4.1  | i586        | openSUSE-11.0-Oss
i | yast2-pkg-bindings-debuginfo           | pacote | 2.16.39-4.1  | x86_64      | Repositório principal (DEBUG)
i | yast2-pkg-bindings-debugsource         | pacote | 2.16.39-4.1  | x86_64      | Repositório principal (DEBUG)
i | yast2-printer                          | pacote | 2.16.32-3.1  | i586        | openSUSE-11.0-Oss
i | yast2-printer-debuginfo                | pacote | 2.16.32-3.1  | x86_64      | Repositório principal (DEBUG)
i | yast2-printer-debugsource              | pacote | 2.16.32-3.1  | x86_64      | Repositório principal (DEBUG)
i | yast2-printer-devel-doc                | pacote | 2.16.32-3.1  | x86_64      | openSUSE-11.0-Oss
i | yast2-profile-manager                  | pacote | 2.16.1-27.1  | i586        | openSUSE-11.0-Oss
i | yast2-profile-manager-debuginfo        | pacote | 2.16.1-27.1  | x86_64      | Repositório principal (DEBUG)
i | yast2-profile-manager-debugsource      | pacote | 2.16.1-27.1  | x86_64      | Repositório principal (DEBUG)
i | yast2-python-bindings                  | pacote | 2.16.6-36.1  | i586        | openSUSE-11.0-Oss
i | yast2-python-bindings-debuginfo        | pacote | 2.16.6-36.1  | x86_64      | Repositório principal (DEBUG)
i | yast2-python-bindings-debugsource      | pacote | 2.16.6-36.1  | x86_64      | Repositório principal (DEBUG)
i | yast2-qt                               | pacote | 2.16.53-5.1  | i586        | openSUSE-11.0-Oss
i | yast2-qt-debuginfo                     | pacote | 2.16.53-5.1  | x86_64      | Repositório principal (DEBUG)
i | yast2-qt-debugsource                   | pacote | 2.16.53-5.1  | x86_64      | Repositório principal (DEBUG)
i | yast2-qt-devel                         | pacote | 2.16.53-5.1  | x86_64      | openSUSE-11.0-Oss
i | yast2-qt-pkg                           | pacote | 2.16.46-4.1  | i586        | openSUSE-11.0-Oss
i | yast2-qt-pkg-debuginfo                 | pacote | 2.16.46-4.1  | x86_64      | Repositório principal (DEBUG)
i | yast2-qt-pkg-debugsource               | pacote | 2.16.46-4.1  | x86_64      | Repositório principal (DEBUG)
i | yast2-ruby-bindings                    | pacote | 0.3.2-11.1   | i586        | openSUSE-11.0-Oss
i | yast2-ruby-bindings-debuginfo          | pacote | 0.3.2-11.1   | x86_64      | Repositório principal (DEBUG)
i | yast2-ruby-bindings-debugsource        | pacote | 0.3.2-11.1   | x86_64      | Repositório principal (DEBUG)
i | yast2-scanner                          | pacote | 2.16.10-13.1 | x86_64      | openSUSE-11.0-Oss
i | yast2-scanner-debuginfo                | pacote | 2.16.10-13.1 | x86_64      | Repositório principal (DEBUG)
i | yast2-scanner-debugsource              | pacote | 2.16.10-13.1 | x86_64      | Repositório principal (DEBUG)
i | yast2-slp                              | pacote | 2.16.0-25.1  | i586        | openSUSE-11.0-Oss
i | yast2-slp-debuginfo                    | pacote | 2.16.0-25.1  | x86_64      | Repositório principal (DEBUG)
i | yast2-slp-debugsource                  | pacote | 2.16.0-25.1  | x86_64      | Repositório principal (DEBUG)
i | yast2-sound                            | pacote | 2.16.11-6.1  | i586        | openSUSE-11.0-Oss
i | yast2-sound-debuginfo                  | pacote | 2.16.11-6.1  | x86_64      | Repositório principal (DEBUG)
i | yast2-sound-debugsource                | pacote | 2.16.11-6.1  | x86_64      | Repositório principal (DEBUG)
i | yast2-squid                            | pacote | 2.16.3-37.1  | i586        | openSUSE-11.0-Oss
i | yast2-squid-debuginfo                  | pacote | 2.16.3-37.1  | x86_64      | Repositório principal (DEBUG)
i | yast2-squid-debugsource                | pacote | 2.16.3-37.1  | x86_64      | Repositório principal (DEBUG)
i | yast2-storage                          | pacote | 2.16.26-0.1  | i586        | openSUSE-11.0-Oss
i | yast2-storage-debuginfo                | pacote | 2.16.26-0.1  | x86_64      | Repositório principal (DEBUG)
i | yast2-storage-debugsource              | pacote | 2.16.26-0.1  | x86_64      | Repositório principal (DEBUG)
i | yast2-storage-devel                    | pacote | 2.16.26-0.1  | x86_64      | openSUSE-11.0-Oss
i | yast2-storage-evms                     | pacote | 2.16.26-0.1  | i586        | openSUSE-11.0-Oss
i | yast2-storage-lib                      | pacote | 2.16.26-0.1  | i586        | openSUSE-11.0-Oss
i | yast2-transfer                         | pacote | 2.16.1-76.1  | i586        | openSUSE-11.0-Oss
i | yast2-transfer-debuginfo               | pacote | 2.16.1-76.1  | x86_64      | Repositório principal (DEBUG)
i | yast2-transfer-debugsource             | pacote | 2.16.1-76.1  | x86_64      | Repositório principal (DEBUG)
i | yast2-tune                             | pacote | 2.16.2-2.1   | x86_64      | openSUSE-11.0-Oss
i | yast2-update                           | pacote | 2.16.10-4.1  | x86_64      | openSUSE-11.0-Oss
i | yast2-update-FACTORY                   | pacote | 2.16.10-4.1  | x86_64      | openSUSE-11.0-Oss
i | yast2-users                            | pacote | 2.16.33-6.1  | i586        | openSUSE-11.0-Oss
i | yast2-users-debuginfo                  | pacote | 2.16.33-6.1  | x86_64      | Repositório principal (DEBUG)
i | yast2-users-debugsource                | pacote | 2.16.33-6.1  | x86_64      | Repositório principal (DEBUG)
i | yast2-vm                               | pacote | 2.16.5-7.1   | x86_64      | openSUSE-11.0-Oss
i | yast2-xml                              | pacote | 2.16.1-14.1  | i586        | openSUSE-11.0-Oss
i | yast2-xml-debuginfo                    | pacote | 2.16.1-14.1  | x86_64      | Repositório principal (DEBUG)
i | yast2-xml-debugsource                  | pacote | 2.16.1-14.1  | x86_64      | Repositório principal (DEBUG)
i | yast2-ycp-ui-bindings                  | pacote | 2.16.47-5.1  | i586        | openSUSE-11.0-Oss
i | yast2-ycp-ui-bindings-debuginfo        | pacote | 2.16.47-5.1  | x86_64      | Repositório principal (DEBUG)
i | yast2-ycp-ui-bindings-debugsource      | pacote | 2.16.47-5.1  | x86_64      | Repositório principal (DEBUG)
i | yast2-ycp-ui-bindings-devel            | pacote | 2.16.47-5.1  | x86_64      | openSUSE-11.0-Oss

And, most interesting, is that yast is not allowing me to upgrade them back to x86_64. Whenever I try, y2base goes to 100% of usage for indefinite time! :frowning:

Is there please and for God sake any way to clean this huge mess I did this time? :wink:

Download the RPMs of the correct architecture and install them manually using RPM. You may have to do a whole group in one go if there are any dependencies within the group.

Ok, but then: How I do that exactly:

My concern is the “dependence hell”. :slight_smile: For example, to “save” yast, I should download the whole repository files from the repository for yast, or there are something else? (this is actually a question on how are the suse repositories organized, in a way). Moreover, after I have all dependences solved here, how do I say to rpm “install all them in the proper order”?

Waiting for any suggestion, thanks for the prompt answer. :slight_smile:

Just make sure they are listed on the command line and rpm will sort it out, if none are missing.

Ok, that was easily done with an rpm -i *.rpm :slight_smile:

Now I’m suffering here tracking down all dependences… No clue to do that faster, or is there one? :slight_smile:

Thanks a lot. :slight_smile:

Usually zypper takes care of that for me. You could try using zypper instead of rpm, but you are in unknown territory for me.

Porto Alebre or Porto Alegre? I was just watching a film set there the other night: O Homen que Copiava. I saw that Luana Piovani appeared again in O Casamento de Romeu e Julieta.

First: It’s Porto Alegre. And, yes, “O Homem que Copiava” was recorded here. :slight_smile: Great movie btw.

Now, bad news. :frowning: I finally solved all dependencies here, and issued an “rpm -i --force .rpm" (without “–force” it was complaining that the packages were already installed). Yes, I downloaded the x86_64 files. :slight_smile: But after it runs, I issue "zypper se -si 'yast’ | grep i586” and, evil, there i still the same packages for i586 in there, none of them was exchanged… :frowning: Any ideas now?

This could be risky and I’ve never done it but you could remove all the yast packages of type i586 first. Since you have rpm, you should be able to reinstall the x86_64 ones without YaST.

Tried all flags up to “rpm -i -vv --replacepkgs --replacefiles --force *.rpm”. Still not working.

Will remove the whole yast now. Let’s see. :slight_smile:

Let’s also hope it doesn’t increase the whole “dependence hell” again. :stuck_out_tongue:

rpm allows you to selectively remove RPMs. You specify the whole package name, including the version and the arch, in your case, i586. That allows you to delete only the i586 package and not the x86_64 one.

On Mon August 17 2009 11:16 pm, johannesrs wrote:

>
> Tried all flags up to “rpm -i -vv --replacepkgs --replacefiles --force
> *.rpm”. Still not working.
>
> Will remove the whole yast now. Let’s see. :slight_smile:
>
> Let’s also hope it doesn’t increase the whole “dependence hell” again.
> :stuck_out_tongue:
>
>
johannesrs;

Did you try:


su
rpm -U <path_to_rpm>

The -U will replace an existing rpm or install if it is not installed. See:
man rpm

–
P. V.
“We’re all in this together, I’m pulling for you.” Red Green

Well, I choosen to do something more “drastic”: zypper rm ‘yast*’

A few extra dependences later, and now everything IS x86_64.

BUT (there is always a “but”) if I try a “zypper up”, it just suggests me a whole architectural change again.

Let’s see it the yast interface is now working throw two “ssh -X” and if I can try to update keeping the x86_64 in that way.

I report back after. :wink:

You may have some i586 packages installed (probably not yast*) that are causing zypper to suggest changing the architecture.

I was going to reply here. :slight_smile: It’s going ok now. Unfortunatelly, there is, to my knowledge at least, no way to convince yast to show me all packages using one certain architecture, so I’m slowly switching it to the proper x86_64. :slight_smile:

But thanks a lot! Later I put here a list of all packages I had to download to recover yast, so that anyone who happens to make the same mess has a starting point. :slight_smile:

Ok, it was not enough. Almost gave up, but since I could not reinstall today, I gave it another shot.

First, download the rpms needed for zypper. Downloading them all for x86_64 is what makes the architecture choice works! :slight_smile: The needed packages are:

libqdialogsolver1-1.0.3-7.1.x86_64.rpm
libzypp-4.26.4-1.1.x86_64.rpm
libzypp-testsuite-tools-4.2.3-6.1.x86_64.rpm
ruby-zypp-0.4.6-5.1.x86_64.rpm
ruby-zypptools-0.2.0-1.1.x86_64.rpm
zypper-0.11.6-4.1.x86_64.rpm

Then, a sequence of commands:

zypper se -si ‘*’ | grep x86_64 | grep -v OSS | grep 'v | ’ | cut -b 4-50 | uniq -c | cut -b 8- | awk ‘{print "zypper rm " $1}’ > 586killer.x

chmod 700 586killer.x

./586killer.x

This still worked iterativelly. That was a good idea, so I could avoid it to try to unninstall both zypper and rpm. If anyone wants to try it automatically, then must include the extra flags inside the las awk command.

Of course, this reduced a lot the excess of almost 300 i586 packages, but not solved all. Then, for the last douzaine, I did:

zypper se -si ‘*’ | grep i586 | grep -v OSS | grep 'i | ’

zypper ref

zypper up (many times!)

And uninstalled the necessary ones by hand with zypper.

After that, Reinstall yast2, FULL, with zypper:

zypper in ‘yast*’

zypper ref

zypper up (as many times as needed!)

After that, intall back all what’s needed with yast. :slight_smile:

Thanks a lot to everyone! And hope this tip will never be needed by anyone! :slight_smile: