เริ่มการอัพเกรด Gentoo ในเครื่องโคโล ตอนที่ 1

Tag :
วันนี้ได้เลิกปุบปับรีโมทเข้าไปแบ็คอัพข้อมูลเว็ปมาเก็บไว้ก่อน จากนั้นก็เิริ่มอัพเกรด โปรแกรมต่างๆในเครื่องซึ่งเริ่มต้นที่ 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/profile Step 3: Fix and Re-build libtool fix_libtool_files.sh 3.4.6 emerge --oneshot -av libtool Step 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