失落的紀錄

2010-06-08

slackware 13 升級成 13.1

分類: Llinux — 番茄 @ 00:08

SlackWare 已發行 13.1的版本,現在就將13.0升級成13.1

SlackWare 13.1 的安裝光的內,有兩個檔案,分別是:
UPGRADE.TXT:升級的步驟。
CHANGES_AND_HINTS.TXT:升級時要注意的相關事項,以及其他問題。
這兩個檔案說明如何從 SlackWare 13 升級成 SlackWare 13.1

*******進行更新時,請務必將相關資料先行備份。*******

1.下載 SlackWare 13.1 的安裝光碟,建議下載 DVD 的版本。

 

2.使用虛擬光碟,將 SlackWare 13.1 的安裝光碟映像檔掛載起來。

 

3.開啟 SlackWare 13.1 的安裝光碟 ,在這個安裝光碟內有一個資料夾 SlackWare。

 

4.開啟 winscp 連接 Linux 主機,將 slackware 的資料夾複製到 Linux 主機內的 root 資料夾內。

 

5.到 Linux 主機上,然後開啟 slackware 資料夾,將不需要的套件移除。(將 X-Windows 的套件移除)

# cd /root/slackware/
# rm -r e/
# rm -r kde/
# rm -r kdei/
# rm -r xap/
# rm -r y/
# mv x /tmp/
# mkdir x
# cp -p /tmp/x/lib*.* x/

 

6.之前測試升級時,發現升級後的 Mysql 資料庫有點問題,
所以這次就先將資料庫的檔案備份下來,等升級到13.1時,再將此備份的檔案,複製到新的資料庫內。

# cp -pr /var/lib/mysql /tmp

 

7.移除 mysql 以及相關設定檔

# removepkg mysql
# cd /var/lib/
# rm -r mysql

 

8.進入單機(人)模式

# telinit 1

 

9.將 更新程式 更新

# upgradepkg /root/slackware/a/pkgtools-*.tgz
# upgradepkg /root/slackware/a/tar-*.tgz
# installpkg /root/slackware/a/xz-*.tgz
# upgradepkg /root/slackware/a/findutils-*.txz

 

10.更新 glib 函式庫

# upgradepkg /root/slackware/a/glibc-solibs-*.t?z

 

11.更新所有套件

# upgradepkg --install-new /root/slackware/*/*.t?z

 

12.根據 CHANGES_AND_HINTS.TXT 說明,有些套件必須要移除指令如下:

# removepkg bluez-libs bluez-utils cupsddk device-mapper epic4 gqview 
kdelibs-experimental lbxproxy libgtkhtml liblbxutil libungif 
libv4l loadlin mpg321 mplayerthumbs proxymngr xf86-input-citron 
xf86-input-elographics xf86-input-fpit xf86-input-hyperpen 
xf86-input-mutouch xf86-video-newport xf86-video-xgixp

 

13.將放在 /etc 內的設定文件(*.conf)製作備份 ,舊的設定文件(包含13.0版的,
或是之前有改變的設定文件),都改為 *.bak,其中
rc.d/rc.local,
rc.local.new,group,
passwd,
shadow,都會多一個 *.new 的檔案,表示是13.1新的版本。

# cd /tmp
# vi ch
將下列資料複製到ch內然後存檔
cd /etc
find . -name "*.new" | while read configfile ; do
if [ ! "$configfile" = "./rc.d/rc.inet1.conf.new" 
-a ! "$configfile" = "./rc.d/rc.local.new" 
-a ! "$configfile" = "./group.new" 
-a ! "$configfile" = "./passwd.new" 
-a ! "$configfile" = "./shadow.new" ]; then
cp -a $(echo $configfile | rev | cut -f 2- -d . | rev) 
$(echo $configfile | rev | cut -f 2- -d . | rev).bak 2> /dev/null
mv $configfile $(echo $configfile | rev | cut -f 2- -d . | rev)
fi
done

# chmod 777 ch
# ./ch <=執行此腳本

 

14.根據 CHANGES_AND_HINTS.TXT 的說明,改變 fstab 內的磁碟代號,再13.1版本中
硬碟部分:
/dev/hda 要改成 /dev/sda
/dev/hdc 要改成 /dev/sdb

光讀取裝置部分:
/dev/hdb 要改成 /dev/sr0
所以請開啟並且編輯
/etc/fstab 找到相關的裝置代號,改成新的裝置代號。

 

15.執行 lilo,然後重開機 (此時請勿變動 /etc/lilo.config 的設定值)

# lilo
# reboot

 

16.在 LILO 開機時,按下 [TAB] 鍵。會出現 [BOOT:]的提示符號,
此時輸入您存放開機核心的 /boot 資料夾,裝置名稱,這裡要使用新的代號
如:
Linux root=/dev/sda1
就可以正常進入 Linux

如果您的 LILO開機時,沒有設定暫停時間,就必須再 LILO 出現之前按下 [TAB] 鍵,
否則會馬上進入開機程序,然後停在一個錯誤的地方,此時請重開機,然後再多試幾次。
使用另外的方式

 

17.開機完成後,編輯lilo.conf 檔案

# vi /etc/lilo.conf
將 
boot = /dev/hda 改成您存放 MBR 所在的裝置代號。如:/dev/sda

將 
root = /dev/hda1 改成存放 /boot 資料夾的裝置代號。如:/dev/sda1

改完後存檔,執行 LILO 將 lilo.conf 存在 MBR,然後再重開機。
# lilo
# reboot

 

18.到此已完成Slackware升級成13.1,再來就是注意有一些存放在 /etc 內的設定檔,
因為之前有執行一個腳本,將舊的設定檔變成 *.bak, 而新的設定檔就會被13.1的版本取代,
所以請先使用搜尋一下是否有 *.bak 的檔案,然後再看看哪些是需要修改的
# find /etc -name *.bak

 

19.接下來恢復 mysql的資料。

#  mysql_install_db --user=mysql
(建立MySql 的基本資料庫)
# /etc/rc.d/rc.mysqld start (啟動 Mysql)
# mysql_secure_installation (執行安全安裝的設定相關說明)

 

20.將之前備份在 /tmp/mysql 內的資料庫檔,把需要的資料庫檔複製到 /var/lib/mysql 內

 

21.把復原的資料庫檔 ,還原個別的管理權限,可以使用 PhpMyAdmin 這的管理程式設定:

grant all on 資料庫名稱.* to 使用者@localhost identified by ‘密碼‘;

================================================================

其他:

A.Openwebmail ,必須將 Text-Iconv-1.7 再安裝一次才可以正常執行

# cd /tmp
# wget  http://search.cpan.org/CPAN/authors/id/M/MP/MPIOTR/Text-Iconv-1.7.tar.gz
# tar -xvf Text-Iconv-1.7.tar.gz
# cd Text-Iconv-1.7
# perl Makefile.PL
# make
# make test
# make install

 

B.Sendmail更新後,會使用新的設定檔 (sendmail.cf),如果之前有將(*.mc)檔案備份下來,
就可以使用(*.mc)然後再產生一個新的 sendmail.cf 供 Sendmail 使用

# cd /usr/share/sendmail/cf/cf
# ./Build sendmail-slackware-tls-sasl.mc
# rm /etc/mail/sendmail.*
# mv sendmail-slackware-tls-sasl.cf /etc/mail/sendmail.cf

 

C.如果有使用 KVM 請編輯 /etc/modprobe.d/psmouse.conf 這個檔案:

#options psmouse proto=imps

改成
options psmouse proto=imps

然後重新啟動 psmouse 模組

# modprobe -r psmouse ; modprobe psmouse

 

D.如果是很老的機器(BIOS版本是在 2001之後的),
在關機時無法關閉電源,請試試,在 lilo.conf 加入下列資料
append = "acpi=force"
存檔後,安裝。

 

E.執行完 netconfig 設定網路相關組態後(含主機名稱,IP等相關資料)後,
重開機後仍然無法啟動網路介面,如:

# ifconfig 
lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:24 errors:0 dropped:0 overruns:0 frame:0 TX packets:24 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:2544 (2.4 KiB) TX bytes:2544 (2.4 KiB)

如果出現如上圖狀況,請將
/etc/udev/rules.d/70-persistent-net.rules 檔案移除

# rm -f etc/udev/rules.d/70-persistent-net.rules

然後重新開機就因該就會有一個 ethX(X 表示編號) 的網路介面
(此狀況比較會出現在虛擬機器上)

 

F.升級腳本(可以按照您的需求做修改)
up1 (套件安裝-必須再單機模式下執行)

#!/bin/sh
#read -t3600 -n1 -r -p "掛載 slackware 13.1 的安裝光碟..." key
#cd /
#mkdir /packages
#mount /dev/cdrom /packages

#read -t3600 -n1 -r -p "複製 slackware 13.1 安裝套件..." key
#cd /root
#cp -rp /packages/slackware .
#cd slackware/x
#rm *
#cp /packages/slackware/x/lib*.* .
#cd ..

#read -t3600 -n1 -r -p "移除 安裝光碟 ..." key
#umount /packages

#read -t3600 -n1 -r -p "移除 舊版的MySql ..." key
removepkg mysql
cd /var/lib/
rm -r mysql

read -t5 -n1 -r -p "先更新 升級必須使用的套件 ..." key
upgradepkg /root/slackware/a/pkgtools-*.tgz
upgradepkg /root/slackware/a/tar-*.tgz
installpkg /root/slackware/a/xz-*.tgz
upgradepkg /root/slackware/a/findutils-*.txz
upgradepkg /root/slackware/a/glibc-solibs-*.t?z

read -t5 -n1 -r -p "更新所有套件 a ap d f k l n tcl x ..." key
cd /root/slackware
upgradepkg --install-new /root/slackware/*/*.t?z

read -t5 -n1 -r -p "移除不需要的套件 ..." key
removepkg bluez-libs bluez-utils cupsddk device-mapper epic4 gqview 
kdelibs-experimental lbxproxy libgtkhtml liblbxutil libungif 
libv4l loadlin mpg321 mplayerthumbs proxymngr xf86-input-citron 
xf86-input-elographics xf86-input-fpit xf86-input-hyperpen 
xf86-input-mutouch xf86-video-newport xf86-video-xgixp

read -t5 -n1 -r -p "備份 /etc/內所有的設定檔 ..." key
cd /etc
find . -name "*.new" | while read configfile ; do
  if [ ! "$configfile" = "./rc.d/rc.inet1.conf.new" 
    -a ! "$configfile" = "./rc.d/rc.local.new" 
    -a ! "$configfile" = "./group.new" 
    -a ! "$configfile" = "./passwd.new" 
    -a ! "$configfile" = "./shadow.new" ]; then
    cp -a $(echo $configfile | rev | cut -f 2- -d . | rev) 
      $(echo $configfile | rev | cut -f 2- -d . | rev).bak 2> /dev/null
    mv $configfile $(echo $configfile | rev | cut -f 2- -d . | rev)
  fi
done

read -t5 -n1 -r -p "移除 70-persistent-*檔案 ..." key
rm -f /etc/udev/rules.d/70-persistent-*

read -t5 -n1 -r -p "修改 /etc/fstab 內的裝置代號 ..." key
sed -i 's/hda/sda/' /etc/fstab

read -t5 -n1 -r -p "安裝 lilo ..." key
lilo

 

up2(裝後相關的設定)

#!/bin/sh
########設定###############################
# 尋找檔案 /etc/rc.d/rc.sendmail 內容為 -q25m
# 將此字串,改為 -q25m -O LogLevel=16
sed -i 's/-q25m/-q25m -O LogLevel=16/' /etc/rc.d/rc.sendmail
cp /usr/share/sendmail/cf/cf/sendmail-slackware-tls-sasl.mc /usr/share/sendmail/cf/cf/sendmail-slackware-tls-sasl.mc.src
sed -i '/FEATURE(`blacklist_reci.*/adnl# -------ADD-START-------nFEATURE(`enhdnsbl''', `relays.ordb.org''', `''', `t''', `127.0.0.2''')dnlnFEATURE(`dnsbl''',`dnsbl.sorbs.net''',`"554 Rejected spam as" $&{client_addr} " found in dnsbl.sorbs.net"''')dnlnFEATURE(`enhdnsbl''', `zen.spamhaus.org''', `"Spam blocked see: http://www.abuse.net/sbl.phtml?IP="$&{client_addr}''', `t''')dnlnFEATURE(`enhdnsbl''', `bl.spamcop.net''', `"Spam blocked see: http://spamcop.net/bl.shtml?"$&{client_addr}''', `t''')dnlndefine(`confCONNECTION_RATE_THROTTLE''', `50''')ndefine(`confMAX_DAEMON_CHILDREN''',`100''')ndnl# define(`confTLS_SRV_OPTIONS''', `V''')ndnl# -------ADD-END---------' /usr/share/sendmail/cf/cf/sendmail-slackware-tls-sasl.mc
cd /usr/share/sendmail/cf/cf
./Build sendmail-slackware-tls-sasl.mc
rm /etc/mail/sendmail.*
mv sendmail-slackware-tls-sasl.cf /etc/mail/sendmail.cf

# 改回 rc.local
mv /etc/rc.d/rc.local.new /etc/rc.d/rc.local

#  /etc/rc.d/*.bak
rm /etc/rc.d/*.bak
mv /etc/rc.d/rc.inet1.conf.new /etc/rc.d/rc.inet1.conf
rm -f /etc/udev/rules.d/70-persistent-net.rules
netconfig
# rc.inet1.conf 為網路的紀錄檔,記錄此機器的IP相關資料,
# 因為剛升級為新的版本,所以必須使用 netconfig 將IP相關資料,
# 寫入新的 rc.inet1.conf 內

# 尋找檔案 /etc/ssh/sshd_config 內容為 #Port 22 ,
# 在此字串的,下一行加入 Port 22 (可自行修改成您需要的埠)
# 改變 SSHd 的連線 Port
sed -i '/#Port 22/aPort 22' /etc/ssh/sshd_config

# remove /etc/ssh/*.bak
rm /etc/ssh/*.bak

# 尋找檔案 /etc/logrotate.d/ttpd內容為 size=5M
# 將此字串,改為 size=1M
sed -i 's/size=5M/size=1M/' /etc/logrotate.d/httpd

# remove /etc/logrotate.d/*.bak
rm /etc/logrotate.d/*.bak

# 還原 named.conf
mv /etc/named.conf.bak /etc/named.conf

# 還原 gshadow
mv /etc/gshadow.bak /etc/gshadow

# 改變 /etc/httpd/httpd.conf 的設定
# 再 httpd.conf 的最後一行設定讀取 my_http.conf這個檔,
# 因為,我將 http.conf 所有修改的部分放在 my_http.conf 內
echo  >>/etc/httpd/httpd.conf
echo '#' my_httpd_set_file>>/etc/httpd/httpd.conf
echo  Include /etc/httpd/my_httpd.conf>>/etc/httpd/httpd.conf

# 移除之前所設定的 php.ini 檔,升級後,還是使用新版的 php.ini
# 從 /etc/httpd/php.ini-recommended 建立新的 php.ini
rm /etc/httpd/php.ini
cp -p /etc/httpd/php.ini-recommended /etc/httpd/php.ini

#改變 /etc/httpd/php.ini 的設值,詳細
sed -i 's/;open_basedir =/open_basedir = /srv/www/htdocs/' /etc/httpd/php.ini
sed -i 's/enable_dl = On/enable_dl = Off/'  /etc/httpd/php.ini
sed -i 's/;upload_tmp_dir =/upload_tmp_dir = /srv/www/htdocs/tmp/' /etc/httpd/php.ini
sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 8M/' /etc/httpd/php.ini
sed -i 's/allow_url_fopen = On/allow_url_fopen = Off/' /etc/httpd/php.ini

# 從 /etc/httpd/mod_php.conf.example 建立 /etc/httpd/mod_php.conf
rm /etc/httpd/mod_php.conf
cp /etc/httpd/mod_php.conf.example /etc/httpd/mod_php.conf

#修改 /etc/httpd/mod_php.conf 的設定
sed -i '/# This will.*/i<FilesMatch ".(php|html|htm)$">n    SetHandler application/x-httpd-phpn</FilesMatch>n' /etc/httpd/mod_php.conf

# 將 /etc 資料夾內的 *.bak 刪除
# 會將/etc/*.bak 的檔案(含所有子目錄下的bat),移動到 /tmp 資料夾內,
# 再一一檢視,是否要刪除
unset all
all=$(find /etc -name *.bak)
mkdir /tmp/bak
mv $all /tmp/bak


# /etc/rc.d/rc.modules 的連結要更換
# 升級的過程中如果有留下之前的模組連接,將之移除,換上新的模組連接
rm /etc/rc.d/rc.modules
rm /etc/rc.d/rc.modules-2.6.29.*
ln -s rc.modules-2.6.33.4-smp rc.modules

#比對 手動比對下列3個檔案。
echo chcnge /etc/passwd /etc/passwd.new
echo chcnge /etc/shadow /etc/shadow.new
echo chcnge /etc/group /etc/group.new

# grant all on 資料庫名稱.* to 管理者帳號@localhost identified by '資料庫密碼';
# 資料庫復原後,建立資料庫的管理者權限

# Openwebmail ,必須將 Text-Iconv-1.7 再安裝一次才可以正常執行
# get http://search.cpan.org/CPAN/authors/id/M/MP/MPIOTR/Text-Iconv-1.7.tar.gz
# tar -zxvf Text-Iconv-1.7.tar.gz
# cd Text-Iconv-1.7
# make
# make test
# make install

無迴響

No comments yet.

RSS feed for comments on this post.

Sorry, the comment form is closed at this time.

Powered by WordPress