Open main menu

OpenVZ Virtuozzo Containers Wiki β

Changes

Using vzpkg and vzyum on x86 64

4,790 bytes added, 19:53, 19 March 2012
m
{{Warning|These are not official installation instructions. Do not follow this article, use [[Quick installation]] instead!
 
'''Please also note that template tools (vzpkg/vzyum) are unsupported and obsoleted.'''}}
 
This document describes a way to install OpenVZ in a x86_64 computer, so that it can create cache templates, use vzyum and vzrpm.
This is intended to work in a host with Centos-4 (tested) or a , Centos-5, Fedora Core 5, Fedora Core distribution (not tested)6, RHEL 4 or any other RPM based system with python 2.2, 2.3 or 2.4 version
Last Revision: [[User:Mcarreira|Mcarreira]] 18:07, 30 January 2011 (UTC)
== THE PROBLEM ==
There is a known problem with <b>vzpkg-2.7.0</b> and <b>vzyum-2.4.0</b> in x86_64 computers:
Vzyum, vzpkgcache and vzrpm are broken in 64 bit systems, so we are unable to create new cache templates in a x86_64 computer or update each VE [[container]] using vzyum or vzrpm.
This text describes a work around and a few hacks to get it work flawless.
* - A x86_64 computer
* - A host with x86_64 Centos-4 distribution (or , Fedora Core or RHEL, or other Redhat based systems with python 2.2, 2.3, or 2.4 or version (vzrpm is unable to run with python 2.5 - not testedversion).
* - Yum package installed.
== TESTED HOSTS ==
 
* - Centos 4
* - Centos 5
* - Fedora Core 5
* - Fedora Core 6
 
 
== HOSTS PROBABLY WORKING (not tested) ==
 
* - RHEL 4
* - RHEL 5
 
 
== HOSTS NOT WORKING ==
 
* - Older distros with yum version less then 2.4, python version less then 2.2, rpm version less then 4.3
* - Fedora 7
* - Fedora 8
* - Or any other system with python 2.5 or above.
== SIDE EFFECTS ==
Until now there is only one <i>side effect</i> detected in this solution:
* The yum cache is not common to all VE'[[container]]s. Instead, each VE [[container]] has it's its own yum cache in the directory <code>/var/cache/yum-cache</code>.
This is a consequence from using the modified vzyum.
 
== INSTALL Openvz ==
* This is a fastest way to install openvz utilities, and template utilities, ready to use in a x86_64 system.
* You can only use the automatic install IF YOU HAVE <b>YUM </b> AND <b>RPM </b> PACKAGES INSTALLED IN YOUR SYSTEM, and if you want to install a Centos-4 cache template.* This process uses a bash script that automatizes which automates all the hard work made by hand in the manual install. It was successfully tested in several systems.* If something goes wrong, or if you want to understand the way it works to install a diferent cache templatedistribution, it's better to do the manual install, and try to adapt it to your needs.
* Read carefully the [[Quick installation]] page and install the openvz kernel, configure the bootloader, change sysctl.conf, and finally reboot your system the way it is described there.
* Download the file [http://linux.carreira.com.pt/ovzutils/setx86_64-0.26.tar.gz setx86_64-0.6] and then untar and run the script:
<pre>
tar xzvf setx86_64-0.6.tar.gz./sh setx86_64
</pre>
Press Enter and let the script to do all the job for you.
When it finishes Press Enter and some tests are made to know if you can go on with the message "END INSTALL", installation.If you can choose to go on reading this document jumping to with it, the script will download and patch everything for you.All the undermentioned <b>[[#STEP_10|STEP 10]]</b>vztemplates metadata available in openvz.org site are also installed and fixed for x86_64 system.
When it finishes with the message "END INSTALL", you can go on reading this document jumping to the undermentioned <b>Note:[[#STEP_11|STEP 11]]</b> This script will almost work for CentOS-5, however it's not quite right (you will get some errors). You will also need to:<pre>rm /usr/share/vzpkgtools/vzrpm43/lib/python2.4/site-packages/rpmmodule.so</pre>which will cause it to resolve a dependency using your system wide python implementation
=== B - MANUAL INSTALL -STEP BY STEP ===
</code>
We can't "yum install vzyum" because it breaks with an error:<br><b>Error: Missing Dependency: cElementTree.so is needed by package vzyum</b>
So we must download it first and then install it.
wget -c http://download.openvz.org/template/utils/vzyum/2.4.0-11/vzyum-2.4.0-11.noarch.rpm
rpm --nodeps -Uvh vzyum*.rpm
yum install vztmpl-centos-4 vzpkg*
</code>
Now let's tweak the code doing it step by step.
You can do a copy-paste from the next command lines to your system.
The example is using <b>Centos-4</b> distribution (tested), but <b>Fedore CoreFedora</b> or other distribution with yum , rpm and rpm python (version 2.2, 2.3 or 2.4) installed, may be tried, if you . You only have to change the reference name and version in STEPS 1 to 4 (this was not tested).
===== STEP 1 =====
If you didn't instal yet Install "vztmpl-centos-4", do it now:
<code>
yum install vztmpl-centos-4
</code>
 
{{ Note |In setx86_64 script, all the vztemplates available in openvz.org site are downloaded and used to build x86_64 templates, ready to be used.}}
The template installed is a i386 template. So, we need to create a x86_64 template from the i386.
We only have to replace i386 references with x86_64 in all files.
<code>
cd /vz/template/centos/4/
mkdir x86_64 cp -a /vz/template/centos/4/i386/* /vz/template/centos/4/x86_64
cd /vz/template/centos/4/x86_64/config
sed -i.tmp 's/i386/x86_64/g' yum.conf
</code>
Now we have a x86_64 centos template installed.<br>You can do the same procedure to other distro templates.
Change the line:
:<code>cachedir=/vz/template/centos/4/x86_64/yum-cache</code>
:to :<code>cachedir=/var/cache/yum-cache</code>
{{Note| <codeb>cachedir=1)</b> With these changes, vzyum won´t be able to use a common cache directory to all [[container]]s as it used to do. Each [[container]] will have its own cache directory.To avoid to have a directory named /vz/template/centos/4/x86_64/yum-cache in each [[container]], it is preferable to use the correct cache directory /var/cache/yum-cache</code>.
{{Note| With this changes, vzyum is not going to be able to use <b>2)</b> To set up a common cache directory to all VE's as it was used to do. Each VE will have it's own cache directory.To avoid to have a directory named /vz/template/centos/4/x86_64/yum-cache in each VE, it is preferable to you can use the correct cache directory autofs/varautomounter daemon together with [[Bind_mounts]] as described in <b>step 12</b>. Using a shared cache/yum-cachemay save a lot of network traffic when installing new VPSs.}}
===== STEP 4 =====
 
 
Verify the host rpm version:
 
:<code>rpm --version</code>
 
In Centos-4 rpm is version 4.3.
 
Edit this file /vz/template/centos/4/x86_64/config/rpm, and
you will see the number 43.
 
When the host distro is the same of the template guest, everything would be correct, and we don't need doing anything.<br>
But if we have a different guest template, we might have to correct the values.
 
We have to change the number inside /vz/template/<i>distro</i>/<i>version</i>/x86_64/config/rpm
according to the rpm version of the host system.<br>
If rpm version is 4.4 the number would be 44.<br>
If rpm version is 4.3 the number would be 43.
 
 
 
===== STEP 5 =====
If you list the directory vz-addons like this:
MAKEDEV-3.3.13 (or the version you saw in the "ls")
</pre>
This avoids the undesirable update of special MAKEDEV-swsoft to the real MAKEDEV from the distro yum repository during a vzyum action.
 ===== STEP 5 6 =====
Verify if you have <b>rpm-python</b> installed in your system, because it has 64 bit module needed:
yum install rpm-python
Substitute 32 bit module "In Centos-4 version python is 2.3. So, we must replace rpmmodule.so" from vzrpm43-python to the 64 bit module that rpm-python-x86_64 provides, using this method:.
<pre>
 
cd /usr/share/vzpkgtools/vzrpm43/lib/python2.3/site-packages/
cp /usr/lib64/python2.3/site-packages/rpmmodule.so .
</pre>
For CentOS-5In other Operating Systems or other versions, you will need must verify which python version is installed in the host system. Depending on that, the 32 bit files to do something a bit be replaced are different. rpmmodule.so is provided in your sitewide python distribution(read the setx86_64 script, so instead of copying it acrossline 334 to line 358, you need to:understand how it is done).
  <blockquote style="background: white; border: 1px solid rgb(153, 153, 153); padding: 1em;"><b>Note:</b><br>Someone reported the note below, but the tests I made, <u>didn't confirm<pre/u> it was really needed. Everything worked flawless without it.<br>Nevertheless, if you find some problems, try the workaround described below:<br><br> <i>For CentOS-5, you will need to do something a bit different. "rpmmodule.so" is provided in your sitewide python distribution, so instead of copying it across, you need to::rm /usr/share/vzpkgtools/vzrpm43/lib/python2.4/site-packages/rpmmodule.so</prei></blockquote>
/usr/bin/<b>vzyum</b>
===== STEP 6 7 =====
Edit the file /usr/share/vzpkg/<b>cache-os</b><br>
Change the next lines:
<b> -Line 97:</b>
{{Note| '''ve-vps.basic.conf-sample''' is now renamed '''ve-basic.conf-sample''' }}
(see [http://bugzilla.openvz.org/show_bug.cgi?id=1694 bug 1694] )
 
<pre>
change: VECFGSAMPLE=$VECFGDIR/ve-vps.basic.conf-sample
to: VECFGSAMPLE=$VECFGDIR/ve-basic.conf-sample
append: if ! [ -f "$VECFGSAMPLE" ]; then VECFGSAMPLE="$VECGFDIR/ve-vps.basic.conf-sample"; fi
</pre>
<b> -Line 136:</b>
</pre>
<b> -Line 154:</b>
<pre>
append: mkdir -p $VE_ROOT/var/lib/yum/ || abort "Can't create /var/lib/yum"
</pre>
<b> -Line 185:</b>
===== STEP 7 8 =====
Edit the file /usr/share/vzpkg/<b>functions</b><br>
Change the next lines:
 
 
<b> -Line 20:</b>
<pre>
change: VZLIB_SCRIPTDIR=/usr/lib/vzctl/scripts
to: VZLIB_SCRIPTDIR=/usr/lib64/vzctl/scripts
</pre>
===== STEP 8 9 =====
Edit the file /usr/bin/<b>vzyum</b><br>
Change the next line:
The next piece of code fixed the vzyum bug described in [http://bugzilla.openvz.org/show_bug.cgi?id=488#c0 bugzilla #488].<br>It was impossible to install a package group with spaces in his name.<br>Now we can use e.g. <b>vzyum groupinstall \"GNOME Desktop Environment\"</b>, or other group name listed in vzyum grouplist.<br>(Don't forget the backslash before each doublequote) <b> -Line 56:</b><pre>comment the line 56:#exec $YUM $YUM_ARGS $USER_ARGS</pre> <b> -Last Line (57):</b><br> <pre>add this code: TMPVZY=/tmp/tmpvzy.$$echo $YUM $YUM_ARGS $USER_ARGS > $TMPVZYsh $TMPVZYexec rm -f $TMPVZY</pre>  ===== STEP 9 10 =====
Edit file /usr/bin/<b>vzrpm</b>
Change the next line:
===== STEP 10 11 =====
If you want your VE'[[container]]s to have other country locales
edit <code>/vz/template/centos/4/x86_64/config/.rpmmacros</code> and change the line <b>%_install_langs C</b>
to the language you want, for example:
===== STEP 12 =====
 
To share the vzyum cache directory between various [[containers]], <b>after all is set up</b>, edit your /etc/auto.master to include the following:
:<code>/vz/root/{vpsid}/var/cache/yum-cache /etc/auto.vzyum</code>
Include one line for each installed or planned VPS, replacing {vpsid} with the adequate value.
 
Then, create a /etc/auto.vzyum file with only this line:
:<code>* -bind,ro,nosuid,nodev :/var/cache/yum-cache/&</code>
This file won´t need to be changed, even after you add more containers.
Restart the automounter daemon.
 
{{Note| Make sure these changes won´t interfere with other automounts you may already have set up. If you don´t already use autofs/automount, it is safe to comment out other settings in auto.master.}}
== TESTING THE NEW CODE ==
Now you can create your own cache template caches from your own cache templates.
Let's test it!
Make my first two cache List all x86_64 templatesavailable:
vzpkgls | grep x86_64
 
 
Choose one of them to create the first cache template (this can be time consuming):
vzpkgcache -f centos-4-x86_64-default
vzpkgcache -f centos-4-x86_64-minimal
They finish It finishes with complaints about <i>cron.daily</i>, but don't worry about it.Now <b>minimal</b> and <b>default</b> cache are is created. Confirm if they are were created: 
vzpkgls -c
If you see it in the cache list, then you can create your first VE[[container]]
vzctl create 200 --ostemplate centos-4-x86_64-minimal
To change the <i>locales</i>, copy <code>/etc/sysconfig/i18n</code> to <code>/vz/private/200/etc/sysconfig</code>, if you wish to use another language and have done STEP 10 previously.
Now start VE 20 [[container]] 200 previously created:
vzctl start 200
Then test also "vzyum" and see if it works. Try to install "nano editor":
 
vzyum 200 install nano
Try to use vzrpm, to list all rpm's installed in VE200[[container]] 200
vzrpm 200 -qa
If something went wrong, probably you made a mistake in those previous steps.
Carefully verify if you did it well, step by step.