2009年5月29日 星期五

2009年5月23日 星期六

程式命名:駱駝命名法,匈牙利命名法和帕斯卡命名法

駱駝式命令法:
正如它的名稱所表示的那樣,是指混合使用大小寫字母來構成變量和函數的名字。例如,下面是分別用駱駝式命名法和下劃線法命名的同一個函數:

程序代碼
printEmployeePaychecks();
print_employee_paychecks();

第一個函數名使用了駱駝式命名法,函數名中的每一個邏輯斷點都有一個大寫字母來標記;第二個函數名使用了下劃線法,函數名中的每一個邏輯斷點都有一個下劃線來標記。

駱駝式命名法近年來越來越流行了,在許多新的函數庫和Microsoft Windows這樣的環境中,它使用得當相多。另一方面,下劃線法是c出現後開始流行起來的,在許多舊的程序和UNIX這樣的環境中,它的使用非常普遍。

匈牙利命名法:
廣泛應用於象Microsoft Windows這樣的環境中。Windows 編程中用到的變量(還包括宏)的命名規則匈牙利命名法,這種命名技術是由一位能幹的 Microsoft 程序員查爾斯- 西蒙尼(Charles Simonyi) 提出的。

匈 牙利命名法通過在變量名前面加上相應的小寫字母的符號標識作為前綴,標識出變量的作用域,類型等。這些符號可以多個同時使用,順序是先m_(成員變量), 再指針,再簡單數據類型,再其它。

例如:m_lpszStr, 表示指向一個以0字符結尾的字符串的長指針成員變量。

匈牙利命名法關鍵是:標識符的名字以一個或者多個小寫字母開頭作為前綴;前綴之後的是首字母大寫的一個單詞或多個單詞組合,該單詞要指明變量的用途。

帕斯卡(pascal)命名法:
與駱駝命名法類似。只不過駱駝命名法是首字母小寫,而帕斯卡命名法是首字母大寫,如:

程序代碼
DisplayInfo();
string UserName;

二者都是採用了帕斯卡命名法。在C#中,以帕斯卡命名法和駱駝命名法居多。

簡單的說

引用內容
MyData 就是一個帕斯卡命名的示例
而myData是一個駱駝命名法,它第一個單詞的第一個字母小寫,後面的單詞首字母大寫,看起來像一個駱駝
而iMyData是一個匈牙利命名法,它的小寫的i說明了它的型態,後面的和帕斯卡命名相同,指示了該變量的用途.

2009年5月21日 星期四

在TortoiseSVN上使用svn+ssh遇到的問題

在TortoiseSVN上使用svn+ssh遇到的問題
關鍵字: svn tortoisesvn ssh svn+ssh 密碼
使用TortoiseSVN連svn+ssh的位址遇到的問題

在TortoiseSVN裡使用
svn+ssh://myuser@MyConnection/usr/local/repos

後提示要輸入密碼。雖然最終可以成功checkout代碼,但TortoiseSVN不斷的要求我輸入密碼。

解決方法:
settings -> Network -> SSH Client -> 修改用戶端為 TortoiseSVN_HOME\bin\TortoisePlink.exe 並加參數 -pw
比我的是
D:\Program Files\TortoiseSVN\bin\TortoisePlink.exe -pw mypassword

如果在url裡沒有 myusername@ 那麼這裡還要指定 -l myusername

摘自:http://wangcheng.javaeye.com/blog/202137

PUTTY、 TortoiseSVN 不用輸入密碼

由於使用 TortoiseSVN 做文件版本的控管,但取出及寫入時,每次都要詢問密碼,而且常連問好幾次。它又無暫存的機制來簡化輸入密碼的功能,最後找到了它可以採用 ssh 的公、私鑰的方法來簡化登入的問題。

在伺服器中 ,會產生私鑰及公鑰兩個檔案

#ssh-keygen -t rsa

/home/user/.ssh/id_rsa
/home/user/.ssh/id_rsa.pub

把公鑰放入 authorized_keys
#cat id_rsa.pub >> authorized_keys

為了安全性,權限設為 600
#chmod 600 authorized_keys

在 windows client 端

取得 puttygen.exe 軟體,下載伺服器中的 id_rsa 。
這是 PUTTY 和 openssh 編碼方式不同,需要使用 puttygen.exe 做轉換成 putty 可以接受的格式。
Conversions → Import Key ,匯入 id_rsa 檔。
(在這兒可以輸入密碼來對私鑰做進一步的保護,但對 TortoiseSVN 還是會出現重複要求碼的情形,所以在這不再設密碼。)
按下 Save Private Key ,存成 C:\user.ppk

PUTTY 使用時,SSH --> AUTH 指定私鑰的檔案 (C:\user.ppk)
再使用 PUTTY 登入時就可以不使用密碼了。

TortoiseSVN -> 設定-->網路 --> ssh 用戶端
C:\Program Files\TortoiseSVN\bin\TortoisePlink.exe -i C:\user.ppk
就無需再輸入密碼。

如果 SSH port 改變,那麼這部份需要做改變,例(1234 port):
C:\Program Files\TortoiseSVN\bin\TortoisePlink.exe -P 1234 -i C:\user.ppk

注意:私鑰檔一定要保存好,不可被取得,不然就毁了!

參考資料:
http://forum.icst.org.tw/phpBB2/viewtopic.php?p=23185&sid=53abacb0f55408629b5170032370336c&PHPSESSID=56201bb80a7f4851d00eec9bc2d442c3

(繼續)

---
http://forum.icst.org.tw/phpBB2/viewtopic.php?p=31000

1.修改 /etc/ssh/sshd_config
#在 sshd_config 裡,找到與下列相符的選項,就將選項前的 # 號拿掉:
Protocol 2
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PermitRootLogin yes
#找到 ChallengeResponseAuthentication yes 的選項,改成 no ,如下:
#(選項解釋:密碼登入選項,一定要改成 no,這樣子沒有擁有私鑰的人就會無法登入了)
# Change to no to disable s/key passwords
#修改成 no 來停用 s/key 密碼
#ChallengeResponseAuthentication yes
ChallengeResponseAuthentication no
還有把 PasswordAuthentication yes
改成 PasswordAuthentication no
#以下為非必要選項
SyslogFacility AUTHPRIV(或 SyslogFacility AUTH)
LogLevel INFO

接下來就存檔離開
重新啟動 sshd 服務.
#service sshd restart

2.在 Server 端,使用 ssh-keygen 來建立 DSA Private Key 和 Public Key.
先檢查 /root 下有沒有 .ssh 的資料夾,如果有就略過建立資料夾的步驟,
在 /root 下建立資料夾 .ssh,
#mkdir .ssh
#cd .ssh
#ssh-keygen -b 2048 -t dsa
然後,輸入 Private Key(私鑰)檔名:id_dsa,和 Public Key(公鑰)檔名:id_dsa.pub
這個時候會問你 key passphrase,
(可以自由選擇輸入與否,即使現在不輸入也沒關係,
後面再用 puttygen.exe 轉換格式時再輸入,也是可以的,
但是不可為了省卻輸入密碼,而只用 KEY 就登入 LINUX 系統,
此舉很危險,萬一 Key 檔案被有心人士偷取,就糟糕了.>" authorized_keys

3.因為 Openssh 的私鑰格式和 putty 使用的格式截然不同,
所以需要由 puttygen.exe 轉換格式後才能使用,不然可能會有兩種錯誤的情況:
--------------------------------------------------------------
可能出現的幾種問題:
(a)、Server refused our key
公鑰和私鑰不匹配,或者沒有 authorized_keys 文件
(b)、Unable to use key file "id_dsa.ppk" (SSH2 private key)
私鑰檔案的格式不正確
--------------------------------------------------------------
3.1把 server 上的私鑰:id_dsa 拷貝到 PC 上
將 id_dsa 的內容顯示在螢幕上,再複製下來.
#cat id_dsa
把複製的內容貼到記事本裡存成 id_dsa_by_ssh-keygen.ppk
再來就是開啟用 puttygen.exe → Conversions → Import Key
匯入後,在 Key passphrase 和 Confirm passphrase 輸入保護私鑰的密碼後,
(不想打密碼的人,就保留成空白也可以,不過萬一私鑰掉了被撿到,那就慘了>" authorized_keys
但是要確認在 /home/[users]/.ssh/ 路徑和檔名有沒有錯誤。
[users]→表示為 user 的帳號名稱。

2把 server 上的私鑰:id_dsa 拷貝到 PC 上
將 id_dsa 的內容顯示在螢幕上,再複製下來.
#cat id_dsa
把複製的內容貼到記事本裡存成 id_dsa_by_ssh-keygen.ppk
(檔名命名方法沒有一定,但是為不讓自己搞不清楚,這樣子做最好)
再來就是開啟用 puttygen.exe → Conversions → Import Key
(匯入時,因為我們在用 ssh-keygen 產生公/私鑰時,就有用密碼了,所以在你使用 puttygen.exe,
做匯入的動作時,自然會要求你輸入密碼了)
匯入後,在 Key passphrase 和 Confirm passphrase 輸入保護私鑰的密碼後,
(不想打密碼的人,就保留成空白也可以,不過萬一私鑰掉了被撿到,那就慘了"),
然後,再從 File → Save Private Key 把私鑰另存新檔即可使用了。

[color=red]3.強烈建議:私鑰(Private Key)一定要用 Key Passphrase 來保護,
密碼(至少 8 位數以上,每三個月更換一次公/私鑰)千萬不要跟 root 的密碼一樣.

4.因為我是用 root 來替 splin 這個 user 建立公/私鑰,
所以我要把檔案權限和屬性稍微修改一下。
#chown -R splin.splin /home/splin/.ssh/
#chmod -R 755 /home/splin/.ssh/

5.Pietty/Putty 使用方法:
啟動 Pietty/Putty ,從 SSH → Auth 去指定私鑰的檔案路徑即可。


摘自:http://w3.sy3es.tnc.edu.tw/blogs/index.php/2006/03/08/puttya_tortoisesvn_ac_c_uefca_yam_ccf?blog=2

2009年5月19日 星期二

MySQL安裝優化篇


#CFLAGS="-O3" CXX=gcc CXXFLAGS="-O3 -felide-constructors -fno-exceptions -fno-rtti -fomit-frame-pointer -ffixed-ebp"



#./configure --prefix=/usr/local/mysql --enable-assembler --with-mysqld-ldflags=-all-static --with-client-ldflags=-all-static --with-unix-socket-path=/usr/local/mysql/tmp/mysql.sock --with-charset=utf8 --with-collation=utf8_general_ci --with-extra-charsets=all


#./configure --prefix=/opt/mysql --enable-assembler --with-mysqld-ldflags=-all-static --with-client-ldflags=-all-static --with-unix-socket-path=/opt/mysql/tmp/mysql.sock --with-charset=utf8 --with-collation=utf8_general_ci --with-extra-charsets=all



#make -j2;make install;

# adduser mysql


# ./usr/local/mysql/bin/mysql_install_db
Installing MySQL system tables...
OK
Filling help tables...
OK

To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system


# chmod 700 share/mysql/mysql.server
# adduser mysql
# mkdir /opt/script -p
#cd



/usr/local/mysql/bin/mysqladmin -u root password 'new-password'
/usr/local/mysql/bin/mysqladmin -u root -h localhost.localdomain password 'new-password'

Alternatively you can run:
/usr/local/mysql/bin/mysql_secure_installation

You can start the MySQL daemon with:
cd /usr/local/mysql ; /usr/local/mysql/bin/mysqld_safe &

You can test the MySQL daemon with mysql-test-run.pl
cd /usr/local/mysql/mysql-test ; perl mysql-test-run.pl


#edit /root/.bashrc

vi /root/.bashrc
type those at the end

/usr/local/mysql/bin/mysql_secure_installation


### install google perftools
tar zxvf google-perftools-1.0
cd google-perftools-1.0


./configure --prefix=/opt/google-perftools && make -j2 && make install
echo /opt/google-perftools/lib >> /etc/ld.so.conf
ldconfig -v


vi mysql_config.sh

### config mysql


mysqld_bin_path='/usr/local/mysql/bin/mysqld_safe'
mysql_config_line=`cat -n $mysqld_bin_path | grep '# executing mysqld_safe' | awk '{ print $1}'`
sed -ie ''$mysql_config_line' a\
export LD_PRELOAD=/opt/google-perftools/lib/libtcmalloc.so' $mysqld_bin_path
/etc/init.d/mysql restart

### verify
/usr/sbin/lsof -n | grep tcmalloc
# *** message like below ***
# mysqld 13380 mysql mem REG 8,3 1663600 3860989 /opt/google-perftools/lib/libtcmalloc.so.0.0.0
#

Linux hostname修改

在Linux下修改主機名稱有兩種方法:
一:使用hostname命令
[root@test ~]# hostname yourname
注意:使用這個命令修改主機名稱只能在當前shell有效,如果重啟系統就會失效。
二:修改linux主機的設定檔/etc/sysconfig/network 和 /etc/hosts
1.修改/etc/sysconfig/network裡面的主機名稱字。
# vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=yourname //在這修改hostname,(必須重起後生效?)
2.修改/etc/hosts裡面的名字
# vi /etc/hosts
127.0.0.1 localhost.localdomain localhost
192.168.1.121 yourname //在這修改hostname
//有時候只有這一行
127.0.0.1 yourname localhost.localdomain localhost
修改 /etc/hosts。不修改的話,apache等需要解析主機名稱的服務將不能啟動
127.0.0.1 newhost localhost

¥¥¥那麼如何在不重新開機linux的情況下,修改主機名稱而讓其生效呢?
使用hostname newname就可以在 重新登錄一下就可以使其生效,但是重起後就會失效

安裝郵件伺服器(Postfix)

作者:張益豪,歡迎轉載或指教 最後修正時間:2007/04/28

前 言


在CentOS中,預設的郵件伺服器(SMTP方面)是sendmail,但sendmail有蠻多的缺點,比如,配置復雜、安全漏洞曾被多次發現--並且依然存在、郵件發送速度慢等等,這裡就不再一一敘述。而另一個被廣泛應用於郵件服務方面的“Postfix”的缺點就少得多,或者說它就是針對於sendmail的缺點,而被設計的。對應sendmail的問題,它在各方面也比較成熟。所以,無特殊要求,這裡不推薦用sendmail來構建郵件服務器。本站介紹的郵件服務器配置方法,也將Postfix作為研究使用方向。



目前最簡單的郵件主機配置方法是以postfix + dovecot,其中postfix 用來當作mail Server的MTA,dovecot 用來當POP3收信介面,以下將以最簡單的設定方式來建置一部簡單的Mail Server。



安 裝

使用yum安裝postfix及 dovecot

[root@sample ~]# yum -y install postfix

[root@sample ~]# yum -y install dovecot



使用yum安裝CentOS的郵件系統切換程式

[root@sample ~]# yum -y install system-switch-mail



執行郵件系統切換程式

[root@sample ~]# system-switch-mail



在選單中選取Postfix 然後按OK就完成切換了







設定檔配置



編輯Postfix設定檔

[root@sample ~]# vi /etc/postfix/main.cf



修改下面相關設定

myhostname = mail.ihao.org ←設定主機名稱

myorigin = $myhostname ← 發信時所顯示的domain

inet_interfaces = all ← 監聽的介面,一定要改成all

mydestination = $myhostname, localhost.$mydomain, localhost, ihao.org ← 允許收信的主機名稱

mynetworks = 127.0.0.0/8, 192.168.1.0/24 ← 信任的網域,設定在這裡的網域可以直接透過postfix寄信



重啟動Postfix,讓設定檔生效

[root@sample ~]# service postfix restart



編輯dovecot設定檔

[root@sample ~]# vi /etc/dovecot.conf



修改下面設定

pop3_listen = * ←將監聽服務的介面改成 * 就可以了



重啟動dovecot,讓設定檔生效

[root@sample ~]# service dovecot restart



到這邊一部簡單的mail Server就算建置完成了

摘自:http://www.ihao.org/dz5/thread-229-1-1.html

2009年5月18日 星期一

RHEL 5.1 的yum

當我們在做RHEL的練習時,沒有YUM可以用實在很不方便,要常常去找光碟片上的RPM來安裝,偏偏上RHCE課程時送的光碟又只有CD的分成好幾片,實在非常不方便(這實在很詭異,難道RedHat認為花的起上課費用的學員,家裡電腦會沒有DVD嗎).

RHEL因為是付費版,所以如果沒有買授權是無法註冊RHN來使用YUM,但一般我們在做練習又不可能去花錢買授權,所以只有2種方式讓你能用YUM.

1.自己使用光碟片的檔案建立Local YUM Server

2.使用其他的YUM Server

先介紹第2種最簡單的方式,大家在學RHEL時一定要認識CentOS,因為它就是一群善心人士基於RHEL也是Open Source所以希望能讓更多人使用,把RHEL重新建置成免費版本,要注意他無法保證跟RHEL一模一樣,但穩定度一定比Fedora好.

上面提到CentOS跟RHEL是極相似的雙胞胎,所以這也代表CentOS的YUM Server上的RPM也可以安裝在RHEL上.

如果有上過課的一定必須知道怎麼設定新的YUM Server目標,就是新增一個yum repos.

先到/etc/yum.repos.d目錄裡,建立一個到CentOS的yum repos

#cd /etc/yum.repos.d

#vi centos.repo <==檔名可自定,但副檔名一定要.repo

將以下內容複製到centos.repo並儲存

[c5base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=5&arch=$basearch&repo=os

gpgcheck=1
enabled=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5

#released updates
[c5updates]
name=CentOS-$releasever - Updates
mirrorlist=http://mirrorlist.centos.org/?release=5&arch=$basearch&repo=updates

gpgcheck=1
enabled=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5

#packages used/produced in the build but not released
[c5addons]
name=CentOS-$releasever - Addons
mirrorlist=http://mirrorlist.centos.org/?release=5&arch=$basearch&repo=addons
gpgcheck=1
enabled=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5

#additional packages that may be useful
[c5extras]
name=CentOS-$releasever - Extras
mirrorlist=http://mirrorlist.centos.org/?release=5&arch=$basearch&repo=extras
gpgcheck=1
enabled=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5

#additional packages that extend functionality of existing packages
[c5plus]
name=CentOS-$releasever - Plus
mirrorlist=http://mirrorlist.centos.org/?release=5&arch=$basearch&repo=centosplus
gpgcheck=1
enabled=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5



再來就是將yum的cache清除

#yum clean all

完成,下次你就可以在RHEL上使用YUM了

注意:以上方式只是用於,平時在家裡做練習時方便用,如果在公司使用請購買RedHat的正式授權,以確保系統的穩定度.

不然就是改用CentOS

絕對不要再正式環境使用無法做正常yum更新的RHEL這樣是非常不安全的,而且也違反軟體著作財產權.

摘自:http://blog.xuite.net/pippeng/blog/18774006

2009年5月14日 星期四

Redhat Update Kernal RPM

更換 Linux 核心是每一位 Linux 主機管理者經常要面對的問題, 本文將一些文件串聯在一起, 供各位參考

更換 Linux 核心(Kernel) 對剛接觸 Linux 管理者而言, 多少會覺得有點困難; 其實只要試個幾次, 很快地, 您就會感到駕輕就熟.

早期更換 Linux Kernel 只有採用原始碼編譯一途, 近幾年由於套件管理模式大行其道, 因此又多了另一新選擇, 其中 RPM 是最為流行的方式之一.

注意! 不管您打算採用那一種方式, 您都應該先做好一開機片, 以防萬一

製作開機片的方法如下:

1.

uname -r

比如出現以下訊息

2.4.18-10
2.

將它放在以下指令之後, 此時請放入一片空白磁片:

mkbootdisk --device /dev/fd0

完整指令為:
mkbootdisk --device /dev/fd0 2.4.18-10

接著您便可以安心來做核心的更換工作了.

以下先介紹原始碼編譯安裝的方法:(by OLS3 技術文件)

一. 原始碼 Kernel 重製:

流程:

1.

先至 ftp.tnc.edu.tw/sysop/Linux-kernels/

或 http://www.kernel.org 去下載 Linux 核心

其中, 版本代碼 2.4 開頭者為穩定版(建議), 2.5 為實驗版(不建議).
2.

設定 kernel 選項
3.

編譯 kernel
4.

編譯 modules, 安裝 modules
5.

安裝 kernel
6.

設定 boot loader
7.

重新開機

步驟:

1.

cd 您解壓後的目錄下的 linux 目錄中
2.

make mrproper
3.

make xconfig (menuconfig 或 config), 它會存成 .config
這個步驟是最困難的, 因為您必須了解很多個選項的意義才行! 這個部份也是必須充份練功的地方!
4.

make dep
5.

make bzImage
6.

make modules
7.

make modules_install
8.

cp arch/i386/boot/bzImage /boot
9.

編輯 /etc/lilo.conf 或 /boot/grub/grub.conf

lilo.conf 的修改範例:

boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
linear
default=linuxnew

image=/boot/vmlinuz-2.2.14-5.0
label=linux
read-only
root=/dev/hda1

image=/boot/bzImage
label=linuxnew
read-only
root=/dev/hda1

==========================
grub.conf 的修改樣本:

default=0
timeout=3
splashimage=(hd0,0)/grub/splash.xpm.gz
title Red Hat Linux (2.4.18-10)
root (hd0,0)
kernel /vmlinuz-2.4.18-10 ro root=/dev/hda3
initrd /initrd-2.4.18-10.img
title Red Hat Linux (2.4.18-5)
root (hd0,0)
kernel /vmlinuz-2.4.18-5 ro root=/dev/hda3
initrd /initrd-2.4.18-5.img
title Red Hat Linux (2.4.18-3)
root (hd0,0)
kernel /vmlinuz-2.4.18-3 ro root=/dev/hda3
initrd /initrd-2.4.18-3.img

10.

執行 lilo -v -v; 若是使用 grub, 則不必.
11.

reboot

*

為安全起見, 應該在 lilo 中保留舊核心, 以免萬一新核心出問題, 而無法開機.

說明:

1.

make mrproper 會移除先前重製核心時不必要的殘餘檔案, 這樣可以避免這些檔案對原始碼目錄樹產生不必要的干擾. 執行 make mrproper 時, 會砍除設定配置檔 .config, 如果您認為它很重要的話, 應該予以備份.
2.

make config 是文字選項模式, 也是傳統的方式, 這個方式的缺點是: 在選擇時, 無法回頭.
make menuconfig 是文字選單模式.
make xconfig 是圖型選單模式, 需要 X Windows.(推薦此方式)
make config 時, 它會先執行 /bin/sh scripts/Config arch/i386/config.in

二. 使用 RPM 更換核心:

必須注意您的硬碟是 IDE 或是 SCSI, 以及您的主機 CPU 是單顆或雙顆!

另外, 我建議各位在更換核心之前, 先安裝 urh, 把大部份套件自動予以更新, 它也會把核心相關的 RPM 更新, 如 kernel-header*.rpm; 俟 urh 執行完畢, 才來進行以下動作!


A. 若是 IDE 硬碟, 那麼更換的方式十分簡單:

1. 若有安裝 autoURPM(ftp.tnc.edu.tw/sysop/urh) 者,

可 cd /var/spool/autoupdate

rpm -ivh kernel-2.2.19-6.2.16*.rpm

若無安裝 autoURPM 者,
可至教網中心 ftp.tnc.edu.tw/sysop/rpms 中去下載

kernel-2.2.19*.rpm

若是雙 CPU , 則要安裝 kernel-smp*.rpm 的套件.

2. 編輯 /etc/lilo.conf 修改成如下:

boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
linear
default=linuxnew

image=/boot/vmlinuz-2.2.14-5.0
label=linux
read-only
root=/dev/hda1

image=/boot/vmlinuz-2.2.19-6.2.16
label=linuxnew
read-only
root=/dev/hda1


注意! 您的開機區未必是 /dev/hda1
必須視貴校主機 lilo.conf 中原有的設定而定

3. lilo -v -v

4. 重新開機即可.(注意, 上述已改由新的核心來開機)

若是使用 GRUB 來開機者, 只要執行以下指令即可

rpm -ivh kernel-2.2.19-6.2.16*.rpm

不必再去修改 /boot/grub/grub.conf
因為安裝這個 kernel RPM 套件時, 它會自動幫您修改 grub.conf
您唯一要做的是: 把 grub.conf 中的開機順序改成新的核心
比如: 以下的 default=0 即表示是由最新的 kernel 來開機
default=0
timeout=3
splashimage=(hd0,0)/grub/splash.xpm.gz
title Red Hat Linux (2.4.18-10)
root (hd0,0)
kernel /vmlinuz-2.4.18-10 ro root=/dev/hda3
initrd /initrd-2.4.18-10.img
title Red Hat Linux (2.4.18-5)
root (hd0,0)
kernel /vmlinuz-2.4.18-5 ro root=/dev/hda3
initrd /initrd-2.4.18-5.img
title Red Hat Linux (2.4.18-3)
root (hd0,0)
kernel /vmlinuz-2.4.18-3 ro root=/dev/hda3
initrd /initrd-2.4.18-3.img


B. SCSI 硬碟:

若是 SCSI 硬碟, 且 /boot 中有 initrd 的 image
則要多做一個動作: (註: 若您是安裝 RedHat 7.2 以後的版本,
可直接像 IDE 硬碟的作法一樣,
使用 rpm -ivh kernel*.rpm 即可升級)

以 RedHat 6.2 為例:

mkinitrd /boot/initrd-2.2.19-6.2.16.img 2.2.19-6.2.16

lilo.conf 要修改, 加入以下設定:

image=/boot/vmlinuz-2.2.19-6.2.16
label=linuxnew
root=/dev/sda1 (這個地方, 要視您原先的 root=/dev/sda?? 而定)
initrd=/boot/initrd-2.2.19-6.2.16.img
read-only

再 lilo -v -v
重新開機一次

當然, 開機 bootdisk 一定要先準備好.

若還是不成?, 可用 RedHat 7.3 光碟直接升級.
再用 urh-7.3 來大量升級套件. (下載位址: ftp.tnc.edu.tw/sysop/urh)

(以上是 OLS3 在網管討論區的回應)

C. 以下問題您可能也會碰到喔!(SCSI硬碟)
底下是敝縣網管討論區中二位網管先進的對話內容節錄, 對您可能有所幫助.

=======================
sammy 留言:
重新開機後出現LI
二字就都不動了
還好我有做舊kernel的開機片,
暫時用開機片開機server可工作
我的猜測是 lilo -v -v時
電腦以為我的開機碟是hda,
所以把開機程式寫入hda,但我真正的開機碟是sda
但實際情形是否如此,我也不知

目前暫時只能用磁片開機
請問要如何是好
========================
hsmhsm 回覆 sammy 如下:
之前去中山上課,老師說ide的硬碟就是會先被讀取
所以他在前兩行中間再加了兩行
(不過當時裝的是trustix)
boot=/dev/sda
disk=/dev/sda
bios=0x80
map=/boot/map
反正你有開機片,要不要試試??
=======================
sammy 回覆 hsmhsm 如下:
從暑假一直放到現在,
放了一個月,一直使用開機片開機
今天終於有空試了一下
在加了那二行後,
果然成功,真是謝了

摘自:http://www.csie.nctu.edu.tw/~tsaiwn/course/introcs/history/linux/linux.tnc.edu.tw/techdoc/kernel2.html

如何修改Redhat的預設登入模式

方法1:
#vi /etc/inittab
將id:5:initdefault 改成 id:3:initdefault

方法2:
以root登入執行
#init 3

2009年5月12日 星期二

[ecplise]java.lang.OutOfMemoryError: Java heap space

with the increased parameters from Ed I did not yet receive a dump.

So currently me eclipse.ini looks like the following:

-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
512m
-vmargs
-Xms40m
-Xmx512m
-XX:+HeapDumpOnOutOfMemoryError

2009年5月7日 星期四

I'm managing a website in my repository. How can I make the live site automatically update after every commit?

This is done all the time, and is easily accomplished by adding a post-commit hook script to your repository. Read about hook scripts in Chapter 5 of the book. The basic idea is to make the "live site" just an ordinary working copy, and then have your post-commit hook script run 'svn update' on it.

In practice, there are a couple of things to watch out for. The server program performing the commit (svnserve or apache) is the same program that will be running the post-commit hook script. That means that this program must have proper permissions to update the working copy. In other words, the working copy must be owned by the same user that svnserve or apache runs as -- or at least the working copy must have appropriate permissions set.

If the server needs to update a working copy that it doesn't own (for example, user joe's ~/public_html/ area), one technique is create a +s binary program to run the update, since Unix won't allow scripts to run +s. Compile a tiny C program:

#include
#include
#include
int main(void)
{
execl("/usr/local/bin/svn", "svn", "update", "/home/joe/public_html/",
(const char *) NULL);
return(EXIT_FAILURE);
}

... and then chmod +s the binary, and make sure it's owned by user 'joe'. Then in the post-commit hook, add a line to run the binary.

If you have problems getting the hook to work, see "Why aren't my repository hooks working?".

Also, you'll probably want to prevent apache from exporting the .svn/ directories in the live working copy. Add this to your httpd.conf:

# Disallow browsing of Subversion working copy administrative dirs.

Order deny,allow
Deny from all


from:http://subversion.tigris.org/faq.html#website-auto-update

wibiya widget