วันเสาร์ที่ 11 มกราคม พ.ศ. 2557

Ports พระเอก ของ FreeBSD

Ports พระเอก ของ FreeBSD
ตั้งแต่ใช้ FreeBSD มา ผมก็ติดตั้งโปรแกรม ผ่าน ports มาโดยตลอด ความประทับใจครั้งแรก ก็คือ การติดตั้งโปรแกรม gimp ครับ หลังจากที่เข้าไปใน ports ของ gimp ที่ /usr/ports/graphics/gimp ตามเอกสารเขาก็แนะนำให้สั่ง make install clean
เท่านั้นเอง ผมก็ตะลึง...
เพราะเพียงชั่วครู่ ระบบการติดตั้งของ FreeBSD เขาก็แสดงข้อความต่างๆ ออกมา ให้พอเดาได้ว่า เขากำลังไป download ตัว source code จาก internet แล้วก็ดำเนินการ compile ให้ทันที
ทีนี้ก็นั่งดูกันเพลินเลยครับ เพราะอยากจะรู้ว่า เขาจะทำอะไรให้เราบ้าง ก็รอกันอยู่นานพอสมควรครับ แล้ว ระบบการติดตั้งก็แจ้งกลับมาว่า ติดตั้งเรียบร้อย ตอนนั้นก็ตื่นเต้นครับ จำได้ว่า reboot เครื่องใหม่ เพราะยังไม่รู้จัก rehash พอเปิดเครื่องมา ก็เปิด terminal แล้วสั่ง gimp
เท่านั้นเองครับ โปรแกรม gimp ที่ใฝ่ฝันก็ปรากฎอยู่ตรงหน้า สวยงามสมความตั้งใจ
แล้วก็มารู้อีกที เมื่อเห็นว่ามีเมนูเพิ่มมาให้เรียบร้อยแล้ว อยู่ใน เมนู /Applications/Graphics/The Gimp ของ gnome
Packages พระรอง
มีอยู่เพียงบางครั้ง ที่ผมเคยใช้ Packages ในการติดตั้ง จำได้ว่าตอนนั้นต้องการใช้งาน openoffice แต่มีปัญหากับการติดตั้ง java หรืออะไรสักอย่าง ก็ทำให้ติดตั้งจาก ports ไม่สำเร็จ เพราะ ใน ports ของ openoffice เขาต้องให้ติดตั้ง java เสียก่อน (ตอนนั้นก็ยังไม่รู้ว่า เราสามารถกำหนดให้ ไม่เอา java ก็ได้) เลยหาทางออก โดยทดลองติตตั้ง ด้วย Packages แทน ก็ไปเสาะหา ไฟล์ packages ของ openoffice จนได้มา 1 ไฟล์ ทำการทดลองติดตั้ง
ด้วยคำสั่ง pkg_add openoffice.xxxxxx ทำนองนี้ ก็ใช้เวลาอยู่พักใหญ่ครับ
ก็เพียงคำสั่งเดียว กับ ไฟล์เพียงไฟล์เดียว ผมก็ได้ โปรแกรม openoffice มาใช้งานทันที
เริ่มต้น...เราจะเอา ports มาได้จากที่ไหน
ในการติดตั้ง FreeBSD เราจะถูกถามว่าจะติดตั้ง Ports Collection ด้วยหรือไม่ ถ้าเราตอบ Yes เราก็จะมี ports collection อยู่ที่ /usr/ports เป็นที่เรียบร้อย
แต่ในกรณีที่เราไม่ได้ติดตั้ง Ports Collection มาก่อน ให้ทำตามขึ้นตอน ต่อไปนี้ครับ
1. su เปลี่ยนเป็น root
2. สั่ง # /stand/sysinstall
3. เลื่อก Configure กด Enter
4. เลือก Distributions กด Enter
5. เลือก ports กด Space bar
6. เลือก Exit กด Enter
7. เลือก CDROM , FTP, หรือ อื่นๆ ตามต้องการ (ปกติ เลือก CDROM ครับ)
8. เลือก Exit กด Enter
=== รอครู่ใหญ่ ===
9. เลือก X กด Enter เพื่อออกจากโปรแกรม /stand/sysinstall
ภายใน Ports ภายใต้ /usr/ports จะแบ่ง Applications ไว้อย่างเป็นระเบียบ
.cvsignore
astro
finance
mbone
textproc
CHANGES
audio
french
misc
ukrainian
INDEX-5
benchmarks
ftp
multimedia
vietnamese
INDEX.db
biology
games
net
www
LEGAL
cad
german
net-mgmt
x11
MOVED
chinese
graphics
news
x11-clocks
Makefile
comms
hebrew
palm
x11-fm
Mk
converters
hungarian
polish
x11-fonts
README
databases
irc
portuguese
x11-servers
Templates
deskutils
japanese
print
x11-themes
Tools
devel
java
russian
x11-toolkits
UPDATING
distfiles
korean
science
x11-wm
accessibility
dns
lang
security
arabic
editors
mail
shells
archivers
emulators
math
sysutils
ส่วนประกอบของ Ports
ภายใน port ของแต่ละ Application ประกอบไปด้วย
1. ไฟล์ Makefile เป็นไฟล์ ที่จะบอกถึงรายละเอียดการ compile โปรแกรม และ directory ที่ที่จะติดตั้งโปรแกรม
2. ไฟล์ distinfo เป็นไฟล์ที่ แสดง checksums ที่ใช้ตรวจสอบไฟล์ ที่ download มาเพื่อการติดตั้ง
3. files directory เป็น directory ที่ใช้เก็บ patches files
4. ไฟล์ pkg-descr เก็บรายละเอียดคำอธิบาย โปรแกรม
5. ไฟล์ pkg-plist เก็บรายชื่อไฟล์ ที่จะติดตั้ง และ เป็นรายชื่อไฟล์ที่ต้องลบออก หลังการ ยกเลิกการติดตั้งโปรแกรม
6. ในบาง ports อาจจะมีไฟล์อื่นๆ เช่น pkg-message เพื่อให้รายละเอียดบางอย่างหลังเสร็จสิ้นการติดตั้ง
การ ตรวจสอบ Ports ก่อนการติดตั้ง (พี่มะขามแนะนำมา)
ในกรณีที่เราต้องการ ตรวจสอบด้วยตัวเอง ว่า Ports ที่เราจะติตดั้ง เขาจะติดตั้งอะไรที่เกี่ยวข้องบ้าง ก็สามารถใช้คำสั่งนี้ตรวจสอบได้ครับ
cd เข้าไปใน ports ที่ต้องการ เช่น
# cd /usr/ports/www/apache2
# make build-depends-list
/usr/ports/converters/libiconv
/usr/ports/devel/autoconf259
/usr/ports/devel/libtool15
/usr/ports/lang/perl5.8
/usr/ports/textproc/expat2
ทั้งนี้ ทั้งนั้น FreeBSD เขาจะตรวจสอบและติดตั้ง โปรแกรมที่เกี่ยวข้องให้เรา อย่างอัติโนมัติอยู่แล้วครับ
เริ่มการติดตั้งโปรแกรมด้วย Ports
เมื่อเราเลือกโปรแกรมที่จะติดตั้งได้แล้ว
su เพื่อเปลี่ยนเป็น root
# cd /usr/ports/www/apache2
make install clean
#
นอกจากนั้น ก็เพียงนั่งรอ และคอยติดตามตอบคำถามบางอย่าง หรือ แก้ไขปัญหาบางอย่าง เท่านั้น ถ้าไม่ติดขัดอะไร การติดตั้งโปรแกรมทั่วๆไป ก็สั่งเพียงเท่านี้ครับ
source code ของโปรแกรมที่เราติดตั้งด้วย ports จะถูกเก็บไว้ที่ /usr/ports/distfiles ครับ เราสามารถ นำไฟล์นี้ไปใช้กับเครื่องอื่นๆได้ ถ้าต้องติดตั้ง โปรแกรมเดียวกัน โดย copy ไปเก็บไว้ใน /usr/ports/distfiles ของเครื่องนั้นๆ แล้วสั่งติดตั้งจาก ports ตามปกติ จะทำให้การติดตั้งเร็วขึ้น เพราะไม่ต้องไป download source code มาอีก
การยกเลิกโปรแกรมที่ติดตั้งด้วย Ports
su เพื่อเปลี่ยนเป็น root
# cd /usr/ports/www/apache2
make deinstall clean
#
การยกเลิกมักจะใช้เวลาในการทำงานเร็วกว่าการติดตั้งมาก
ด้วยระบบการติดตั้งโปรแกรมด้วย Ports นี้ เราจะติดตั้งและยกเลิก ซะกี่ครั้งก็ทำได้ดังใจปราถนาครับ ระบบจะทำซ้ำให้อย่างเป็นระบบ ดังนั้นจึงปลอดภัย เหมาะสำหรับมือใหม่ใช้ ทดลองติดตั้งโปรแกรม และเหมาะสำหรับ มือเก่า ใช้ในการเรียนรู้ การติดตั้งที่หลากหลาย
การค้นหาโปรแกรม จาก Ports
ในกรณีที่เรารู้ชื่อ Application หรือ ชื่อโปรแกรม ก็สามารถค้นหาได้ด้วยวิธีง่ายๆ whereis ครับ
# whereis apache2
apache2: /usr/ports/www/apache2
ด้วยคำสั่งนี้เราก็รู้ได้ทันทีว่า apache2 พร้อมติดตั้งได้จาก ports อยู่ใน directory /usr/ports/www/apache2 ครับ
FreeBSD ยังมีคำสั่งสำหรับค้นหาโปรแกรมที่ต้องการ ที่ทำขึ้นมาใช้กับระบบ ports โดยเฉพาะครับ
เริ่มจากเข้าไปอยู่ใน directory ports เสียก่อนครับ
# cd /usr/ports
สั่ง ค้นหาโปรแกรมที่ต้องการ เช่น gimp
make search name=gimp | less
เราก็จะได้ข้อมูลมากมาย 
Port: gimp-1.2.5_1,1
Path: /usr/ports/graphics/gimp1
Info: The GNU Image Manipulation Program
Maint: gnome@FreeBSD.org
B-deps: aalib-1.4.r5_1 expat-1.95.8_3 fontconfig-2.2.3,1 freetype2-2.1.10_1 gettext-0.14.5 gimp-print-4.2.7_1 glib-1.2.10_11 gmake-3.80_2 gtk-1.2.10_13 jpeg-6b_3 libiconv-1.9.2_1 libijs-0.35 libtool-1.3.5_2 perl-5.8.7 pkgconfig-0.17.2 png-1.2.8_2 tiff-3.7.3 xorg-libraries-6.8.2
R-deps: aalib-1.4.r5_1 expat-1.95.8_3 fontconfig-2.2.3,1 freetype2-2.1.10_1 gettext-0.14.5 gimp-print-4.2.7_1 glib-1.2.10_11 gtk-1.2.10_13 jpeg-6b_3 libiconv-1.9.2_1 libijs-0.35 perl-5.8.7 pkgconfig-0.17.2 png-1.2.8_2 tiff-3.7.3 xorg-libraries-6.8.2
WWW: http://www.gimp.org/
Port: gimp-print-4.2.7_1
Path: /usr/ports/print/gimp-print
Info: GIMP Print Printer Driver
Maint: ports@FreeBSD.org
B-deps: gettext-0.14.5 gmake-3.80_2 libiconv-1.9.2_1 libijs-0.35 libtool-1.5.18 pkgconfig-0.17.2
R-deps: gettext-0.14.5 libiconv-1.9.2_1 libijs-0.35 pkgconfig-0.17.2
WWW: http://gimp-print.sourceforge.net/
การ update Ports
FreeBSD มีทีมงานสำหรับการทำงานกับ Ports โดยเฉพาะครับ และทีมนี้ก็ทำงานกันตลอดเวลา จึงมีการปรับปรุง และ upgrade โปรแกรมใน Ports อยู่เสมอ สำหรับผู้ที่ต้องการ Applications version ใหม่สด เสมอๆ ก็ต้องทำการ update ports ครับ
วิธีที่ผมชอบใช้มาก ก็สั่งเพียง 3 คำสั่ง ดังนี้ครับ
# cvsup /usr/share/examples/cvsup/ports-supfile -h cvsup.freebsd.org
# cd /usr/ports
#
 make fetchindex
เพียงเท่านี้ ผมก็จะได้ ports ชุด update ล่าสุดไว้ใช้งานแล้วครับ และมีความจำเป็นนะครับ ที่ต้องไปอ่าน ไฟล์ UPDATING ใน /usr/ports ทุกครั้งที่ update ports
การตรวจสอบโปรแกรม ที่ติดตั้งไปแล้ว ว่า update หรือไม่
ให้ใช้คำสั่ง pkg_version -v
.....
teTeX-3.0
= up-to-date with port
teTeX-base-3.0_4
< needs updating (port has 3.0_5)
teTeX-texmf-3.0_3
= up-to-date with port
tex-texmflocal-1.9
= up-to-date with port
texi2html-1.76_1,1
= up-to-date with port
thumbnail_index-1998.08.10_2
= up-to-date with port
thunderbird-1.0.7_1
< needs updating (port has 1.0.7_5)
tiff-3.7.4
= up-to-date with port
totem-gstreamer-1.2.0_1
< needs updating (port has 1.2.0_2)
transcode-1.0.1
< needs updating (port has 1.0.1_1)
transfig-3.2.4_1
= up-to-date with port
twolame-0.3.3
= up-to-date with port
unzip-5.52_2
= up-to-date with port
urwfonts-1.0
= up-to-date with port
vcdimager-0.7.23
= up-to-date with port
vino-2.12.0_1
= up-to-date with port
vlc-0.8.2_5
< needs updating (port has 0.8.4)
vte-0.11.15_2
= up-to-date with port
vtiger-4.2p2
= up-to-date with port
.....
จากตัวอย่าง จะเห็นว่า โปรแกรม thunderbird , totem-gstreamer และ vlc สามารถ update ใหม่ ได้หากต้องการ เพราะมี version ใหม่กว่า ที่ได้จากการ update ports


ไม่มีความคิดเห็น:

แสดงความคิดเห็น