หลังจากติดตั้ง Solaris 11 เสร็จเรียบร้อย หากต้องการติดตั้งโปรแกรมเพิ่มเติม วิธีการหนึ่งที่ทำได้อย่างง่ายคือติดตั้งจาก repo ที่ทาง Oracle ทำไว้เป็นไฟล์ ISO image ให้สามารถดาวน์โหลดได้
การใช้งาน repository image ของ Solaris 11 จะคล้ายๆ การใช้งาน yum บนลีนุกซ์ คือจะเก็บไฟล์แพ็คเกจทั้งหมดที่ใช้ในการติดตั้งไว้ในที่ๆ หนึ่งเรียกว่า repo และใช้คำสั่ง pkg ช่วยจัดการให้การติดตั้ง (install) การปรับปรุงเวอร์ชั่น (update) หรือถอนการติดตั้ง (uninstall) ทำได้ง่าย เช่นจะช่วยติดตั้งโปรแกรมหรือแพ็คเกจที่จำเป็นต้องใช้ (dependency) โดยอัตโนมัติ
ดาวน์โหลดไฟล์ repository image
ในหน้า Oracle Solaris 11 Downloads เลื่อนหน้าลงไปตรงกลางๆ หน้า ภายใต้หัวข้อ “Oracle Solaris 11 11/11 Repository Image” จะมีลิ้งค์ให้กดดาวน์โหลดไฟล์ได้
ไฟล์ repo image จะถูกแยกออกเป็นสองไฟล์ขนาดแต่ละไฟล์ประมาณ 3 GB กว่าๆ ต้องดาวน์โหลดไฟล์ repo image ทั้งสองไฟล์ แล้วนำมารวมกันด้วยคำสั่ง cat
จะมีทั้งโปรแกรมหรือแพ็คเกจที่ติดตั้งบนเวอร์ชั่นที่เป็น SPARC และ x86 (intel) รวมกัน
- Download Part A SPARC, x86 (3.3 GB)
- Download Part B SPARC, x86 (3.1 GB)
ตัวอย่างไฟล์ที่ดาวน์โหลดได้
root@solaris:~# ls -l
total 13566080 -rw-r--r-- 1 root root 3565158400 Jun 17 20:48 sol-11-1111-repo-full.iso-a -rw-r--r-- 1 root root 3375695872 Jun 17 20:55 sol-11-1111-repo-full.iso-b
แล้วนำมาต่อไฟล์กันด้วยคำสั่ง cat
คำแนะนำ เพื่อป้องกันความผิดพลาด แนะนำให้ copy สำรองทั้งสองไฟล์ไปไว้ที่อื่น ก่อนที่จะใช้คำสั่ง cat เพื่อรวมไฟล์
root@solaris:~# cat sol-11-1111-repo-full.iso-a sol-11-1111-repo-full.iso-b > sol-11-1111-repo-full.iso
เปรียบเทียบไฟล์ที่รวมได้ กับไฟล์เดิมทั้งสอง
root@solaris:~# ls -l
-rw-r--r-- 1 root root 6940854272 Jun 13 14:09 sol-11-1111-repo-full.iso
-rw-r--r-- 1 root root 3565158400 Jun 13 12:19 sol-11-1111-repo-full.iso-a
-rw-r--r-- 1 root root 3375695872 Jun 13 13:47 sol-11-1111-repo-full.iso-b
ในหน้าเว็บเพจ Oracle Solaris 11 Downloads จะมีลิ้งค์ “MD5 checksum” ให้ตรวจสอบความถูกต้อง (checksum) ของไฟล์ที่ดาวน์โหลด
ณ ตอนที่เขียนบทความ ลิ้งค์อยู่ที่
http://download.oracle.com/otn/solaris/11/md5sums11.txt
ข้อมูลในไฟล์ checksum
2a9645f7cab1a949c59eddba12833cce sol-11-1111-text-sparc.iso
08e5c406aa5b6452f878bda5c1851612 sol-11-1111-text-x86.iso
b927d8421a91a2f2a664f1512de548a1 sol-11-1111-text-x86.usb
f217330e101ebd54a1f75f40cb777bec sol-11-1111-ai-sparc.iso
a00eba4c728895521b2086fe6ab17508 sol-11-1111-ai-x86.iso
087375924a233f7d40ac7046cfa07b9a sol-11-1111-ai-x86.usb
a4f4fd3e3219db5f358bcdafc5f2b6b2 sol-11-1111-live-x86.iso
4fb726b6421f50a17c00d2b7aa1147da sol-11-1111-live-x86.usb
d122bf965669e24c54a2c45d84569ac8 sol-11-1111-repo-full.iso-a
da680bad1b6451a8119537ceb230b75a sol-11-1111-repo-full.iso-b
55fad2b4d02cca996bfb44512f7d74ae sol-11-1111-repo-full.iso
d1368425be2e5f3ead9ebe9e5e6939e5 OracleSolaris11_11-11_VM.zip
แนะนำให้ตรวจสอบ md5sum ของไฟล์ที่รวมได้ว่าถูกต้องหรือไม่ ก่อนนำไปใช้
root@solaris:~# md5sum sol-11-1111-repo-full.iso
55fad2b4d02cca996bfb44512f7d74ae sol-11-1111-repo-full.iso
เมื่อตรวจสอบดูแล้วว่าไฟล์ที่รวมถูกต้อง เราสามารถลบไฟล์สองไฟล์ (ลองท้ายด้วย .iso-a และ .iso-b) ที่ดาวน์โหลดมาได้เลย
mount ไฟล์ iso
ไฟล์ที่ดาวน์โหลดมาแล้วนำมารวมอยู่ในรูปแบบไฟล์ iso ต้องนำมา mount กับไดเร็คทอรีถึงจะใช้งานได้
บน Solaris 11 ถ้าจะ mount ไฟล์ iso มีอยู่สองขั้นตอนดังนี้
ใช้คำสั่ง lofiadm เพื่อเชื่อมไฟล์ iso เข้ากับพาธ /dev/lofi/ (block device)
root@solaris:~# lofiadm -a sol-11-1111-repo-full.iso /dev/lofi/1
พิมพ์คำสั่ง lofiadm เฉยๆ จะแสดงสถานะการเชื่อมไฟล์ iso
root@solaris:~# lofiadm Block Device File Options /dev/lofi/1 /root/iso/sol-11-1111-repo-full.iso -
ขั้นที่สองใช้คำสั่ง mount เพื่อ mount พาธ /dev/lofi/ กับไดเร็คทอรีที่จะใช้งาน ที่นิยมกันเช่นเดียวกับลีนุกซ์คือ /mnt
root@solaris:~# mount -F hsfs -o ro /dev/lofi/1 /mnt
ตอนนี้เราสามารถเข้าไปดูไฟล์ใน repo image ได้แล้ว
root@solaris:~# df -h /mnt/ Filesystem Size Used Available Capacity Mounted on /dev/lofi/1 6.5G 6.5G 0K 100% /mnt root@solaris:~# ls -l /mnt/ total 38 -rw-r--r-- 1 root root 7319 Oct 21 2011 COPYRIGHT -rw-r--r-- 1 root root 1412 Oct 21 2011 NOTICES -rw-r--r-- 1 root root 7844 Oct 21 2011 README drwxr-xr-x 3 root root 2048 Oct 21 2011 repo root@solaris:~# ls -l /mnt/repo/ total 5 -rw-r--r-- 1 root root 240 Oct 21 2011 pkg5.repository drwxr-xr-x 3 root root 2048 Oct 21 2011 publisher
คอนฟิก repo (publisher)
โดยดีฟอลต์จากการติดตั้ง จะมี repo หรือ publisher สร้างไว้ เพื่อให้ผู้ใช้ติดตั้งโปรแกรมเพิ่มเติมได้
root@solaris:~# pkg publisher PUBLISHER TYPE STATUS URI solaris origin online http://pkg.oracle.com/solaris/release/
แต่เครื่อง solaris ต้องต่ออินเตอร์เน็ตได้เพื่อดาวน์โหลดไฟล์
ตัวอย่างการใช้คำสั่ง pkg ตามด้วยออปชั่น list เพื่อดูชื่อไฟล์แพ็คเกจทั้งหมดที่มีอยู่ใน repo
root@solaris:~# pkg list -a pkg: 0/1 catalogs successfully updated: Unable to contact valid package repository Encountered the following error(s): Unable to contact any configured publishers. This is likely a network configuration problem. Framework error: code: 6 reason: Couldn't resolve host 'pkg.oracle.com' URL: 'http://pkg.oracle.com/solaris/release'. (happened 4 times)
หากเราต้องการเปลี่ยนมาใช้ repo จากไฟล์ image ที่ดาวน์โหลดมาเองแล้วใช้คำสั่ง mount กับไดเร็คทอรี /mnt ตามวิธีการที่กล่าวมา
สามารถทำได้โดยใช้คำสั่ง pkg ตามด้วยออปชั่น set-publisher
root@solaris:~# pkg set-publisher -G '*' -g /mnt/repo solaris
ออปชั่น -G คือลบ publisher ที่มีอยู่เดิมออกทั้งหมด ส่วนออปชั่น -g คือระบุที่อยู่ของ publisher ใหม่ที่ต้องการใช้
ผลของการเปลี่ยน publisher
root@solaris:~# pkg publisher
PUBLISHER TYPE STATUS URI
solaris origin online file:///mnt/repo/
ตัวอย่างการใช้คำสั่ง pkg list -a เพื่อดูแพ็คเกจทั้งหมดที่อยู่ใน repo หรือ publisher
root@solaris:~# pkg list -a NAME (PUBLISHER) VERSION IFO FSWfontconfig-devel-docs 0.5.11-0.130 --o FSWxorg-client-docs 0.5.11-0.130 --r FSWxorg-client-programs 0.5.11-0.130 --r FSWxorg-clientlibs 0.5.11-0.130 --r FSWxorg-data 0.5.11-0.130 --r ...
หมายเหตุ หากไม่ได้ระบุออปชั่น -a ผลลัพธ์จะแสดงเฉพาะแพ็คเกจที่ติดตั้งไว้แล้วเท่านั้น
ทดลองติดตั้ง php จาก repo
ในที่นี้จะทดลองติดตั้ง PHP จาก repo image ที่สร้างไว้
ขั้นแรกใช้คำสั่ง pkg list -a เพื่อหาชื่อแพ็คเกจ php
root@solaris:~# pkg list -a | grep php SUNWphp52-pgsql 5.2.12-0.146 --o SUNWphp524-pgsql 5.2.4-0.150 --o SUNWphp524usr 5.2.4-0.130 --r image/graphviz/graphviz-php 2.28.0-0.175.0.0.0.2.537 --- web/php-52 5.2.17-0.175.0.0.0.2.537 --- web/php-52/documentation 5.2.17-0.175.0.0.0.2.537 --- web/php-52/extension/php-apc 3.0.19-0.175.0.0.0.2.537 --- web/php-52/extension/php-idn 0.2.0-0.175.0.0.0.2.537 --- web/php-52/extension/php-memcache 2.2.5-0.175.0.0.0.2.537 --- web/php-52/extension/php-mysql 5.2.17-0.175.0.0.0.2.537 --- web/php-52/extension/php-pear 5.2.17-0.175.0.0.0.2.537 --- web/php-52/extension/php-pgsql 5.2.12-0.146 --o web/php-52/extension/php-suhosin 0.9.29-0.175.0.0.0.2.537 --- web/php-52/extension/php-tcpwrap 1.1.3-0.175.0.0.0.2.537 --- web/php-52/extension/php-xdebug 2.0.5-0.175.0.0.0.2.537 --- web/server/apache-22/module/apache-php5 5.2.17-0.175.0.0.0.2.537 --- web/server/apache-22/plugin/plugin-php52 5.2.12-0.134 --r
หมายเหตุ หากต้องการค้นหาชื่อโปรแกรมที่ละเอียดกว่านี้ สามารถใช้คำสั่ง pkg search ได้
สมมติว่าต้องการติดตั้ง php-mysql สามารถติดตั้งได้ด้วยคำสั่ง pkg install
เพื่อทำความเข้าใจ แนะนำให้ระบุออปชั่น
-n ซ้อมการติดตั้ง ไม่ได้ติดตั้งจริง
-v เพื่อดูรายละเอียดว่าจะต้องติดตั้งอะไรบ้าง ใช้ขนาดพื้นที่เท่าไร
root@solaris:~# pkg install -n -v php-mysql Packages to install: 5 Estimated space available: 19.93 GB Estimated space to be consumed: 115.56 MB Create boot environment: No Create backup boot environment: No Rebuild boot archive: No Changed packages: solaris database/mysql-51/library None -> 5.1.37,5.11-0.175.0.0.0.2.537:20111019T091844Z system/library/security/libmcrypt None -> 2.5.8,5.11-0.175.0.0.0.2.537:20111019T115811Z text/tidy None -> 1.0.0,5.11-0.175.0.0.0.2.537:20111019T120537Z web/php-52 None -> 5.2.17,5.11-0.175.0.0.0.2.537:20111019T121145Z web/php-52/extension/php-mysql None -> 5.2.17,5.11-0.175.0.0.0.2.537:20111019T120818Z
จากตัวอย่างผลลัพธ์แสดงว่า ต้องใช้พื้นที่ดิสก์ประมาณ 115 MB และต้องติดตั้งแพ็คเกจ
- database/mysql-51/library
- system/library/security/libmcrypt
- text/tidy
- web/php-52
ถึงจะติดตั้ง php-mysql ได้
- web/php-52/extension/php-mysql
หากต้องการติดตั้งจริง ก็เอาออปชั่น -n ออก
ตัวอย่างการติดตั้ง php-mysql
root@solaris:~# pkg install php-mysql Packages to install: 5 Create boot environment: No Create backup boot environment: No DOWNLOAD PKGS FILES XFER (MB) Completed 5/5 458/458 19.8/19.8 PHASE ACTIONS Install Phase 657/657 PHASE ITEMS Package State Update Phase 5/5 Image State Update Phase 2/2
เราสามารถดูรายชื่อไฟล์ในแพ็คเกจที่เราติดตั้งได้ ด้วยออปชั่น contents
root@solaris:~# pkg contents -t file php-mysql PATH etc/php/5.2/conf.d/mysql.ini etc/php/5.2/conf.d/mysqli.ini etc/php/5.2/conf.d/pdo_mysql.ini etc/php/5.2/zts-conf.d/mysql.ini etc/php/5.2/zts-conf.d/mysqli.ini etc/php/5.2/zts-conf.d/pdo_mysql.ini usr/php/5.2/modules/mysql.so usr/php/5.2/modules/mysqli.so usr/php/5.2/modules/pdo_mysql.so usr/php/5.2/zts-modules/mysql.so usr/php/5.2/zts-modules/mysqli.so usr/php/5.2/zts-modules/pdo_mysql.so
หากต้องการดูรายชื่อไฟล์ที่อยู่ในแพ็คเกจใน repo ที่ยังไม่ได้ติดตั้ง ต้องระบุออปชั่น -r ด้วย
เช่นต้องการดูรายชื่อไฟล์ในแพ็คเกจ apache-php5 หากไม่ได้ระบุออปชั่น -r ผลลัพธ์จะแสดงว่าไม่มีแพ็คเกจ
root@solaris:~# pkg contents -t file apache-php5
pkg: contents: no packages matching the following patterns you specified are
installed on the system. Try specifying -r to query remotely:
apache-php5
ตัวอย่างการระบุออปชั่น -r เพื่อดูไฟล์ใน repo
root@solaris:~# pkg contents -t file -r apache-php5 PATH etc/apache2/2.2/conf.d/php5.2.conf usr/apache2/2.2/libexec/mod_php5.2.so
umount ไฟล์ iso
เพื่อความเร็วในการใช้ repo ในไฟล์ /mnt/README จะแนะนำให้ copy ไฟล์ทั้งหมดในพาธที่ mount ไว้ ไปเก็บไว้ในไดเร็คทอรีอื่นๆ (zfs)
เช่นสร้างไดเร็คทอรีเป็น /export/repo แล้ว copy ไฟล์ทั้งหมดใน /mnt/repo ไปใส่
แล้วก็เปลี่ยน publisher เป็น /export/repo
เมื่อย้ายเรียบร้อย เราก็สามารถ umount ไฟล์ iso ได้
หากต้องการ umount ไฟล์ iso ต้องทำสองขั้นตอน
ขั้นแรก umount ไดเร็คทอรีที่ mount ไว้
root@solaris:~# umount /mnt/
ใช้คำสั่ง lofiadm -d เพื่อลบการเชื่อมต่อไฟล์ iso กับพาธ /dev/lofi/
root@solaris:~# lofiadm -d /dev/lofi/1 root@solaris:~# lofiadm Block Device File Options root@solaris:~#
ข้อมูลอ้างอิง