ค้างเรื่อง IPv6 ไว้เมื่อครั้งที่แล้ว ว่าจะเขียน How-to เกี่ยวกับ IPv6 ที่เราจะต้องเรียนรู้กันใหม่อีกนิดหน่อย เริ่มต้นจากการตั้งค่า Network กันก่อน วิธีการเพิ่ม IPv6 ลงใน /etc/network/interfaces ก็ง่ายมาก เหมือนเราเพิ่มลงใน IPv4 นั่นแหละครับ ถ้ามี IPv4 ตั้งค่าอยู่ แค่เอาไปต่อท้ายเท่านั้นก็เรียบร้อยแล้ว เล่น

#IPV6 configuration
iface eth0 inet6 static
pre-up modprobe ipv6
address 2607:f0d0:2001:0000:0000:0000:0000:0010
netmask 64
gateway 2607:f0d0:2001:0000:0000:0000:0000:0001

อธิบายกันหน่อย รายบรรทัดนะครับ

  1. iface eth0 inet6 static ก็คือ ข้าพเจ้าจะใช้ IPv6 ที่ interface eth0 แบบ static คือกำหนด IP Address เอง (ทางการไปมั๊ย)
  2. บอกระบบให้ load module IPv6 มาด้วย (ถ้าแน่ใจว่า load module IPv6 มาแล้วบรรทัดนี้ไม่ต้องมีก็ได้)
  3. ค่า IP Address ของเราที่ได้มา
  4. ค่า netmask สำหรับ IPv6 subnet
  5. ค่า gateway ของ IPv6 subnet

เมื่อตั้งค่าให้สั่ง restart network service ดังนี้

/etc/init.d/networking restart

วิธีการทดสอบ ก็ง่ายมากใช้คำสั่ง ip ดังนี้

ip -6 address show eth0

วิธีดูค่า default gateway ใช้คำสั่ง

ip -6 route show dev eth0

ต้องการกำหนดค่า default gateway ใช้คำสั่ง

ip -6 route add default via 2607:f0d0:2001::1

Debian Squeeze 6.0 ออกรุ่นอัพเดทแล้ว หลังจาก Squeeze ออกรุ่นเมื่อเดือนกุมภาพันธ์ที่ผ่านมาซอฟต์แวร์หลายตัวก็ได้รับการแก้บั๊กและช่องโหว่ต่างๆ และให้บริการผ่านคลังซอฟต์แวร์ของ Debian เอง ชื่อ security.debian.org ผู้ใช้สามารถอัพเดทผ่าน Software Center ได้โดยตรง แพคเกจที่มีการแก้ไขบั๊ก เช่น ClamAV, KDE, Linux Kernel และ Debian Installer สำหรับการแก้ปัญหาด้านความปลอดภัยได้แก่ PostgreSQL, Tomcat, Chromium, WordPress และซอฟต์แวร์อีกหลายตัว คุณสามารถดูรายละเอียดได้จาก ChangeLog

ได้อานิสงฆ์มาจากการไปเรียน Training 11 คุณครูหมีเท็ดดี้บอกแว๊บๆ ว่ามีเครื่องมือในการสร้าง Meta Package ได้ง่ายๆ ผมเองก้อไม่ได้สนใจอะไรเพราะชอบ build deb แบบดุ้นๆ เพิ่งจะมาได้ดูเมื่อ 2 วันที่แล้วนี่เอง ลองเล่นดูก้อพบว่า เอ๊ะมันง่ายเกินไปหรือเปล่า เอาล่ะโปรแกรมที่ช่วยเราทำ Meta Package แบบง่ายๆ นี้ชื่อว่า equivs ใครยังไม่มีก้อติดตั้งได้เลยครับ

$ sudo apt-get install equivs

สำหรับการใช้งานก้อไม่ยากครับ equivs จะมีเครื่องมือสร้าง control file คล้ายๆ กับการสร้างไฟล์ spec ไฟล์ของแพคเกจแบบ RPM แต่ไฟล์ที่ได้นี้จะ compile ได้ด้วย equivs ไม่ได้ครับ เรามาลองสร้าง control ไฟล์กันก่อนครับ สั่งสร้าง control ไฟล์โดยใช้คำสั่ง

$ equivs-control package-thai-setup.ctl

ลืมบอกไปว่าเราจะสร้างแพคเกจติดตั้งภาษาไทย ฟอนต์ และอื่นๆ ในไฟล์ package-thai-setup.ctl ที่เราได้ก้อจะมีหน้าตาอย่างนี้ครับ

### Commented entries have reasonable defaults.
### Uncomment to edit them.
Section: misc
Priority: optional
Standards-Version: 3.6.2

Package: <package name; defaults to equivs-dummy>
# Version: <enter version here; defaults to 1.0>
# Maintainer: Your Name <yourname@example.com>
# Pre-Depends: <comma-separated list of packages>
# Depends: <comma-separated list of packages>
# Recommends: <comma-separated list of packages>
# Suggests: <comma-separated list of packages>
# Provides: <comma-separated list of packages>
# Replaces: <comma-separated list of packages>
# Architecture: all
# Copyright: <copyright file; defaults to GPL2>
# Changelog: <changelog file; defaults to a generic changelog>
# Readme: <README.Debian file; defaults to a generic one>
# Extra-Files: <comma-separated list of additional files for the doc directory>
Description: <short description; defaults to some wise words>
 long description and info
 .
 second paragraph

ซึ่งเป็น template ง่ายๆ ให้เราแก้ไขได้ เอาล่ะสิ่งที่เราต้องทำคือใส่ชื่อแพคเกจ เวอร์ชั่น ใครเป็นคนดูแล เพคเกจนี้ต้องมีแพคเกจอะไรบ้าง (ในส่วน depends) กำหนด Architecture, Copyright และใส่รายละเอียดว่าแพคเกจที่เราสร้างคือแพคเกจเกี่ยวกับอะไร ผมใส่รายละเอียดได้แบบนี้ครับ

### Commented entries have reasonable defaults.
### Uncomment to edit them.
Section: misc
Priority: optional
Standards-Version: 3.6.2

Package: package-thai-setup
Version: 1.0ubuntu1
Maintainer: Anuchit Chalothorn <anoochit@gmail.com>
# Pre-Depends: <comma-separated list of packages>
Depends: language-pack-th-base, language-pack-th, language-pack-gnome-th-base, language-pack-gnome-th, language-support-fonts-th, language-support-input-th, language-support-translations-th, language-support-writing-th
# Recommends: <comma-separated list of packages>
# Suggests: <comma-separated list of packages>
# Provides: <comma-separated list of packages>
# Replaces: <comma-separated list of packages>
Architecture: i386
# Copyright: <copyright file; defaults to GPL2>
# Changelog: <changelog file; defaults to a generic changelog>
# Readme: <README.Debian file; defaults to a generic one>
# Extra-Files: <comma-separated list of additional files for the doc directory>
Description: setup for Thai language package
 This package for Thai language package setup for all Thai locale, input method and display.

จากนั้นก้อ สั่ง compile package กันได้เลยโดยใช้คำสั่ง

$ equivs-build package-thai-setup.ctl

เราก้อจะได้ไฟล์ package-thai-setup_1.0ubuntu1_i386.deb ออกมาแล้ว หากเราสั่งติดตั้งแพคเกจนี้ ตัวติดตั้งก้อจะดาวน์โหลดแพคเกจที่เป็น depends มาให้เรา ซึ่งถือว่าเป็นการสร้างแพคเกจ .deb แบบง่ายสุดๆ ซึ่งสามารถใช้งานได้กับ debian และ ubuntu เลยล่ะ :)

ผมพยายามหา 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 ผมยังไม่ได้ดูเลยครับว่าเป็นยังไง ใครพอจะทราบก้อบอกเล่าแลกเปลี่ยนความรู้กันได้ครับ :)

 

อาจจะถือเป็นครั้งแรกในประเทศไทยก็ได้ที่มีงานดีๆ เกี่ยวกับ Debian นั้นคือ Thailand Mini-DebCamp 2010 จัดที่มหาวิทยาลัยขอนแก่น วันที่ 13-19 มีนาคมนี้ ในงานจะเป็นการแลกเปลี่ยนความรู้ ประสบการณ์ของนักพัฒนาและผู้ใช้งาน Debian ระดับสากล สำหรับกิจกรรมที่ผู้ใช้และนักพัฒนาชาวไทยที่พลาดไม่ได้ เช่น Bug Squad Party, มุมมองการพัฒนา Linux ในประเทศไทย, เรียนลัด Debian Package Maintainer และกิจกรรมที่น่าสนใจอื่นๆ ถึงแม้ท่านไม่ได้ใช้ Debian ก็สามารถติดตามและเป็นส่วนหนึ่งของงานในครั้งนี้ได้ ท่านที่สนใจสามารถติดตามข่าวได้ที่ http://wiki.debian.org/DebianThailand/MiniDebCamp2010

ที่มา – OpenTLE, Live Journal

นักพัฒนา Debian ประกาศการอัพเดทครั้งที่ 4 ของ Debian 5.0 ซึ่งการอัพเดทนี้รวมถึง Debian installer และบักอื่นๆ ที่ตรวจพบในรุ่นก่อนหน้านี้ Debian 5.0.4 มาพร้อมกับ Linux kernel 2.6.26 และ Debian installer เองก็ยังสนับสนุนการติดตั้งจาก archive.debian.org อีกด้วย ผู้ใช้ Debian รุ่นก่อนหน้าสามารถอัพเดทระบบผ่าน security.debian.org และจะได้ Debian ในรุ่นที่ปรับปรุงใหม่นี้อัตโนมัติ รายละเอียดสำหรับรุ่นนี้อ่านเพิ่มเติมได้ที่ ประกาศการออกรุ่น และ บันทึกการปรับรุ่นDebian 5.0.4 สามารถดาวน์โหลดได้แล้วจากเว็บ mirror ของ Debian และอ่านวิธีการติดตั้งที่หน้าเอกสารคู่มือการติดตั้งครับ

จากตอนที่แล้วเราได้ repo เพื่อเตรียมเอาไว้ใช้บริการผู้ที่ต้องการติดตั้งโปรแกรมจาก repo เราไปแล้ว ในตอนที่ 2 นี้จะเกี่ยวกับเรื่องของการจัดการ package โดยที่นักพัฒนาหรือผู้ดูแล package ต้องการอัพโหลดขึ้น repo server ด้วยตัวเอง ไม่ต้องสั่ง include package เป็นครั้งๆ ไป Debian มีเครื่องมือให้เราใช้เช่นกันครับ เราจะมาใช้เครื่องมือที่ชื่อ dupload

dupload เป็นเครื่องมือที่ออกแบบมาเพื่อใช้ในการอัพโหลด package ไปยัง repo ต่างกันได้ ซึ่งจะทำให้ง่ายในการ contribute package ของนักพัฒนาและผู้ดูแล apckage นั้นๆ เอาล่ะเรามาเริ่มติดตั้งและ config เจ้า dupload กันดีกว่าครับ เริ่มแรก ติดตั้งกันก่อน ใช้คำสั่ง

$ sudo apt-get install dupload

จากนั้นเราต้องไป config ค่า repo ให้กับ dupload กันก่อน ที่ ~/.dupload.conf หรือที่ /etc/dupload.conf ก็ได้ การ config นั้เราจะกำหนด repo server ปลายทางที่เราต้องการจะ upload package ขึ้นไป เช่น

$cfg{‘example’} = {
fqdn => "example.com",
login => "steve",
method => "scpb",
incoming => "/incoming/",
# The dinstall on ftp-master sends emails itself
dinstall_runs => 1,
};

อธิบายกันก่อน config ข้างบนเป็นการบอกว่าเรามี repo server ชื่อเล่นว่า example โดยมี domain ชื่อเต็มๆ ว่า example.com ใช้ login ว่า steve ใช้ scpd เป็น protocal ในการ upload ไฟล์ มีไดเรคทอรี /incoming เป็นไดเรอทอรีปลายทางของ package ที่เร upload ขึ้นไป

หากต้องการปรับปรุงให้เข้ากับความต้องการของคุณก็เพียงแค่แก้ไข hostname, login, incoming dir แค่นี้ก็ได้แล้วครับ อ้อ หากคุณต้องการให้ upload package โดยใช้ anonymous FTP ก็สามารถแก้ไขได้ครับ เอาล่ะ วิธีการ upload ก็ง่ายๆ ครับ ใช้คำสั่ง dupload แบบนี้

$ dupload –to <reponame> <.change file>

ตัวอย่างเช่น

$ dupload –to example suriyan-wallpaper1.0i386.change

เท่านี้ก็ upload package ขึ้นไปยัง repo ได้แล้ว แต่ว่า dupload ทำหน้าที่ upload package ไปกองไว้ที่ incoming dir เท่านั้นครับ ไม่ได้ build และบรรจุลงใน repo ของเราจริงๆ ดังนั้นต้องเขียน script เพิ่มอีกหน่อยเพื่อให้ reprepro ทำงานต่อให้เรา อ่ะดาวน์โหลด script ไปละกันนะครับ เมื่อได้ script กันแล้ว บันทึกลงในที่น่าจะจำได้ แล้วก็ใส่ลงใน crontab ครับแบบนี้

*/5 * * * * /usr/local/import-new-packages.sh

มีเรื่องให้ได้จัดการในอีกโครงการหนึ่งคือ Suriyan ซึ่งเป็นโครงการ Linux ที่อยู่ดีๆ ก็ฟื้นขึ้นมาแบบงงๆ จนกลายเป็นหน้าที่ที่ได้รับในส่วนการพัฒนาเพิ่มเติมของ Suriyan นั่นคือส่วนที่ไม่มีอยู่ในดิสทริบิวชันต้นน้ำ (Ubuntu) ซึ่งก็ติดปัญหาเดิมคือการบริหารจัดการ repository นั่นเอง แหม หาทาง build deb source ได้แต่การจัดการ repo แทบกระอักเลือด หากจำกันได้ผมเขียนเขียนวิธีการจัดการ repo ไว้ 2 แบบ คือ

  1. trivial archive
  2. official archive

ซึ่งวิธีการจัดการ repo 2 แบบนี้คล้ายกัน ต่างกันเพียงส่วนของ apt-pinning และเครื่องมือในการจัดการเท่านั้น หากนึกไม่ออกลองไปหาอ่านที่ blog เก่าๆ ได้ครับ ซึ่งปัญหาในการจัดการ repo และ package ที่ต้องการโดยแบ่ง version ออกเป็นส่วนๆ เพื่อการ maintain นั้นยุ่งยากมากกว่ากันหลายเท่า เพราะนอกจาก maintain เวอร์ชั่นปัจจุบันยังต้องเตรียมในรุ่นก่อนหน้าก็ถือว่ายุ่งพอสมควร แต่การสร้างและจัดการ repo มีหลายวิธีด้วยกัน วันนี้จะมาแนะนำการสร้าง repo แบบ official archive แต่ใช้เครื่องมือชื่อ reprepro กันครับ

ก่อน การทำ repo เรามาวางแผนสักสักนิด ผมตั้งใจจะให้ apt ใช้ url ประมาณนี้ครับ http://suriyan.in.th/repo นั่นหมายความว่าผมจะต้องสร้าง repo ภายใต้ document root (หรือไม่ก็ได้ หากสร้างใน directory อื่นสามารถใช้ aliase ชี้ได้) สมมุติว่าผมสร้างที่ /var/www/repo ก็แล้วกันะครับ

ก่อนอื่นติดตั้ง reprepro กันก่อน

# aptitude install reprepro

จากนั้นสร้าง dir repo ขึ้นมา

# mkdir -p /var/www/repo/conf

ให้สร้างไฟล์ ที่กำหนด distribution ขึ้นมาชื่อ distributions ใน /var/www/repo/conf ใส่ข้อมูลลงไปดังนี้

Origin: Your Name
Label: Your own label
Suite: ubuntu
Codename: karmic
Version: 9.10
Architectures: i386 source
Components: main restricted
Description: Your description
SignWith: yes

เท่านี้ก็เรียบร้อยครับ เอา deb source มาใส่ใน repo ของเราได้เลย โดยใช้คำสั่ง

# reprepro -Vb . include <codename> <.change file>

หรือ

# reprepro -Vb . includedeb <codename> <.deb file>

ตัวอย่าง เช่น

# reprepro -Vb . include karmic suriyan-wallpaper1.0i386.change

reprepro ก็จะค้นหาไฟล์ dsc, source และ deb ที่ build เสร็จแล้วให้เรา พร้อมสร้าง dir ใน pool จากนั้นก็ใส่ dsc, source และ deb ลงใน pool ให้อัตโนมัติ แถม sign repo ให้เราด้วย สำหรับการเอา package ออกก็ไม่ได้ยากอะไร เพียงแค่ใช้คำสั่ง reprepro ดังนี้

# reprepro -Vb . remove <codename> <package name>

เท่านี้คุณก็จัดการ repo ได้ง่ายๆ แล้ว

Steve McIntyre หัวหน้าโครงการ Debian ต้องการออก Debian 6.0 รหัสพัฒนา Squeeze ก่อนงาน Debconf ที่จะจัดขึ้นที่นิวยอร์กเดือนสิงหาคมปีหน้า เพราะจะได้มีเวลาว่างในการแลกเปลี่ยนความคิดในการวางแผนเวอร์ชันถัดไป เป็นที่รู้กันดีว่า Debian มักจะออก release เมื่อตัวระบบพร้อม หรือที่เราเรียกว่า rolling release ซึ่งกินเวลานานพอสมควร หากมีการปรับเปลี่ยนนโยบายมาเป็นแบบ fixed release และตั้งเป้าที่จะออกรุ่นใหม่ในปีหน้านี้ โค้ดทั้งหมดจะต้อง freeze ก่อนเดือนธันวาคมปีนี้ และช่วงการเปลี่ยนแปลงในการแก้ไขอีกนิดหน่อย Debian 6.0 ก็จะสามารถออกกำหนดการในเดือนมีนาคมและ ออก release ได้ก่อนเดือนสิงหาคมปีหน้าได้อย่างแน่นอน

ที่มา – h-online

Drizzle เป็นซอฟต์แวร์โอเพนซอร์สทางด้านระบบฐานข้อมูลเชิงสัมพันธ์ DBMS ซึ่งเป็นโครงการที่แยกออกมาจาก MySQL DBMS โดยผู้ก่อตั้งและนักพัฒนา MySQL เดิม Drizzle มีโครงการเหมือนกับ MySQL คือมีส่วน Client และ ส่วน Server ซึ่งใช้คำสั่ง SQL เป็นหลักในการจัดการฐานข้อมูล Drizzle ใช้สัญญาอนุญาติแบบ GNU GPL Version 2 Drizzle พัฒนาโดยใช้ภาษา C++ และบันทึกข้อมูลในรูปแบบ UTF-8 ซึ่งใช้การอย่างแพร่หลายในระบบปฏิบัติการปัจจุบัน รวมถึง Linux, Mac OS X และ Solaris ด้วย สาเหตุที่เลือก Debian Lenny เอามาเป็นระบบปฏิบัติการเพื่อใช้ติดตั้ง Drizzle ก็เนื่องจากมี library ครบถ้วน และไม่เกิดปัญหาในการติดตั้งครับ เอาล่ะมาเริ่มกันเลย

ติดตั้ง library ที่จำเป็นกันก่อน

sudo aptitude install libprotobuf-dev protobuf-compiler uuid-dev libdrizzle0 libdrizzle-dev libreadline5-dev libpcre3-dev

ดาวน์โหลด source code ล่าสุดจาก launchpad แล้ว compile

$ wget http://launchpad.net/drizzle/trunk/aloha/+download/drizzle-2009.07.1088.tar.gz
$ tar xzf drizzle-2009.07.1088.tar.gz
$ cd drizzle-2009.07.1088
$ ./configure –with-libprotobuf-prefix=/usr/local/drizzle
$ make
$ sudo make install

สร้างผู้ใช้ และ กลุ่มชื่อ drizzle

$ sudo groupadd drizzle
$ sudo useradd -g drizzle drizzle

สร้างที่เก็บข้อมูลของ Drizzle และตั้งค่า permission ให้ถูกต้อง

$ sudo mkdir /usr/local/drizzle/data
$ sudo chown -R drizzle:drizzle /usr/local/drizzle

Start Drizzle Server ด้วยคำสั่ง

$ sudo ./usr/local/drizzle/sbin/drizzled –user=drizzle –datadir=/usr/local/drizzle/data/ &

มาลองทดสอบกันโดยใช้ drizzle client ได้เลย

$ ./usr/local/drizzle/bin/drizzle

หน้าตาก็จะออกมาคล้ายๆ MySQL ดังนี้

Welcome to the Drizzle client.. Commands end with ; or g.
Your Drizzle connection id is 2
Server version: 2009.07.1088 Source distribution (trunk)
Type ‘help;’ or ‘h’ for help. Type ‘c’ to clear the buffer.
drizzle> select version();
+————–+
| version() |
+————–+
| 2009.07.1088 |
+————–+
1 row in set (0 sec)
drizzle> exit;

อ่านเพิ่มเติม – A Lightweight SQL Database for Cloud and Web
ที่มา – Install Drizzle On Debian Lenny