存档

文章标签 ‘upgrade’

关于nginx的平滑升级(Upgrading Executable on the Fly)

2014年12月23日 没有评论

官方的参考文件在这里
而且nginx源代码编译安装时也支持make upgrade了。但实际上使用来看,虽然不好用,但步骤基本上是正确的,所以可以看看其Makefile,结合官方文档了解下平滑升级到底是怎么做的。
1,备份原来的nginx

cp /usr/local/sbin/nginx /usr/local/sbin/nginx.bak

2,获取原来nginx的编译参数

cp /usr/local/sbin/nginx -V

3,用原来的编译参数来编新版本的nginx,并make

./configure ........;
make -j8;
make install;

需要注意的是,这里”make install”在cp新版本的nginx到目标路径的时候也许会出”Text file busy”的错误,那是要写入一个正在运行的二进制文件时会出这个错误。这时需要修改objs/Makefile把cp objs/nginx 那一行的cp加上参数”-f”,再make install就可以了。问题来了:为什么cp -f又可以写入正在运行的二进制文件呢?”man cp”告诉我们:-f参数会让系统先删掉目标文件,然后再cp过去新文件!
4,最后,再做平滑升级

make upgrade;

如果你要了解细节的话,可以分步骤:

kill -USR2 $(cat /var/run/nginx.pid);
sleep 1;
kill -WINCH $(cat /var/run/nginx.pid.oldbin);
sleep 5;
kill -QUIT $(cat /var/run/nginx.pid.oldbin);

注意:如果你的nginx的pid的配置是在nginx.conf里定制过的,那么直接make upgrade将不能正常工作!具体只要对比下Makefile中的pid路径和实际的路径即可,如果不一样,则千万别直接“make upgrade”!

分类: tips 标签: , ,

adp从1.0升级到1.1

2009年3月10日 没有评论

俺的adp(android dev phone)原来是firmware1.0的
最近刚知道官方firmware1.1出了
于是就升级了下
官方支持文档这里
升级过程就不说了,见上面文档即可
但我在xp下操作的
有个问题大家可能也碰到,说一下
就是刷完Device Radio Firmware后
刷System Image的时候
在dos窗口输入:
adb erase userdata
系统提示:

< waiting for device >

这是因为usb驱动的问题
这时重新再把sdk里带的usb驱动重新安装一下马上就好了
还有一个
adb erase userdata对于升级来讲是可选执行的
就是说
升级可以不执行adb erase userdata
这样的话用户装的应用软件、保存的用户设置啥都会被保留
但做降级工作的时候一定需要执行

升完后的感觉
比较失望
系统级的输入法倒不指望
那个得1.5的firmware才会有呢
但是Locale设置里语言只能选English一种
还有Camera里不支持录制视频
这两点就有点让我感到失望了
对啦
还有系统自带的Note也还没有

于是万分期待传说中的firmware1.5……

自动升级wordpress从2.7->2.7.1出30秒超时的问题

2009年2月12日 1 条评论

今天系统从2.7升级到2.7.1
wordpress从2.7开始支持自动升级
于是我一点“自动升级”
过一会儿
报错:

“下载失败:Operation timed out after 30 seconds …..”

于是把服务器上的php的超时时间改长
重起apache
还是不行
还是30秒超时
再看apache里也没有30秒超时的设置呀
最后终于找到了
wp-admin/includes/file.php里的download_url()函数的这一句:

$response = wp_remote_get($url, array(‘timeout’ => 30));

限定了30秒超时
改之
再自动升级
OK

upgrading from as4 to as5 online(success!)

2008年12月16日 2 条评论

又一次干脏活
把某一台rhel4(as4)的机器在线升级到rhel5(as5)
as4上原来的包管理用的是第三方的apt(apt不在我们的as5的repos仓里)
由于有了上一次的经验
这一次我先稳打稳扎
先用

apt-get update;apt-get check;apt-get -y upgrade;apt-get -y dist-upgrade

先把系统升级成as4的最新版
如果升级了kernel还需要用新kernel重起
(其实最后看起来这一步实属多余,而且还可能添加更多的麻烦,其实只是需要安装as4的最新的kernel即可的)
然后正式开始升级工作
首先

rpm -Uvh http://10.0.0.1/pathto5Server/RPMS.os/redhat-release-5Server-5.2.0.4.i386.rpm http://10.0.0.1/pathto5Server/RPMS.os/redhat-release-notes-5Server-12.i386.rpm

这里的10.0.0.1是局域网上的一台维护着as4、as5仓(repository)的服务器
然后

apt-get clean all # 清apt缓存
vim /etc/apt/sources.list # 更改apt的安装源为as5的安装仓(repository)

再接着

apt-get update;apt-get check

接着升级rpm*并安装上yum*

apt-get install rpm* rpm\* yum* yum\*

到这里,第一个考验来了,系统抱错:

“srptools: Obsoletes: openib-srptools”

rpm -qa | grep srptools没发现系统装的有srptoolsopenib-srptools
但是在as4的仓里有openib-srptools、as5的仓里有srptools

rpm -ivh http://10.0.0.1/pathto4Server/RPMS.os/openib-srptools-0.0.6-7.i386.rpm http://10.0.0.1/pathto4Server/RPMS.os/openib-1.2-7.i386.rpm http://10.0.0.1/pathto4Server/RPMS.os/libibumad-1.0.5-7.i386.rpm http://10.0.0.1/pathto4Server/RPMS.os/libibcommon-1.0.3-7.i386.rpm

上面这一步其实可能不用,因为后来openib-srptools又给删掉了

rpm -ivh http://10.0.0.1/pathto5Server/RPMS.os/srptools-0.0.4-2.el5.i386.rpm

你要srptools我就给你装srptools

rpm -e openib-srptools

删掉openib-srptools

rpm -e openldap-clients cups-libs openldap elinks ckermit nmap cyrus-sasl-devel pwlib curl neon libwvstreams stunnel pyOpenSSL dhcpv6_client rhnlib wvdial openh323 openldap-devel nss_ldap libuser cyrus-sasl nss_ldap compat-openldap cyrus-sasl-ntlm cyrus-sasl-gssapi cyrus-sasl-plain cyrus-sasl-md5 libuser-devel usermode passwd nfs-utils autofs nfs-utils-lib kbd system-logviewer authconfig-gtk usermode-gtk system-config-network-tui system-config-lvm system-config-packages system-config-language system-config-date system-config-nfs system-config-services system-config-securitylevel system-config-soundcard system-config-rootpassword system-config-keyboard system-config-network redhat-lsb system-config-users system-config-mouse sendmail cyrus-sasl-sql mutt python-ldap apr-util-devel up2date cadaver curl-devel php php-gd php-mysql php-mbstring php-pear python-ldap kdebase samba-common samba-client gnupg evolution-data-server httpd apr-util samba-common samba-client libgnomeprint22-2.8.0-3.i386 ghostscript kdelibs ghostscript tog-pegasus mdadm fetchmail httpd-devel kdemultimedia gnome-panel cups-libs httpd kde-i18n-Chinese kde-i18n-Chinese-Big5 gimp-print iiimf-gnome-im-switcher tog-pegasus-devel ghostscript-fonts httpd-suexec libgnomeprintui22 gtksourceview libgnomecups cups rpm-devel rpm-build redhat-rpm-config bg5ps VFlib2 dmraid

再删掉一大堆妨碍升级rpm*并安装yum*的东东
反正到最后

apt-get install rpm-libs rpm-python rpm yum

成功了
这一步的时候,貌似apt就给删掉了,否则还需要rpm -e apt一下
然后把yum的安装源指向我们自己的仓
再执行升级

yum update

完成后再做一次base安装,因为前面删的东西太多了,怕有的东西是必须的,所以做一次base安装

yum groupinstall base

这个时候会出一个”device-mapper“相关的错误
这是因为系统目前的device-mapper包(as4的)比安装仓(as5)里的device-mapper的版本还要新!
这也就是我前面说为什么升级之前把系统升级成as4的最新版也许还添了麻烦的原因
没办法
先强行升级device-mapper

rpm -Uvh –force http://10.0.0.1/pathto5Server/RPMS.os/device-mapper-1.02.24-1.el5.i386.rpm

最后yum groupinstall base完成后
再装下新kernel(如果没自动装的话)

yum install kernel-PAE kernel-PAE-devel kernel-doc

再用新kernel起起来就ok了

分类: Operation System 标签: , , , , , ,

upgrading from rhel as4 to rhel as5

2008年10月13日 没有评论

一台rhel as4的机器要升级成rhel as5
由于其包管理软件apt不在其repository(储藏室,库)里
所以不能通过apt-get来同时升级自己和所依赖的软件包
貌似as5u2里有了yum
但是我的as4下又没有,只有装的第三方的apt-get
本来我想的过程是
1,先装上as5的release的rpm包
2,再用apt-get升下rpm*相关软件包,尽量再装上yum
3,如果上一步能装上yum,那就好办了,直接update就ok了;否则只能rpm手工安装yum,最后再yum update
但是实际上
我第2步apt-get升级rpm*就出错了
于是只有用rpm手工升级rpm(听起来有点绕口:)
期间删了一大堆的rpm,以下仅是一部分

rpm -e openldap-clients cups-libs openldap elinks ckermit nmap cyrus-sasl-devel pwlib curl neon libwvstreams wpa_supplicant stunnel pyOpenSSL dhcpv6_client rhnlib wvdial openh323 openldap-devel nss_ldap libuser cyrus-sasl nss_ldap compat-openldap cyrus-sasl-ntlm cyrus-sasl-gssapi cyrus-sasl-plain cyrus-sasl-md5 libuser-devel usermode passwd nfs-utils autofs nfs-utils-lib kbd system-logviewer authconfig-gtk usermode-gtk –allmatches

后来当了一大堆的rpm包,用rpm –force装上了(这里的apt也是从第三方当下来的)

rpm -Uvh –force device-mapper-1.02.24-1.el5.i386.rpm lvm2-2.02.32-4.el5.x86_64.rpm device-mapper-event-1.02.24-1.el5.x86_64.rpm readline-5.1-1.1.x86_64.rpm apt-0.5.15lorg3.2-1.el5.rf.x86_64.rpm python-2.4.3-21.el5.x86_64.rpm rpm-libs-4.4.2-48.el5.x86_64.rpm db4-4.3.29-9.fc6.x86_64.rpm openssl-0.9.8b-10.el5.x86_64.rpm rpm-4.4.2-48.el5.x86_64.rpm elfutils-libelf-0.125-3.el5.x86_64.rpm sqlite-3.3.6-2.x86_64.rpm beecrypt-4.1.2-10.1.1.x86_64.rpm popt-1.10.2-48.el5.x86_64.rpm wget-1.10.2-7.el5.x86_64.rpm openssh-clients-4.3p2-26.el5.x86_64.rpm openssh-server-4.3p2-26.el5.x86_64.rpm openssh-4.3p2-26.el5.x86_64.rpm nss-3.11.99.5-2.el5.x86_64.rpm nspr-4.7.0.99.2-1.el5.x86_64.rpm pam-0.99.6.2-3.27.el5.x86_64.rpm libselinux-1.33.4-5.el5.x86_64.rpm libsepol-1.15.2-1.el5.x86_64.rpm mcstrans-0.2.7-1.el5.x86_64.rpm

这一步做完后,最麻烦的就算是过去了
然后用新的apt-get
apt-get update
然后报错,这个错误以前碰到过,见这里
于是按照上面的方法解决

反正最后是用apt-get update;apt-get check;apt-get -y upgrade;apt-get -y dist-upgrade搞定
(期间也出过n多的问题,幸好都一一解决了)

upgrading from fc6 to fc7 online by using yum

2008年8月19日 没有评论

官方文档在这里

yum install yum-utils; package-cleanup –orphans
yum install yum-fastestmirror
yum clean all
rpm -Uhv ftp://download.fedora.redhat.com/pub/fedora/linux/releases/7/Fedora/i386/os/Fedora/fedora-release-*.noarch.rpm

这里在官方文档上写的是:

rpm -Uhv ftp://download.fedora.redhat.com/pub/fedora/linux/releases//Fedora//os/Packages/fedora-release-*.noarch.rpm

这个路径有问题
fedora-release-*-noarch.rpm不在Packages下,而在Fedora下,不知道别的版本是否是这样,反正fedora7是这样的
然后再继续:

cd /etc/yum.repos.d/;mv fedora-updates.repo.rpmnew fedora-updates.repo;mv /etc/yum.repos.d/fedora.repo.rpmnew /etc/yum.repos.d/fedora.repo
yum update rpm\* yum\*
yum -y upgrade
yum groupupdate Base

我的系统貌似没有自动安装新的fc7的kernel
我有手工安装之:

yum install kernel-PAE.i686

最后

reboot

文档上讲
由于fc7开始修改了ide的设备号
如果系统原来有ide硬盘(设备号/dev/hd?)
需要在重启前修改/etc/fstab
将其改为/dev/sd?
而且还要grub-install /dev/sd?
由于我这里没有ide硬盘
所以没做
还有
貌似fc7带的grub-0.97-13这个版本在硬盘是HP Smart Array CCISS的时候(我正好是这种硬件)
具体见这里
grub-install会有问题
于是我又升级了下grub
最后才重起

分类: Operation System 标签: , , , ,

fc5升级到fc6的时候的错误

2008年4月28日 没有评论

当yum update rpm yum成功后
再运行yum upgrade的时候报错:

/usr/lib/python2.4/site-packages/rpm/_rpmmodule.so: undefined symbol: rpmdbCheckTerminate

后来发现是因为rpm-libs包没有升级的原因
于是从安装服务器上抓来正确的rpm-libs包装上了事
rpm -Uvh http://192.168.1.1/pub/os/Linux/Fedora/i386/6/RPMS.updates/rpm-libs-4.4.2.1-2.fc6.i386.rpm
# 192.168.1.1是安装服务器ip

upgrade from fedora core 5 to fedora core 6

2008年4月28日 没有评论

yum clean all
rpm -Uvh http://192.168.1.1/pub/os/Linux/Fedora/i386/6/RPMS.os/fedora-release-6-4.noarch.rpm http://192.168.1.1/pub/os/Linux/Fedora/i386/6/RPMS.os/fedora-release-notes-6-3.noarch.rpm
# 192.168.1.1是内网的安装服务器,fedora-release-6依赖于fedora-release-notes-6,所以这里需要同是升级
yum update rpm\* yum\*
# 注意这里一定要加上”\*”,我曾经直接用yum update rpm yum,结果没有升级rpm-libs包,导致再次运行yum失败
rpm -e VFlib2 bg5ps
# 删掉一些出依赖错误但又不重要的软件包
yum upgrade
reboot

upgrading from fedora core 4 to fedora core 5

2008年4月28日 没有评论

yum clean all
rpm -Uvh http://192.168.1.1/pub/os/Linux/Fedora/i386/5/RPMS.os/fedora-release-5-5.noarch.rpm
rpm -e iiimf-server iiimf-libs iiimf-le-chinput iiimf-le-xcin iiimf-le-chinput howl-libs xorg-x11-devel libgnomeui openmotif synaptics xorg-x11-xfs pcmcia-cs hal gnome-vfs2 gd-devel memprof gnome-python2 chkfontpath NetworkManager pm-utils kudzu system-config-packages gnome-python2-bonobo gnome-python2-gnomevfs libgnome-2.10.0-3.i386 libbonoboui gtkhtml2 gnome-python2-canvas gnome-python2-extras system-config-printer-gui gnome-python2-gnomevfs-2.10.0-1.i386 system-config-network system-config-httpd urw-fonts apmd system-config-network-tui system-config-mouse system-config-soundcard smartmontools microcode_ctl gnome-python2-gtkhtml2 system-config-date ghostscript ghostscript-fonts system-config-printer
yum update yum rpm
yum upgrade
reboot
#起来后再把原来fc4的kernel删掉(rpm -e kernelxxx)

分类: Operation System 标签: , , ,

upgrading from fc3 to fc5 directly

2008年4月11日 1 条评论

yum clean all
rpm -Uvh http://10.0.0.1/pub/os/Linux/Fedora/i386/5/RPMS.os/fedora-release-5-5.noarch.rpm

# 上面的10.0.0.1是公司内部的一台有fedora core 5安装树的服务器

rpm -e pcmcia-cs openmotif howl-libs xorg-x11-xfs synaptics gcc-g77 libgnomeui lm_sensors iiimf-le-chinput gnome-vfs2 chkfontpath gnome-python2 memprof net-snmp libgnome libbonoboui gnome-python2-bonobo gtkhtml2 urw-fonts gnome-python2-gtkhtml2 gnome-python2-canvas system-config-httpd system-config-network system-config-packages system-config-printer-gui ethereal ghostscript ghostscript-fonts system-config-printer kernel-2.6.9-1.667 kernel-smp-2.6.9-1.667 kudzu system-config-mouse system-config-network-tui system-config-soundcard kernel-utils hal NetworkManager umb-scheme guile swig

# 删掉一大堆可能跟升级yum*和rpm*产生依赖错误的软件包

yum install yum* rpm*

# 首先升级yum和rpm的相关包

yum install kernel-smp kernel

# 安装新的版本的kernel,因为新版的hal与<2.6.15的kernel冲突,而fc3的kernel正是小于2.6.15的

sync
sync
sync
reboot

# 用fc5的kernel(2.6.20)起起来

rpm -e kernel-2.6.12-1.1381_FC3 kernel-smp-2.6.12-1.1381_FC3

# 删掉与新版本hal冲突的kernel版本,如果有<2.6.15的kernel都要删掉

yum update

# 升级系统

rpm -qa | grep -i fc3

# 看看还有没有for fc3的软件包

rpm -e ace-5.6.1-2.423.sogou.fc3 iiimf-csconv-12.1-10.FC3.1

# 有的话删掉

ntsysv

# 从启动中去掉不需要的服务

reboot

分类: Operation System 标签: ,