Oracle Solaris 11 ติดตั้งโปรแกรมเพิ่มเติมจาก repo

หลังจากติดตั้ง 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:~#

ข้อมูลอ้างอิง

 

Leave a Reply

Your email address will not be published.