Hello,
I would like to install 32 bits packages on a 64 bits SuSE machine
( SLES 11 SP3) with CFEngine but it seems that this is not se easy
to do.
As you may know, on SuSE, the package manager is Zypper and its
way to install 32 bits packages require to add ".i586" (for
example) after the name of the package. Here is an example with
the package 'tree':
node1:~/test_cfe3 # cat /etc/SuSE-release
SUSE Linux Enterprise Server 11 (x86_64)
VERSION = 11
PATCHLEVEL = 3
node1:~/test_cfe3 # zypper in tree
Loading repository data...
Reading installed packages...
Resolving package dependencies...
The following NEW package is going to be installed:
tree
The following package is not supported by its vendor:
tree
1 new package to install.
Overall download size: 31.0 KiB. After the operation, additional 64.0 KiB will be used.
Continue? [y/n/?] (y): y
Retrieving package tree-1.5.1-2.10.2.1.x86_64 (1/1), 31.0 KiB (64.0 KiB unpacked)
Installing: tree-1.5.1-2.10.2.1 [done]
node1:~/test_cfe3 # rpm -qa --queryformat "i | repos | %{name} | %{version}-%{release} | %{arch}\n" | grep tree
i | repos | tree | 1.5.1-2.10.2.1 | x86_64
node1:~/test_cfe3 # zypper in tree.i586
Loading repository data...
Reading installed packages...
Resolving package dependencies...
The following package is going to change architecture:
tree x86_64 -> i586
The following package is not supported by its vendor:
tree
1 package will change arch.
Overall download size: 30.0 KiB. After the operation, 1.0 KiB will be freed.
Continue? [y/n/?] (y): y
Retrieving package tree-1.5.1-2.10.2.1.i586 (1/1), 30.0 KiB (63.0 KiB unpacked)
Installing: tree-1.5.1-2.10.2.1 [done]
node1:~/test_cfe3 # rpm -qa --queryformat "i | repos | %{name} | %{version}-%{release} | %{arch}\n" | grep tree
i | repos | tree | 1.5.1-2.10.2.1 | i586
With CFEngine, if I try to install tree with
'tree.i586', it will not be convergent:
Code extract:
bundle agent test
{
packages:
"tree.i586"
package_policy => "add",
package_method => zypper;
}
Verbose execution:
[...]
cf3> Package (gnuplot,4.2.3-5.34,x86_64) found
cf3> Package (tree,1.5.1-2.10.2.1,i586) found
cf3> Package (gpg-pubkey,307e3d54-4be01a65,(none)) found
[...]
cf3> Done checking packages and patches
cf3> ???????????????????????????????????????????????????????????????
cf3> Package version was not specified
cf3> Looking for (tree.i586,*,*)
cf3> No installed packages matched (tree.i586,*,*)
cf3> Looking for (tree.i586,*,*)
cf3> No installed packages matched (tree.i586,*,*)
cf3> Checking if package (tree.i586,*,*) is at the desired state (installed=0,matched=0)
cf3> Package promises to refer to itself as 'tree.i586' to the manager
cf3> Package version seems to match criteria
cf3> Schedule package for addition
cf3> Looking for a package manager called '/usr/bin/zypper --non-interactive install'
cf3> Package (tree.i586,any,any) found
[...]
cf3> Execute scheduled package addition
Installing tree.i586...
cf3> Command prefix '/usr/bin/zypper --non-interactive install '
cf3> Running /usr/bin/zypper --non-interactive install tree.i586 in shell
cf3> Executing /usr/bin/zypper --non-interactive install tree.i586 ...
Q:zypper --non-interac ...:Loading repository data...
Q:zypper --non-interac ...:Reading installed packages...
Q:zypper --non-interac ...:'tree.i586' is already installed.
Q:zypper --non-interac ...:Resolving package dependencies...
Q:zypper --non-interac ...:
Q:zypper --non-interac ...:Nothing to do.
[...]
As for the use of 'tree' with the attribute 'package_architectures
=> { "i586" };':
Code extract:
bundle agent test
{
packages:
"tree"
package_policy => "add",
package_method => zypper,
package_architectures => { "i586" };
}
Verbose execution:
[...]
cf3> Package (libmspack0,0.0.20060920alpha-66.8,x86_64) found
cf3> Package (tree,1.5.1-2.10.2.1,x86_64) found
cf3> Package (gpg-pubkey,b37b98a9-4be01a1a,(none)) found
[...]
cf3> ???????????????????????????????????????????????????????????????
cf3> Done checking packages and patches
cf3> ???????????????????????????????????????????????????????????????
cf3> Package version was not specified
cf3> ... trying listed arch 'i586'
cf3> Looking for (tree,*,i586)
cf3> Matched name 'tree'
cf3> No installed packages matched (tree,*,i586)
cf3> Looking for (tree,*,i586)
cf3> Matched name 'tree'
cf3> No installed packages matched (tree,*,i586)
cf3> Checking if package (tree,*,i586) is at the desired state (installed=0,matched=0)
cf3> Package promises to refer to itself as 'tree' to the manager
cf3> Package version seems to match criteria
cf3> Schedule package for addition
cf3> Looking for a package manager called '/usr/bin/zypper --non-interactive install'
cf3> Package (tree,any,any) found
[...]
cf3> Execute scheduled package addition
Installing tree...
cf3> Command prefix '/usr/bin/zypper --non-interactive install '
cf3> Running /usr/bin/zypper --non-interactive install tree in shell
cf3> Executing /usr/bin/zypper --non-interactive install tree ...
Q:zypper --non-interac ...:Loading repository data...
Q:zypper --non-interac ...:Reading installed packages...
Q:zypper --non-interac ...:'tree' is already installed.
Q:zypper --non-interac ...:No update candidate for 'tree-1.5.1-2.10.2.1.x86_64'. The highest available version is already installed.
Q:zypper --non-interac ...:Resolving package dependencies...
Q:zypper --non-interac ...:
Q:zypper --non-interac ...:Nothing to do.
[...]
Is there a way to indicate CFEngine to install
32 bits packages with a specific name in the command of zypper ?
or is there another way to do the job ?
Thank you
--
Nicolas PERRON