การติดตั้งโปรแกรมใน Linux
ว่าจะเขียน Review GNOME3 vs. Unity
แต่ว่าหลังจากลองใช้ดูแล้วก็ยังไม่ค่อยประทับใจทั้งคู่ เลยพักไว้ก่อนดีกว่า
พอดีว่าอาทิตย์นี้ พี่อู๋ (พี่ที่ทำงาน) มาสอนเรื่องการติดตั้งโปรแกรมใน
Linux ก็เลยเอามาเขียนลง blog ไว้กันลืม
ใน Linux นี่ เราสามารถเอาโปรแกรมมาใช้งานได้ 3 แบบหลักๆ ด้วยกัน
คือติดตั้ง Package สำเร็จรูปจาก Software Center, รันจาก Binary โดยตรง
และสุดท้ายคือการ Compile จาก Source
มาดูกันดีกว่าว่าแต่ละแบบแตกต่างกันยังไง
1. ติดตั้งจาก Package สำเร็จรูป

อันนี้คือรูปแบบส่วนใหญ่ที่นิยมใช้กัน อย่างเช่นใน Ubuntu ก็จะมี Ubuntu
Software Center
ซึ่งพอเรากดเข้าไปก็จะมีรายชื่อโปรแกรมพร้อมคำอธิบายปรากฏมาให้เลือกติดตั้ง
โดยโปรแกรมที่จะติดตั้งนี้ก็จะมีพวกตัว Binary และ Dependencies
มาให้เรียบร้อย
- Binary คือไฟล์โปรแกรมที่ถูก compile เรียบร้อยแล้ว สามารถเรียกใช้งาน (execute) ได้เลย
- Dependencies คือส่วนอื่นๆ เพิ่มเติมที่จำเป็นในการใช้งานโปรแกรม เช่น พวก library ต่างๆ ถ้าไม่มีจะใช้งานโปรแกรมไม่ได้ ถ้าจะให้อธิบายง่ายๆ ก็เหมือนเวลาที่เราลงเกมใน Windows แล้วมันต้องให้ลง Direct X ด้วยน่ะแหละ
การติดตั้งโปรแกรมจาก Package สำเร็จรูป ก็จะมี 2 แบบ
คือดาวน์โหลดจากอินเตอร์เนทและติดตั้งจากไฟล์ Package สำหรับติดตั้ง
ในการดาวน์โหลดจากอินเตอร์เนทก็จะมีสิ่งที่เรียกว่า Software Repository
คือแหล่งรวบรวมไฟล์ Package ของโปรแกรมต่างๆไว้
เวลาเราจะติดตั้งโปรแกรมก็จะไปดาวน์โหลดตัว Package ของโปรแกรมมาจาก
Repository ที่โปรแกรมนั้นถูกเก็บอยู่ ส่วนแบบที่ 2 คือการดาวน์โหลดไฟล์
Package สำหรับติดตั้ง ซึ่งก็จะเป็นเหมือนกันพวกไฟล์ Setup ของ Windows
แหละ โหลดไฟล์มา ดับเบิ้ลคลิก Nextๆๆ เสร็จ ไฟล์พวกนี้ก็จะมีการแบ่งตาม
Distribution ที่ใช้ด้วยนะ เช่นพวกสาย Redhat/Fedora/SUSE จะเป็นไฟล์ .rpm
แต่ถ้าเป็นพวกสาย Debian/Ubuntu จะเป็นไฟล์ .deb ใช้ข้ามสายกันไม่ได้
หรือถ้าจะสั่งติดตั้งจาก Command line ก็จะต้องใช้ตัว Package Manager
มาช่วยในการติดตั้ง เช่น ใน Ubuntu ใช้ apt-get ใน openSUSE ใช้ zypper
ซึ่งวิธีการเรียกใช้คำสั่งก็อาจจะมีความแตกต่างกันอยู่บ้าง
2. Binary สำเร็จรูป
เป็นโปรแกรมที่ถูก compile มาเรียบร้อยแล้ว
พร้อมที่จะถูกเรียกใช้งานได้เลย ตัวอย่างเช่น Mozilla Firefox
แบบที่ดาวน์โหลดมาจากเว็บ
ซึ่งโปรแกรมที่มาในรูปแบบนี้มีข้อดีคือโหลดมาเสร็จก็ใช้ได้เลย
ไม่ต้องเสียเวลา compile ใหม่
แต่ข้อเสียก็มีคือมันอาจจะมีการตั้งค่าบางอย่างที่ไม่ตรงกับระบบของเรา
ทำให้อาจจะมีปัญหาในตอนใช้งานได้

3. Compile จาก Source
โดยส่วนใหญ่ โปรแกรมที่เป็นแบบ opensource จะมีให้ลิงก์ดาวน์โหลด source
code ของโปรแกรมในหน้าดาวน์โหลดเลย ซึ่งก็จะถูกบีบอัดอยู่ในรูปของไฟล์
tarball (.tar.gz, .tar.bz2, …) ก่อนจะใช้ก็ต้องเอามา untar ก่อน ถ้าใช้
GUI ก็คลิกขวาแตกไฟล์ได้เลย แต่ถ้าใช้ command line ก็ต้องใส่ parameter
ตามรูปแบบการบีบอัด
- tar xvzf สำหรับ .tgz หรือ .tar.gz
- tar xvjf สำหรับ .tbz หรือ .tar.bz2
- tar xvf สำหรับ .tar
รูปแบบของ tarball จะเป็นการบีบอัดไฟล์รูปแบบนึง ซึ่งปกติแล้วใน directory นึงจะมีไฟล์หลายๆ ไฟล์อยู่ เราก็เอามา tar เพื่อให้มันเป็นก้อนเดียวกัน หลังจากนั้นก็เอามาบีบอัดเพื่อลดขนาดไฟล์ ซึ่งเทคนิคการบีบอัดก็แล้วแต่ว่าจะใช้แบบไหน เช่น gzip, bzip …
ในตัวอย่างนี้ผมจะลอง compile และติดตั้งโปรแกรม desmume 0.9.7 ซึ่งเป็นโปรแกรม emulator ของเครื่อง Nintendo DS

หลังจากแตกไฟล์เสร็จก็ถึงเวลาของการ compile โปรแกรม
ซึ่งก่อนอื่นก็ต้องลงเครื่องมือสำหรับใช้ในการ compile ก่อน โดยถ้าเราใช้
Ubuntu จะมี package ที่ชื่อว่า build-essential ให้เราติดตั้ง
sudo apt-get install build-esential
โดยส่วนใหญ่แล้วโปรแกรมที่ใช้ใน Linux จะถูกเขียนโดยใช้ภาษา C หรือ C++
ซึ่งตัว build-essential นี้ก็จะรวมพวก C กับ C++ Compiler
มาให้ด้วยอยู่แล้ว การ Compile โปรแกรมจาก Source หลังจากแตกไฟล์เสร็จ
เราจะเจอไฟล์หลักๆ ที่อยู่ใน directory ของโปรแกรม คือ README กับ INSTALL

ไฟล์ README ควรที่จะเปิดอ่านทุกครั้ง ก่อนที่จะเริ่มทำอะไร
เพราะในไฟล์นี้จะอธิบายรายละเอียดต่างๆ ของโปรแกรม, library ที่ต้องมี,
หรือขั้นตอนวิธีการ compile จากนั้นก็มาดูที่ไฟล์ INSTALL
ซึ่งจะบอกขั้นตอนวิธีการใช้คำสั่งต่างๆ เพื่อ compile และติดตั้งโปรแกรม
หลังจากที่อ่านไฟล์ทั้ง 2 แล้ว ก็มาเริ่ม compile กันได้เลย
เปิด Terminal ขึ้นมา เข้าไปที่ path ที่เก็บไฟล์ source ไว้
แนะนำให้ใช้คำสั่ง sudo -i เพื่อเปลี่ยนเป็น root ก่อนจะดีกว่า
เพราะอาจจะมีบางโปรแกรมที่ต้องใช้สิทธิ์ของ root ในการ compile และติดตั้ง
จากนั้นพิมพ์คำสั่ง
./configure

คำสั่งนี้จะเป็นการปรับแต่งค่าต่างๆ สำหรับเตรียมการ compile โปรแกรม
โดยจะเช็คการตั้งค่าต่างๆ ในเครื่องเรา ว่ามี library ที่ต้องการครบมั้ย
ถ้ามีมันถูกเก็บอยู่ที่ไหน หรือถ้าไม่มีก็จะแสดงรายชื่อ library
ที่ต้องการออกมา เพื่อให้เราติดตั้ง library
ดังกล่าวให้เสร็จก่อนที่จะไปขั้นตอนถัดไป
ในขั้นตอนของการสั่ง configure นี้ เราสามารถที่จะใส่ parameter
เพื่อกำหนดการตั้งค่าเพิ่มเติมนอกเหนือจากค่าเริ่มต้นที่โปรแกรมกำหนดมาได้
เช่น เปลี่ยน path การติดตั้งของโปรแกรมให้ไปลงในที่ๆ เรากำหนด หรือไป link
กับ library ที่เราเก็บไว้ในที่อื่นที่ต่างจากค่าเริ่มต้นของโปรแกรม
ถ้าสั่ง configure เสร็จแล้วพบว่าไม่มีปัญหาอะไร คำสั่งต่อไปที่ต้องทำคือ
make

เป็นการ compile โปรแกรมเพื่อสร้างไฟล์ binary ขึ้นมา ซึ่งถ้าสั่ง make
เสร็จแล้วไม่มีปัญหาอะไร เราก็จะได้ไฟล์ binary ของโปรแกรมอยู่ใน directory
เดียวกับ source ดังนั้นเราเลยต้องสั่งให้โปรแกรมไปอยู่ในที่ๆ
ควรจะอยู่โดยใช้คำสั่ง
make install

เพื่อเอาไฟล์ binary ของโปรแกรมไปไว้ในระบบ เพื่อให้สามารถเรียกใช้งานได้เหมือนโปรแกรมอื่นๆ
เสร็จแล้วก็ลองสั่งรันโปรแกรมดูว่าได้ผลมั้ย ถ้าได้ก็ยินดีด้วย คุณทำสำเร็จแล้ว

