Hi,
I'm currently recompiling a bunch of packages for RHEL4 x86_64 and finally tried out the latest mach+yum snapshot. After quite a few problems with % pre scriplets failing, and packages being skipped, I finally got a build root working.
I've rebuilt quite a few packages, no problems until I tried php...
I get a few i386 packages installed, for a reason that is beyond me! It's 100% reproducible :
- If I specify only the package names, the i386 versions get installed :-(
$ mach yum install libstdc++-devel ncurses-devel zlib-devel pam-devel Setting up Install Process Setting up Repos mach-local 100% |=========================| 951 B 00:00 os 100% |=========================| 951 B 00:00 updates 100% |=========================| 951 B 00:00 groups 100% |=========================| 1.1 kB 00:00 egwn 100% |=========================| 951 B 00:00 Reading repository metadata in from local files mach-local: ################################################## 43/43 os : ################################################## 1591/1591 updates : ################################################## 138/138 egwn : ################################################## 40/40 Parsing package install arguments Resolving Dependencies --> Populating transaction set with selected packages. Please wait. ---> Package pam-devel.i386 0:0.77-65.1 set to be updated ---> Package zlib-devel.i386 0:1.2.1.2-1 set to be updated ---> Package libstdc++-devel.i386 0:3.4.3-9.EL4 set to be updated ---> Package ncurses-devel.i386 0:5.4-13 set to be updated --> Running transaction check
Dependencies Resolved Transaction Listing: Install: libstdc++-devel.i386 0:3.4.3-9.EL4 - os Install: ncurses-devel.i386 0:5.4-13 - os Install: pam-devel.i386 0:0.77-65.1 - os Install: zlib-devel.i386 0:1.2.1.2-1 - os Total download size: 10 M Downloading Packages: Running Transaction Test Finished Transaction Test Transaction Test Succeeded Running Transaction Installing: ncurses-devel 100 % done 1/5 Installing: pam-devel 100 % done 2/5 Installing: zlib-devel 100 % done 3/5 Installing: libstdc++-devel 100 % done 4/5 Completing update for libstdc++-devel - 5/5
Installed: libstdc++-devel.i386 0:3.4.3-9.EL4 ncurses-devel.i386 0:5.4-13 pam-devel.i386 0:0.77-65.1 zlib-devel.i386 0:1.2.1.2-1 Complete!
- If I specify x86_64 for all packages, it works as expected :
$ /usr/sbin/mach-helper rpm --root /var/lib/mach/roots/redhat-el4-x86_64- os '-e' 'ncurses-devel.i386' 'zlib-devel.i386' 'pam-devel.i386' 'libstdc++- devel.i386' error: Failed dependencies: libstdc++-devel = 3.4.3 is needed by (installed) gcc-c++-3.4.3-9.EL4.x86_64 $ mach rpm -Uvh /var/lib/mach/ roots/redhat-el4-x86_64-os/var/cache/mach/os/packages/libstdc++- devel-3.4.3-9.EL4.x86_64.rpm warning: /var/lib/mach/roots/redhat-el4- x86_64-os/var/cache/mach/os/packages/libstdc++- devel-3.4.3-9.EL4.x86_64.rpm: V3 DSA signature: NOKEY, key ID db42a60e Preparing... ################################################## libstdc++- devel ################################################## $ / usr/sbin/mach-helper rpm --root /var/lib/mach/roots/redhat-el4-x86_64-os '- e' 'ncurses-devel.i386' 'zlib-devel.i386' 'pam-devel.i386' 'libstdc++- devel.i386' $ mach yum install libstdc++-devel.x86_64 ncurses-devel.x86_64 zlib-devel.x86_64 pam-devel.x86_64 Setting up Install Process Setting up Repos mach-local 100% |=========================| 951 B 00:00 os 100% |=========================| 951 B 00:00 updates 100% |=========================| 951 B 00:00 groups 100% |=========================| 1.1 kB 00:00 egwn 100% |=========================| 951 B 00:00 Reading repository metadata in from local files mach-local: ################################################## 43/43 os : ################################################## 1591/1591 updates : ################################################## 138/138 egwn : ################################################## 40/40 Parsing package install arguments Nothing to do
I'm really confused as to why yum chooses to install those i386 files when the arch isn't specified... I'll try to get yum to be more verbose and try to find out.
Matthias
Hi again,
I'm really confused : "yum list pam-devel" tells me that the x86_64 version is installed, but "yum -d 5 install pam-devel" then says "No other pam-devel installed, adding to list for potential install", and goes ahead and installs the i386 package :-( Those i386 pam-devel and zlib-devel are causing my php build to fail miserably, and I don't know how to keep them from being installed.
Matthias
--
$ mach yum list pam-devel Setting up Repos mach-local 100% |=========================| 951 B 00:00 os 100% |=========================| 951 B 00:00 updates 100% |=========================| 951 B 00:00 groups 100% |=========================| 1.1 kB 00:00 egwn 100% |=========================| 951 B 00:00 Reading repository metadata in from local files mach-local: ################################################## 43/43 os : ################################################## 1591/1591 updates : ################################################## 138/138 egwn : ################################################## 40/40 Installed Packages pam-devel.x86_64 0.77-65.1 installed Available Packages pam-devel.i386 0.77-65.1 os
$ mach yum -d 5 install pam-devel Yum Version: 2.2.1 COMMAND: yum --installroot /var/lib/mach/roots/redhat-el4-x86_64-os -c / var/lib/mach/states/redhat-el4-x86_64-os/yum.conf -d 5 install pam-devel Installroot: /var/lib/mach/roots/redhat-el4-x86_64-os Ext Commands: pam-devel Setting up Install Process Setting up Repos Baseurl(s) for repo: ['file:///var/lib/mach/roots/redhat-el4-x86_64-os/usr/ src/rpm'] mach-local 100% |=========================| 951 B 00:00 Baseurl(s) for repo: ['http://private///el4AS/x86_64/os'] os 100% |=========================| 951 B 00:00 Baseurl(s) for repo: ['http://private///el4AS/x86_64/updates'] updates 100% |=========================| 951 B 00:00 Baseurl(s) for repo: ['file:///home/egwn/buildroots///x86_64/'] groups 100% |=========================| 1.1 kB 00:00 Baseurl(s) for repo: ['http://private///el4AS/x86_64/egwn'] egwn 100% |=========================| 951 B 00:00 Reading repository metadata in from local files Setting up Package Sacks mach-local: ################################################## 43/43 os : ################################################## 1591/1591 updates : ################################################## 138/138 egwn : ################################################## 40/40 Reading Local RPMDB Parsing package install arguments No other pam-devel installed, adding to list for potential install reduced installs : pam-devel.i386 0:0.77-65.1 Resolving Dependencies 1113244465.75 --> Populating transaction set with selected packages. Please wait. Member: pam-devel.i386 0-0.77-65.1 - u Adding Package pam-devel - 0.77-65.1.i386 in mode u ---> Package pam-devel.i386 0:0.77-65.1 set to be updated --> Running transaction check
Dependencies Resolved 1113244465.76 Transaction Listing: Install: pam-devel.i386 0:0.77-65.1 - os Total download size: 80 k Downloading Packages: Running Transaction Test Member: pam-devel.i386 0-0.77-65.1 - u Adding Package pam-devel - 0.77-65.1.i386 in mode u Finished Transaction Test Transaction Test Succeeded Member: pam-devel.i386 0-0.77-65.1 - u Adding Package pam-devel - 0.77-65.1.i386 in mode u Running Transaction Installing: pam-devel 100 % done 1/1
Installed: pam-devel.i386 0:0.77-65.1 Complete!
$ mach yum list pam-devel Setting up Repos mach-local 100% |=========================| 951 B 00:00 os 100% |=========================| 951 B 00:00 updates 100% |=========================| 951 B 00:00 groups 100% |=========================| 1.1 kB 00:00 egwn 100% |=========================| 951 B 00:00 Reading repository metadata in from local files mach-local: ################################################## 43/43 os : ################################################## 1591/1591 updates : ################################################## 138/138 egwn : ################################################## 40/40 Installed Packages pam-devel.x86_64 0.77-65.1 installed pam-devel.i386 0.77-65.1 installed
On Mon, 2005-04-11 at 20:38 +0200, Matthias Saou wrote:
Hi again,
I'm really confused : "yum list pam-devel" tells me that the x86_64 version is installed, but "yum -d 5 install pam-devel" then says "No other pam-devel installed, adding to list for potential install", and goes ahead and installs the i386 package :-( Those i386 pam-devel and zlib-devel are causing my php build to fail miserably, and I don't know how to keep them from being installed.
It does that b/c you're asking:
install a pam-devel. Install it if it is no other is installed in that multilib set or if the one installed is older the one we would install.
-sv
On Mon, 2005-04-11 at 20:30 +0200, Matthias Saou wrote:
Hi,
I'm currently recompiling a bunch of packages for RHEL4 x86_64 and finally tried out the latest mach+yum snapshot. After quite a few problems with % pre scriplets failing, and packages being skipped, I finally got a build root working.
I've rebuilt quite a few packages, no problems until I tried php...
I get a few i386 packages installed, for a reason that is beyond me! It's 100% reproducible :
- If I specify only the package names, the i386 versions get installed :-(
I'm really confused as to why yum chooses to install those i386 files when the arch isn't specified... I'll try to get yum to be more verbose and try to find out.
it's intended behavior.
yum will install the highest version and best arch of all packages for each multilib 'branch' available for the specified package name.
so if you just specify foo
and foo.i686, foo.x86_64 and foo.i386 are available then yum will install: foo.i686 foo.x86_64
yum resolves packages to install based on the multilib sets. so 64bit resolved against 64bit and 32bit against 32bit. They aren't compared against each other.
-sv
seth vidal wrote :
On Mon, 2005-04-11 at 20:30 +0200, Matthias Saou wrote:
Hi,
I'm currently recompiling a bunch of packages for RHEL4 x86_64 and finally tried out the latest mach+yum snapshot. After quite a few problems with % pre scriplets failing, and packages being skipped, I finally got a build root working.
I've rebuilt quite a few packages, no problems until I tried php...
I get a few i386 packages installed, for a reason that is beyond me! It's 100% reproducible :
- If I specify only the package names, the i386 versions get installed :-(
I'm really confused as to why yum chooses to install those i386 files when the arch isn't specified... I'll try to get yum to be more verbose and try to find out.
it's intended behavior.
yum will install the highest version and best arch of all packages for each multilib 'branch' available for the specified package name.
so if you just specify foo
and foo.i686, foo.x86_64 and foo.i386 are available then yum will install: foo.i686 foo.x86_64
yum resolves packages to install based on the multilib sets. so 64bit resolved against 64bit and 32bit against 32bit. They aren't compared against each other.
I don't think I follow. How come I only have these few packages installed with both x86_64 and i386? I haven't told mach or yum anything special, and don't have glibc-devel.i386 installed for instance :
$ mach yum list glibc-devel Setting up Repos mach-local 100% |=========================| 951 B 00:00 os 100% |=========================| 951 B 00:00 updates 100% |=========================| 951 B 00:00 groups 100% |=========================| 1.1 kB 00:00 egwn 100% |=========================| 951 B 00:00 Reading repository metadata in from local files mach-local: ################################################## 43/43 os : ################################################## 1591/1591 updates : ################################################## 138/138 egwn : ################################################## 40/40 Installed Packages glibc-devel.x86_64 2.3.4-2 installed Available Packages glibc-devel.i386 2.3.4-2 os
Indeed, if I then do a "mach yum install glibc-devel", the i386 version gets installed in parallel, so I think I do understand what you mean, and my test wasn't relevant, but when all of the packages I listed are already installed in the build root in their x86_64 form, why did mach/yum install the i386 when nothing seems to depend explicitly on them? And why only those few ones?
Maybe I have a clue : I did "mach -k build foo.spec" with the x86_64 packages already installed... so I guess mach told yum to install explicitly a bunch of packages, the explicit build dependencies, thus the i386 versions got installed in parallel to the already installed x86_64. Does that make sense? If that's it, then it's probably to be considered a bug since "-k" (keep) shouldn't change the installed set of packages if all the required ones were already installed.
Matthias
Just one thought... is there any case where a x86_64 buildroot actually needs any i386 packages?
Warren Togami wtogami@redhat.com
Warren Togami wrote :
Just one thought... is there any case where a x86_64 buildroot actually needs any i386 packages?
I don't think so. Which is why mach w/ apt has always worked fine for me on my x86_64 build machine, as I only have x86_64 packages in the root.
Matthias
buildsys@lists.fedoraproject.org