Entries Tagged as 'Fedora'

upgrading from fc6 to fc7 online by using yum

官方文档在这里

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
最后才重起

oom-killer on Fedora Core 3

发现有台机器
FC3(Fedora Core 3)的系统
kernel2.6.12.3smp
[root@xxxx cron.daily]# egrep “Low|High” /proc/meminfo
HighTotal: 3080168 kB
HighFree: 26288 kB
LowTotal: 882600 kB
LowFree: 134452 kB
周末发生大面积服务当掉
今天查log
发现是:“

Out of Memory: Killed process xxxxx (service’s name).


这个机器好歹都是4G内存呀
不知怎么搞得
貌似连4G的swap都用完了
导致系统oom(out of memory)-killer到处乱杀进程

fc3下安装php5.2.5+pdo_mysql

也算是需求推动
产品那边需要在一台fc3(fedora core 3)的机器上装上php5
并且要启用pdo_mysql支持
偶,额滴神呀
幸好以前在别的机器上手工编过php5.x(具体版本5.2.5)
赶紧从那台机器上把php5.2.5拷过来
并把原来的./configure连同编译参数都调出来
再加上个–with-pdo-mysql重新configure一下
再make
make的时候出错了
不知道原因在哪儿
后来在网上搜了下
找了种折衷的办法
说是先编好php5
然后再把pdo_mysql的支持编进去

cd php5.2.5/ext/pdo_mysql
phpize
./configure
make
make install

这样居然成功了
再接着改php.ini
把编出来的pdo_mysql.so正确load进来
这样居然成功了!!

fc5升级到fc6的时候的错误

当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

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

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)

关于linux下bash的环境变量PROMPT_COMMAND

问题提出

作为系统管理员
经常需要在模拟终端上远程登上服务器做各种操作
而且很多时候需要同时用不同的窗口登上不同的服务器
当登上服务器太多的时候
就偶然会发现突然不知道哪个窗口登的是哪台服务器了
这可是个大问题
如果在错误的服务器里执行了特定命令
有时候后果是非常严重的
因而就想能否有种办法能让人一目了然的分辨出哪个窗口登陆的是哪台机器
因为我们分辨机器大多是靠ip地址
就想能否在窗口的标题部分显示机器的ip就最好了

技术实现

bash支持环境变量PROMPT_COMMAND
将其设置为一个命令行字符串或者是包含命令行字符串的一个文件的文件名
命令行用来在显示prompt之前执行
而xterm又支持3种escape序列
可以用来更改xterm的“icon name”和”title”两者之其一或两者都改
还有
在redhat系列的机器上(redhat、fedora)
都支持文件/etc/sysconfig/bash-prompt-xterm来保存bash+xterm下的PROMPT_COMMAND环境变量的内容
结合这几点
我们就可以轻松实现“在窗口标题部分显示已登陆服务器的ip地址”这个功能
我当前用的是

echo -ne “\e]2;$(ifconfig | awk ‘/inet addr:/ && ! /inet addr:127\./ { sub (”addr:”, “”); print $2 }’ | sed -e :a -e ‘$!N;s/\n/\|/g;ta’):${PWD}\a”

这里的”\e]2″是xterm支持的第三种escape序列,用来设置窗口的标题
“$(.*)”的内容是shell命令,用来取出服务器的当前ip地址(除去127.x.x.x)列表,并用”|”连接起来
“${PWD}”是指当前的工作目录
“\a”是xterm支持的escape序列的结束符

引申一下

后来发现,所谓”xterm支持的3种escape序列”,基本上其他的term都支持
起码secure CRT里所带的term类型都支持(我测过)
而且redhat系列的服务器(redhat, fedora)除了支持/etc/sysconfig/bash-prompt-xterm外
还支持/etc/sysconfig/bash-prompt-screen、/etc/sysconfig/bash-prompt-default
用来存储当term类型是screen时和term类型不是xterm和screen时的PROMPT_COMMAND环境变量的值
于是乎

cp /etc/sysconfig/bash-prompt-xterm /etc/sysconfig/bash-prompt-default
cp /etc/sysconfig/bash-prompt-xterm /etc/sysconfig/bash-prompt-screen

这样的话
不管secure crt里term设成什么
都能在其标题里显示服务器ip

补充一下

为什么这里还有个term被设成screen的case呢
那是因为我们常用的命令screen
执行的时候会将环境变量PROMPT_COMMAND设成”screen”

upgrading from fc3 to fc5 directly

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

我晕,wget抓比scp还要慢!

今天碰到个怪现象
某台服务器
上面跑httpd2.0.5x
从另外一台机器上用wget抓起web目录下的东东
居然比用scp直接拷贝之还要慢!!
不理解
一般来讲scp是需要加密解密的
理论上来讲应该比wget直接从http抓应该慢得多才对呀
但事实就是这样
scp速度能达到十几M
但是wget抓,最好也就1、2M咯
实在是不懂

安装daemontools的问题

工作上有需求
要看着(监控)某些服务器上的某些进程
想了,也尝试了n种方法
总觉得不是很完美
偶然想起n年前常用的svc
貌似能帮我们看着特定的进程(发现当掉会帮忙重起)
于是今天就找台机器想装上
svc是软件包daemontools里的东西
于是按照安装文档里所说:
mkdir -p /package
chmod 1755 /package
cd /package
wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
tar xzvf daemontools-0.76.tar.gz
rm daemontools-0.76.tar.gz
cd admin/daemontools-0.76
package/install

没料到居然出错:
./load envdir unix.a byte.a
envdir.o(.text+0xce): In function `main’:
: undefined reference to `errno’
envdir.o(.text+0×1b4): In function `main’:
: undefined reference to `errno’
envdir.o(.text+0×1ce): In function `main’:
: undefined reference to `errno’
unix.a(openreadclose.o)(.text+0×3b): In function `openreadclose’:
: undefined reference to `errno’
unix.a(pathexec_run.o)(.text+0xef): In function `pathexec_run’:
: undefined reference to `errno’
unix.a(pathexec_run.o)(.text+0×167): more undefined references to `errno’ follow
collect2: ld returned 1 exit status
make: *** [envdir] Error 1
Copying commands into ./command…
cp: cannot stat `compile/svscan’: No such file or directory

翻了翻google
发现是一个变量errno的问题
于是
vim src/error.h

extern int errno;

这一行改成:

#include

再重新
package/install
OK了