ผมพยายามหา package manager เจ๋งๆ มาใช้งานทั้งตัว package และตัวโปรแกรมที่ทำหน้าที่ sync และ update package บนเครื่อง server และเครื่อง desktop ได้ซึ่งตอนนี้ผมจับ 4 distro หลักคือ openSolaris, Debian, Ubuntu และ Fedora เอาเป็นว่ายุบรวมเหลือเพียง 2 package manager ละกันครับ ซึ่งลักษณะการ fetch package คล้ายคลึงกันคือ การสร้าง database repo (meta data ของ package ที่มีอยู่ใน repo server ที่เราเลือกเอาไว้) อยู่ในเครื่องเรา กับไม่ได้สร้าง database repo ในเครื่องเรา วิธีการสังเกตง่ายๆ คือ การค้นหาหรือติดตั้งโปรแกรมที่เคยติดตั้งไปแล้ว (กรณีที่เก็บ package เป็น archive ไว้) package manager จะติดตั้งหรือค้าหาได้ทันที ไม่จำเป็นต้องเชื่อมต่อ internet เพื่อเข้าไป fetch ของ database repository อีกรอบหนึ่ง

ซึ่ง aptitude เป็น package manager ที่ชอบเก็บ database repo ข้อดีก้อคือกรณีเกิดการ broken database บน repo server เราสามารถใช้ repo database ในเครื่องเราสืบค้นข้อมูล package ได้ ซึ่งแตกต่างจาก yum ซึ่งพบใน fedora และ delivered distro ของ fedora เจ้าโปรแกรม yum เป็นส่วนเสริมในการจัดการ package rpm ซึ่ง yum ไม่เก็บข้อมูล repo database ในเครื่องเรา เวลาติดตั้งหรือค้นหา package ต้อง fetch หาจาก repo server ซึ่งค่อนข้างจะมีน้อยและกระจัดกระจาย ด้วยการจัดการ repo database แบบนี้ทำให้ yum ก้อมีข้อดีอย่างหนึ่งคือเราจะได้ข้อมูล package ที่สดใหม่อยู่ตลอดเวลา และรู้ว่าอะไรควรจะอัพเดทหรือไม่อัพเดท แต่ข้อเสียคือมันต้องใช้ internet คลอดเวลาค้นหา package ที่เราจำชื่อไม่ค่อยจะได้ อันนี้ผมเป็นบ่อยเพราะผมชอบค้นใน repo มากกว่าการนั่งเดาชื่อ package หรือชื่อโปรแกรมที่ผมจะติดตั้ง ซึ่งกรณีเกิด broken repo database บน repo server ก้อเตรียมทำใจได้เลยครับ เพราะจะ fetch อะไรไม่ได้และก้อต้องจำใจใช้ โปรแกรมเก่าๆ ต่อไป

เอาล่ะแล้วจะมี package manager ที่ผมชอบบ้างมั๊ย เท่าที่ลองเล่น หลายๆ distro รวมถึง opemSolaris ด้วยแล้วก้อมีจุดดีจุดเด่นแตกต่างกัน ด้วยลักษณะการจัดการ repo server และข้อมูล meta data ที่เก็บด้วย แต่ผมมีโครงสร้าง meta data ที่น่าสนใจอยุ่ตัวหนึ่งลองมาดูกันมั๊ยครับ

<dict>
    <key>bundleIdentifier</key>
    <string>com.nullriver.iphone.Launcher</string>
    <key>name</key>
    <string>Launcher</string>
    <key>version</key>
    <string>0.2</string>
    <key>location</key>
    <string>http://iphone.nullriver.com/zips/Launcher-0.2.zip</string>
    <key>size</key>
    <string>14581</string>
    <key>description</key>
    <string>A simple third party application launcher.</string>
    <key>scripts</key>
    <dict>
        <key>preflight</key>
        <array>
            <array>
                <string>If</string>
                <array>
                    <array>
                        <string>InstalledPackage</string>
                        <string>com.kroo.mobilelauncher</string>
                    </array>
                </array>
                <array>
                    <array>
                        <string>AbortOperation</string>
                        <string>Please uninstall MobileLauncher first.</string>
                    </array>
                </array>
            </array>
        </array>
        <key>install</key>
        <array>
            <array>
                <string>CopyPath</string>
                <string>Launcher.app</string>
                <string>/Applications/Launcher.app</string>
            </array>
            <array>
                <string>CopyPath</string>
                <string>DisplayOrder.plist</string>
                <string>/System/Library/CoreServices/SpringBoard.app/DisplayOrder.plist</string>
            </array>
        </array>
        <key>uninstall</key>
        <array>
            <array>
                <string>RemovePath</string>
                <string>/Applications/Launcher.app</string>
            </array>
        </array>
    </dict>
</dict>

ข้างบนเป็นกรณีศึกษาของผมคือ plist ของ Nullriver Installer บน iPhone นะครับ เจ้า Nullriver Installer นี้ฮิตมากเพราะทำงานคล้ายๆ กับ synaptic คือติดโปรแกรมผ่านทาง internet ได้อ้อถ้ามีเครื่องใน office ก้อติดผ่าน wifi ได้ครับ เจ๋งมั๊ย และที่สำคัญไฟล์ package ที่เอามาติดตั้งไม่จำเป็นต้องอยู่ที่เครื่อง repository ก้อได้ (ตัวหนา) คือเครื่อง repo server ที่อยู่ใน office เป็นเพียง meta data (repo database) เท่านั้น จะติดตั้งก้อวิ่งไป download package เพื่อเอามาติดตั้งอีกที แต่ Nullriver Installer ไม่ได้ทำงานแค่นี้มันยังสามารถเก็บ repo database ในเครื่อง iPhone ด้วย นั่นหมายความว่าคุณสามารถ browse repo ได้โดยไม่ต้องเชื่อมต่อ internet อันนี้สิครับเจ๋งจริง แต่ด้วยความที่โครงสร้างของตัว repo server และ package list (plist) สามารถสร้างและแก้ไขได้ง่าย ทำให้เกิดธุรกิจทำ repo ของ iPhone โดยใช้โครงสร้าง repo ของ Nullriver เยอะมาก ปัญหาที่ตามมาคือ package ซ้ำซ้อนกันไงครับ เอาล่ะปัญหานี้กำลังถูกแก้ไขโดยโครงการ AppTapp ของ Nullriver นั่นแหละครับ ซึ่งอาจแฝงการตลาดเข้าไปด้วยก้อได้อันนี้ผมไม่ทราบนะครับ :) ว่าจะมีหรือเปล่า แต่ที่แน่นอนคือ Nullriver Installer หรือ AppTpp ในอนาคตเป็นที่น่าจับตามองครับ สำหรับ package manager บน android ผมยังไม่ได้ดูเลยครับว่าเป็นยังไง ใครพอจะทราบก้อบอกเล่าแลกเปลี่ยนความรู้กันได้ครับ :)

 

จดหมายจาก ทีมงาน Nullriver เปิดผนึกถึง iPhone 3rd party software community ประกาศแนวทางการพัฒนา AppTapp อย่างเป็นทางการซึ่งการใช้งาน AppTapp บน iPhone มีผู้ใช้มากตามกระแสเพราะเป็นโปรแกรม Package Manager บน iPhone ที่ใช้งานได้ง่าย (คล้ายกับ Synaptic) ซึ่ง Nullriver Software เป็นผู้พัฒนา PXL Package System ที่สามารถทำงานร่วมกันกับ Repository อื่นๆ ที่ใช้ PXL Package ได้ ทำให้การติดตั้งและอัพเดทโปรแกรมต่างๆ บน iPhone ทำได้ง่ายขึ้น Nullriver Software ตัดสินใจพัฒนาโปรแกรม App Tapp ให้มีคุณสมบัติมากยิ่งขึ้นมี feature มากขึ้นเพื่อรองรับการใช้งานของผู้ใช้ที่เพิ่มมากขึ้นด้วย แกนของ AppTapp Installer จะเปิดเป็นโอเพนซอร์ส (อาจเป็น Framework หรือ Library) ซึ่งหมายความว่าผู้ผลิตซอฟต์แวร์ หรือผู้ให้บริการ repository รายอื่นสามารถเรียกใช้งานผ่าน AppTapp Library ได้เลย แทนที่จะเป็นระบบจัดการแพคเกจของตัวเองหรือ metadata repository ของตัวเอง และที่สำคัญ iPhone จะแพร่หลายมากขึ้น ซึ่งการเปลี่ยนแปลงครั้งนี้จะแก้ปัญหาเรื่อง package integrity ได้เป็นอย่างดี AppTapp Installer ตัวใหม่จะติดตั้งแทนตัวเดิมสำหรับเอกสาร รูปแบบ การเชื่อมโยงกันของ repositories ทาง AppTapp จะแจ้งในรายละเอียดเมื่อ AppTapp Installer พัฒนาเสร็จเรียบร้อยแล้ว

ใครไม่รู้จัก AppTapp ดูหน้าตาโปรแกรมข้างล่างได้ครับ

ผมได้ลองใช้และลองแกะไฟล์ meta data ดูแล้วเป็นการทำตัว package manager บน iPhone ที่กินขาดมากครับหากคุณเคยทำ debian repository หรือ yum repository มีความคล้ายคลึงกันมากแต่จุดต่างอยู่ที่ไฟล์ที่ติดตั้งหรือไฟล์โปรแกรมไม่จำเป็นต้องอยู่ที่ repository เดียวกันนั่นเป็นจุดต่างที่ Nullriver Software ใส่ลงในไป meta data ของ repository ซึ่งเป็นเรื่องที่น่าประทับใจมากครับ นอกจาก iPhone จะดูหรูหราแฝงการตลาดสุดขั้วแล้วยังมี ISV ใจดี พัฒนาซอฟต์แวร์บน iPhone แล้วเปิดเป็นโอเพนซอร์ส ถึงเครื่องจะราคาเครื่องจะสูงไปหน่อย แต่มีโปรแกรมดีๆ ให้ใช้ แถมมีโปรแกรม package manager ดีๆ อย่าง App Tapp iPhone ก้อได้เปรียบ Mobile Internet Device อื่นๆ แล้วล่ะครับ

ที่มา
1. AppTapp
2. Nullriver Installer

Windows เจอปัญหาใหญ่นอกจากการอัพเดท patch ของ Windows เองแต่กับโปรแกรมที่ติดตั้งบน Windows ก้อเป็นด้วยซึ่งข่าวจาก InternetNews กล่าวถึงรูโหว่ของโปรแกรมที่ใช้กันบ่อยๆ แต่ทำไมยังเกิดปัญหาเหล่านี้อยู่ยนระบบปฏิบัติการ Windows การจัดอันดับโปรแกรมยอดฮิตแต่มีรูโหว่ได้ 12 ตัว ซึ่งมี Mozilla Firefox, Adobe Flash & Acrobat, EMC VMware player, workstation และอื่นๆ ที่น่าแปลกใจคือ Harry Sverdlove, Bit9 CTO บอกกับทีมงาน Internetnews.com ว่าความผิดพลาดที่แท้จริงไม่ได้อยู่ที่ผลิตภัณฑ์เพราะว่าผู้ผลิตซอฟต์แวร์ส่วนใหญ่ patch และแก้ไขรูโหว่นั้นอยู่แล้วแต่ผู้ใช้มักไม่ได้ติดตั้ง patch เหล่านั้นเอง กลับกลายเป็นประเด็นให้กับ Sean Michael Kerner ผู้สื่อข่าวของ internetnews.com ได้บอกด้วยคำง่ายๆ ว่า "บทเรียนสำหรับไมโครซอฟต์ที่ต้องเรียนรู้จากโอเพนซอร์ส" Microsoft ควรมีโปรแกรมบริหารจัดการโปรแกรมเหมือนๆ กับ Linux ข้อดีสำหรับผู้ใช้ทั่วๆ ไปที่ไม่ได้เป็นคนใช้ Linux การที่ผู้ผลิตอัพเดท patch หรืออะไรก้อตามที่เกี่ยวกับผลิตภัณฑ์ของตัวเองแล้วอัพเดทใน repository ผู้ใช้จะมีโอกาสในการอัพเดทหรือได้รับ patch ใหม่ๆ นั้นสูงมากกว่า โดยไม่ต้องเขาไปที่เว็บไซต์ของบริษัทผู้ผลิตแล้วดาวน์โหลด patch มาติดตั้ง นี่เป็นตัวอย่างที่เห็นได้ชัดเจน สำหรับผู้ใช้ Linux อยู่แล้วผมคิดว่าการการอัพเดทเป็นเรื่องที่ต้องทำทั้งในส่วน software และ security ซึ่งเห็นได้ใน RedHat, Fedora หรือแม้กระทั่ง Ubuntu ไมโครซอฟต์ที่ต้องเรียนรู้จากโอเพนซอร์ส

ที่มา
1. Which Top Apps Have the Most Security Holes?
2. Windows need Linux package manager