Difference between revisions of "Centos Upgrade 4.x to 5.x"
(improved tar based backup/restore) |
|||
(28 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
+ | {{wikify}} | ||
+ | |||
[[Category:Templates]] | [[Category:Templates]] | ||
Line 4: | Line 6: | ||
follow these steps: | follow these steps: | ||
− | + | ==Create the container== | |
+ | |||
+ | Create a container using centos-4-i386-minimal and set a valid nameserver: | ||
<pre> | <pre> | ||
− | vzctl create CTID --ostemplate centos-4-i386-minimal --config CONFIG_TEMPLATE --ipadd container_IP --hostname temp | + | vzctl create $CTID --ostemplate centos-4-i386-minimal --config CONFIG_TEMPLATE --ipadd container_IP --hostname temp |
− | vzctl set CTID --nameserver NAMESERVER_IP --save | + | vzctl set $CTID --nameserver NAMESERVER_IP --save |
</pre> | </pre> | ||
− | + | ||
− | < | + | |
− | vzctl | + | ==Install centos-5-release packages== |
− | </ | + | Use <code>vzctl exec</code> to execute the rpm install command on the container: |
− | + | ||
<pre> | <pre> | ||
− | rpm -Uvh http://mirror.centos.org/centos/5 | + | vzctl exec $CTID rpm -Uvh http://mirror.centos.org/centos/5/os/i386/CentOS/centos-release-notes-5.6-0.i386.rpm \ http://mirror.centos.org/centos/5/os/i386/CentOS/centos-release-5-6.el5.centos.1.i386.rpm |
− | |||
</pre> | </pre> | ||
Note: centos-release-5 depends on notes-package, start with that one. | Note: centos-release-5 depends on notes-package, start with that one. | ||
− | + | ==Backup dev== | |
+ | |||
+ | Backup the container /dev/ directory, as initscripts needs udev and will remove vzdev you'll need the backup: | ||
+ | |||
<pre> | <pre> | ||
− | tar -cf dev.tar | + | tar -cf $CTID.dev.tar -C /vz/private/$CTID dev |
</pre> | </pre> | ||
− | + | ||
+ | ==Install initscripts package== | ||
+ | |||
+ | Install initscripts package (forced and with no deps), as per below: | ||
+ | |||
<pre> | <pre> | ||
− | rpm -Uvh http://mirror.centos.org/centos/5 | + | vzctl exec $CTID rpm -Uvh http://mirror.centos.org/centos/5/os/i386/CentOS/initscripts-8.45.33-1.el5.centos.i386.rpm --force --nodeps |
</pre> | </pre> | ||
− | + | ||
+ | Note: If the "transfer failed", go to the [http://mirror.centos.org/centos/5/os/i386/CentOS/ CentOS5 mirror] and find the latest initscripts rpm and use that instead. | ||
+ | |||
+ | ==Update conf file== | ||
+ | |||
+ | Edit /etc/vz/conf/$CSID.conf and replace | ||
<pre> | <pre> | ||
− | + | OSTEMPLATE="centos-4-i386-minimal" | |
</pre> | </pre> | ||
− | + | with | |
<pre> | <pre> | ||
− | OSTEMPLATE="centos- | + | OSTEMPLATE="centos-5-i386-minimal" |
</pre> | </pre> | ||
− | to | + | |
+ | Alternatively, use the 'sed' command to replace it: | ||
<pre> | <pre> | ||
− | OSTEMPLATE="centos-5 | + | sed -i 's#OSTEMPLATE="centos-4#OSTEMPLATE="centos-5#g' /etc/vz/conf/$CTID.conf |
</pre> | </pre> | ||
− | + | ||
+ | ==Copy existing template== | ||
+ | |||
+ | Copy existing template from: | ||
+ | |||
<pre> | <pre> | ||
/vz/template/centos/4 | /vz/template/centos/4 | ||
Line 48: | Line 68: | ||
/vz/template/centos/5 | /vz/template/centos/5 | ||
</pre> | </pre> | ||
− | |||
− | + | ==Update yum.conf== | |
+ | |||
+ | In /vz/template/centos/5/i386/config/yum.conf change mirrors to CentOS 5 | ||
+ | |||
+ | Using sed: | ||
+ | |||
+ | <pre> | ||
+ | sed -i 's#centos4#centos5#g' /vz/template/centos/5/i386/config/yum.conf | ||
+ | sed -i 's#CentOS 4#CentOS 5#g' /vz/template/centos/5/i386/config/yum.conf | ||
+ | sed -i 's#centos/4/#centos/5/#g' /vz/template/centos/5/i386/config/yum.conf | ||
+ | </pre> | ||
+ | |||
+ | ==Upgrade container packages== | ||
+ | |||
+ | db-version will complain, so delete the conflicting database first: | ||
+ | <pre> | ||
+ | rm -fr /vz/root/$CTID/var/lib/rpm/__* | ||
+ | </pre> | ||
+ | |||
+ | Now run vzyum to upgrade the contain packages: | ||
+ | <pre> | ||
+ | vzyum $CTID upgrade | ||
+ | </pre> | ||
+ | |||
+ | ===Troubleshooting=== | ||
+ | |||
+ | If you get this error: | ||
+ | |||
+ | <pre> | ||
+ | Error: Missing Dependency: python-abi = 2.3 is needed by package python-elementtree | ||
+ | </pre> | ||
+ | |||
+ | and/or | ||
<pre> | <pre> | ||
− | + | warning: rpmts_HdrFromFdno: Header V3 DSA signature: NOKEY, key ID e8562897 | |
+ | Public key for libsepol-1.15.2-3.el5.i386.rpm is not installed | ||
</pre> | </pre> | ||
− | |||
− | + | You need to run the following before trying again: | |
+ | |||
<pre> | <pre> | ||
− | vzctl | + | vzctl exec $CTID rpm -e --justdb python-elementtree --nodeps |
+ | vzctl exec $CTID rpm --import http://mirrors.kernel.org/centos/RPM-GPG-KEY-CentOS-5 | ||
</pre> | </pre> | ||
− | + | ||
+ | ==Test your VE== | ||
+ | Check you can enter your VE: | ||
<pre> | <pre> | ||
− | + | vzctl enter $CTID | |
− | + | </pre> | |
− | + | ||
+ | All went OK? Exit the VE: | ||
+ | <pre> | ||
+ | exit | ||
</pre> | </pre> | ||
− | + | ||
+ | ===Troubleshooting=== | ||
+ | |||
<pre> | <pre> | ||
− | + | Unable to open pty: No such file or directory | |
</pre> | </pre> | ||
− | + | If you see errors like this, see the [[VPS_enter_failed]] article. | |
+ | |||
+ | ==Stop your VE== | ||
<pre> | <pre> | ||
− | vzctl | + | vzctl stop $CTID |
</pre> | </pre> | ||
− | + | ||
+ | ==Restore dev== | ||
+ | |||
+ | This will replace the new /dev/ with the old one: | ||
<pre> | <pre> | ||
− | + | mv /vz/private/$CTID/dev /vz/private/$CTID/dev.old | |
+ | tar -xvf $CTID.dev.tar -C /vz/private/$CTID | ||
</pre> | </pre> | ||
− | + | ||
+ | == Remove container IP == | ||
<pre> | <pre> | ||
− | vzctl | + | vzctl set $CTID --ipdel all --save |
</pre> | </pre> | ||
− | + | ||
+ | ==Create the template== | ||
<pre> | <pre> | ||
− | cd /vz/private/CTID | + | cd /vz/private/$CTID |
− | tar -zcf /vz/template/cache/centos-5. | + | tar --numeric-owner -zcf /vz/template/cache/centos-5.5-i386-minimal.tar.gz . |
</pre> | </pre> |
Latest revision as of 22:25, 2 June 2011
Note: this article is not formatted according to this Wiki standards. Please help reformatting it in a better way. |
To create a CentOS 5 minimal template from centos-4-i386-minimal, follow these steps:
Contents
Create the container[edit]
Create a container using centos-4-i386-minimal and set a valid nameserver:
vzctl create $CTID --ostemplate centos-4-i386-minimal --config CONFIG_TEMPLATE --ipadd container_IP --hostname temp vzctl set $CTID --nameserver NAMESERVER_IP --save
Install centos-5-release packages[edit]
Use vzctl exec
to execute the rpm install command on the container:
vzctl exec $CTID rpm -Uvh http://mirror.centos.org/centos/5/os/i386/CentOS/centos-release-notes-5.6-0.i386.rpm \ http://mirror.centos.org/centos/5/os/i386/CentOS/centos-release-5-6.el5.centos.1.i386.rpm
Note: centos-release-5 depends on notes-package, start with that one.
Backup dev[edit]
Backup the container /dev/ directory, as initscripts needs udev and will remove vzdev you'll need the backup:
tar -cf $CTID.dev.tar -C /vz/private/$CTID dev
Install initscripts package[edit]
Install initscripts package (forced and with no deps), as per below:
vzctl exec $CTID rpm -Uvh http://mirror.centos.org/centos/5/os/i386/CentOS/initscripts-8.45.33-1.el5.centos.i386.rpm --force --nodeps
Note: If the "transfer failed", go to the CentOS5 mirror and find the latest initscripts rpm and use that instead.
Update conf file[edit]
Edit /etc/vz/conf/$CSID.conf and replace
OSTEMPLATE="centos-4-i386-minimal"
with
OSTEMPLATE="centos-5-i386-minimal"
Alternatively, use the 'sed' command to replace it:
sed -i 's#OSTEMPLATE="centos-4#OSTEMPLATE="centos-5#g' /etc/vz/conf/$CTID.conf
Copy existing template[edit]
Copy existing template from:
/vz/template/centos/4
to
/vz/template/centos/5
Update yum.conf[edit]
In /vz/template/centos/5/i386/config/yum.conf change mirrors to CentOS 5
Using sed:
sed -i 's#centos4#centos5#g' /vz/template/centos/5/i386/config/yum.conf sed -i 's#CentOS 4#CentOS 5#g' /vz/template/centos/5/i386/config/yum.conf sed -i 's#centos/4/#centos/5/#g' /vz/template/centos/5/i386/config/yum.conf
Upgrade container packages[edit]
db-version will complain, so delete the conflicting database first:
rm -fr /vz/root/$CTID/var/lib/rpm/__*
Now run vzyum to upgrade the contain packages:
vzyum $CTID upgrade
Troubleshooting[edit]
If you get this error:
Error: Missing Dependency: python-abi = 2.3 is needed by package python-elementtree
and/or
warning: rpmts_HdrFromFdno: Header V3 DSA signature: NOKEY, key ID e8562897 Public key for libsepol-1.15.2-3.el5.i386.rpm is not installed
You need to run the following before trying again:
vzctl exec $CTID rpm -e --justdb python-elementtree --nodeps vzctl exec $CTID rpm --import http://mirrors.kernel.org/centos/RPM-GPG-KEY-CentOS-5
Test your VE[edit]
Check you can enter your VE:
vzctl enter $CTID
All went OK? Exit the VE:
exit
Troubleshooting[edit]
Unable to open pty: No such file or directory
If you see errors like this, see the VPS_enter_failed article.
Stop your VE[edit]
vzctl stop $CTID
Restore dev[edit]
This will replace the new /dev/ with the old one:
mv /vz/private/$CTID/dev /vz/private/$CTID/dev.old tar -xvf $CTID.dev.tar -C /vz/private/$CTID
Remove container IP[edit]
vzctl set $CTID --ipdel all --save
Create the template[edit]
cd /vz/private/$CTID tar --numeric-owner -zcf /vz/template/cache/centos-5.5-i386-minimal.tar.gz .