โปรแกรมต่างๆในเครื่องซึ่งเริ่มต้นที่ GCC ก่อนเลย เพราะตัวนี้ตัวสำคัญ
และเป็นตัวที่หลังจากอัพเกรดเสร็จแล้วจำเป็นต้องคอมไพล์โปรแกรมต่างๆในเครื่อง
ใหม่แทบทั้งหมด - -"
๊
Step 1: Upgrade GCC
emerge -uav gccในการสั่ง emerge เพื่ออัพเดท gcc นี้เครื่องผมจะมี package ที่เกี่ยวข้อง 8 ตัวที่
ถูกดึงมาคอมไพล์ และหลังจากรอมันคอมไพล์มาจนถึง package สุดท้่ายซึ่งก็คือ
glibc ก็มี error ออกมาบอกว่าให้เราใส่ USE='nptl nptlonly' ด้วย ผมจึงต้อง
สั่ง emerge glibc ใหม่อีกครัง
USE='nptl nptlonly' emerge glibcหลังจากคอมไพล์ glib อยู่นานก็เสร็จ ผมก็ทำการเซ็ตให้ระบบเปลี่ยนไปใช้ gcc 4.1.1
แล้วก็ทำการ fix แก้ไข library ต่างที่ใช้ gcc 3.4.6 และ rebuild libtool ใหม่
Step 2: Change GCC Compiler to 4.1.1
gcc-config i686-pc-linux-gnu-4.1.1
env-update && source /etc/profileStep 3: Fix and Re-build libtool
fix_libtool_files.sh 3.4.6
emerge --oneshot -av libtoolStep 4: Rebuild System
จากนั้นผมก็ทำการสั่งให้ทำการ compile system package ใหม่ด้วยคำสั่ง
emerge -eav systemในขั้นนี้ผมมี package ที่ต้องคอมไพล์ถึง 97 pacakge คงต้องใช้เวลาหลายชั่วโมง
หลังจากที่รอเครื่องคอมไพล์ system เสร็จซึ่งกว่าจะเสร็จก็มี error ในระหว่าง
คอมไพล์ เนื่องจากการ emerge -eav system นี่มีการคอมไพล์บาง package ซ้ำ
กับในขั้นตอนที่ 1 ซึ่ง package ที่มีปัญหาคือ glibc เพราะผมดันไม่ได้ใส่ USE flags
ใน /etc/make.conf ผมเลยต้องใส่
nptl nptlonly เข้าไปใน make.conf แล้วจึงสั่งemerge --resumeเครื่องก็จะทำการ emarge ต่อจากตรง package ที่ error ซึ่งถ้าไม่ใช้คำสั่งนี้แต่ไป
สั่ง emerge -eav system ใหม่มันก็จะทำการเริ่มคอมไพล์ใหม่ตั้งแต่แรก
Step 5: Rebuild World
ในขั้นนี้ก็สามารถสั่ง
emerge -eav worldแล้วก็นั่งรอเลยก็ได้ แต่ผมเลือกคอมไพล์ mySQL ก่อนโดยทำตามขั้นตอนในเว็ปนี้
Upgrade Guide MySql to 4.0 or 5.0 แต่ผมอาจรวบยอดข้ามบางขั้นตอนไป
สรุปเมื่อคืนหลังจาก upgrade MySql เสร็จลอง restart service ดูปรากฏว่า
ใช้งานได้ไม่มีปัญหาเว็ปสามารถเปิดใช้งานได้ ก็เลยสั่ง Rebuild World ต่อ ซึ่ง
มี Package ที่ต้องคอมไฟล์รวมแล้ว เกือบ 500 Package -*- ผมก็นั่งเฝ้าจนเช้า
จึงไปนอน ตื่นมาบ่ายมาก็เปิดคอมรีโมทเข้าไปดูปรากฏว่ามี Error ขณะที่ยังเหลือ
Package ทีต้องคอมไพล์อีกเกือบ 200 Package เซ็งเลย Package ที่ Error
ก็คือ PEAR-Auth_SASL ซึ่งเป็น
!!! ERROR: dev-php/PEAR-Auth_SASL-1.0.1-r1 failed.
Call stack:
ebuild.sh, line 1546: Called dyn_install
ebuild.sh, line 1020: Called src_install
ebuild.sh, line 1255: Called php-pear-r1_src_install
php-pear-r1.eclass, line 66: Called die
!!! Unable to install PEAR packageผมก็นั่ง Search ใน Gentoo Forums ดูก็มีคนเจอ Error แบบเดียวกันหลายคน
แต่เขาจะเจอ Error นี้กับ Pear module อื่นๆ ซึ่งก็มีคนบอกวิธีแก้มา แต่บางคน
ก็ใช้ไม่ได้ ซึ่งผมเองก็ด้วย T_T หลังจากพยายามหาวิธีแก้ต่างๆนาอยู่หลายชั่วโมง
ผมก็ต้องยอมแพ้ ต้องสั่งให้มัน emerge ข้าม Package ที่ Error ไปก่อน โดยใช้
คำสั่งตามด้านล่าง
emerge --resume --skipfirstซึ่งเครื่องจะ emerge ต่อจากเดิมแต่จะทำการข้าม Package แรกไป ซึ่งถ้าเราไม่ใช้
--skipfirst เครื่องก็จะ emerge ต่อแต่ก็จะเจอ error และหลุดออกมาเหมือนเดิม
ตอนนี้ผมก็ได้แต่รอมันคอมไพล์ที่เหลือให้หมดก่อน แล้วจะ compile kernel ใหม่
จากนั้นก็ Restart เครื่องโดยหวังว่าเมือ restart เครื่องแล้วเมื่อกลับมาคอมไพล์
package ที่ error มันจะสามารถคอมไพล์ผ่าน
*โคโล = Colocated Server
ติดตามต่อ >> ตอนที่ 2
No comments:
Post a Comment