ติดตั้ง Lazarus แบบ Subversion บน Linux อย่างไรให้สำเร็จ

  • ผมเชื่อว่าคงมีหลายท่านอยากจะใช้หรือทดลอง Lazarus ดู ส่วนใหญ่เลือกจะติดตั้งจาก package เช่น Debian หรือ RPM ซึ่งจะได้ version ใหม่กว่าการใช้ Synaptic อยู่เล็กน้อย แต่เมื่อใช้เปิดโปรแกรม lazarus มา load package (.lpk) เพิ่มเติม lazarus จะทำการ build ตัวเองใหม่ ส่วนใหญ่แล้วจะแป๊ก ซึ่งต้องตั้งค่าบางอย่างให้กับ lazarus จึงจะ compile & build ผ่าน ซึ่งผมจะกล่าวตอนท้ายๆ
  • แต่ถ้าต้องการที่ update ใหม่ล่าสุดก็ต้องใช้ subversion ตอนนี้ website ของ Lazarus ประกาศหาผู้มาช่วยพัฒนาเพิ่มเนื่องจากโครงการมีขนาดใหญ่ขึ้นทุกวัน และที่หนีไม่พ้นคือ bugs ที่มาพร้อมกับขนาดใหญ่ แต่การแก้ bug ก็ทำได้เร็ว ดังนั้นการใช้ subversion คือได้ใช้ตัว update กว่า และที่สำคัญถ้าเราพบ bug ก็สามารถรายงานให้ผู้พัฒนาได้แก้ไข ถือเป็นการร่วมด้วยช่วยกัน
  • ผมล้าง Ubuntu ไปเมื่ออาทิตย์ที่แล้วและติดตั้ง Ubuntu ใหม่ จึงมีโอกาสติดตั้ง Lazarus ตั้งแต่เริ่มต้นด้วย subversion พบเห็นอุปสรรคอะไรก็จดโน๊ตไว้ ตอนนี้ fpc (freepascal) version 2.5.1 ส่วน Lazarus v.0.9.29

Lazarus subversion


  • ช่วงที่ติดตั้ง linux แล้วทำการ distro upgrade ด้วย sudo apt-get dist-upgrade ปรากฎว่าไฟล์ที่ต้องดาวน์โหลดเกือบๆ 200 MB แต่ เกิดอะไรขึ้นกับ server  “th.archive.ubuntu.com” ที่เคยใช้ประจำ มันช้าประมาณว่า 6-9 Kb/s เลยเปลี่ยนมาใช้ Mirror แห่งชาติคือ mirror.in.th เร็วมากๆ แต่ก็ติดจนได้คือชุด upgrade ของ Openoffice กลับฟ้องว่า 404 file not found ก็เลยสลับไปที่ mirror1.ku.ac.th ได้ผลครับที่นี่เร็วและไม่มีอะไรติดขัดเลย ความเร็วขนาด 300 – 500 Kb/s เดี๋ยวได้ใช้บริการบ่อยๆ

ติดตั้ง Subversion

  • ที่ terminal พิมพ์คำสั่ง เพื่อติดตั้ง subversion และถ้าสำเร็จลองตรวจดู version
prajuab@blackwidowloveru32:~$sudo apt-get install subversion
prajuab@blackwidowloveru32:~$svn --version

สร้างไดเรคทอรีเพื่อเก็บไฟล์ subvesion ของ fpc และ lazarus

  • ที่เครื่องผมเองผมจะสร้างไดเรคทอรีสำหรับ subversion ที่ home ของผมเองดังนี้ (คำอธิบายอยู่ด้านขวามือ ไม่ใช่ส่วนหนึ่งของคำสั่ง)
prajuab@blackwidowloveru32:~$mkdir svn                <===(สร้างไดเรคทอรี svn)
prajuab@blackwidowloveru32:~$cd svn                   <===(cd เข้าในไดเรคทอรี svn)
prajuab@blackwidowloveru32:~/svn$mkdir fpcsvn         <===(สร้างไดเรคทอรี fpcsvn)
prajuab@blackwidowloveru32:~/svn$mkdir lazarussvn     <===(สร้างไดเรคทอรี lazarussvn)
prajuab@blackwidowloveru32:~/svn$ls                   <===(list ดูชื่อไดเรคทอรี)

ดาวน์โหลด freepascal ด้วย subversion ก่อน

  • lazarus ต่อยอดมาจาก freepascal จึงต้องติดตั้ง freepascal(fpc) ก่อน จาก website ของ fpc ด้วยคำสั่งด้านล่าง สังเกตขวามือสุดของคำสั่งคือ fpcsvn ก็คือชื่อไดเรคทอรีที่จะเก็บ fpc นั่นเอง ตอนนี้ต้องรอกันนานพอสมควร ไม่ต่ำกว่าครึ่งชั่วโมง
$  svn checkout http://svn.freepascal.org/svn/fpc/trunk fpcsvn
  • ดาวน์โหลดเสร็จอย่าเพิ่มทำการ compile ทำตามขั้นตอนต่อไปก่อน

ดาวน์โหลด lazarus ด้วย subversion ตามหลัง

  • และแล้วก็ lazarus รอนานน้อยกว่า freepascal เนื่องจากไฟล์น้อยกว่า
$ svn co http://svn.freepascal.org/svn/lazarus/trunk lazarussvn

รออีกหน่อยยัง compile freepascal และ lazarus ไม่ได้

  • ตอนนี้เรามีแต่ไฟล์ที่เป็น source code ของ fpc และ lazarus ยังขาดตัว compiler ที่เป็น binary เช่น ppc386 (หรือ ppc386.exe ในวินโดส์) ทำอย่างไร สำหรับผมแล้วผมขอแหกกฎนิดหนึ่งผมจะใช้วิธีติดตั้ง fpc จาก synaptic ซึ่งเป็นเวอร์ชั่นเก่า เพื่อจะเอา binary มาใช้ compile รอบแรกเท่านั้นเมื่อ compile fpc(svn) เสร็จ เราจะได้ binary ของ library ที่เป็นเวอร์ชั่นใหม่ ต่อจากนั้นจะ uninstall fpc เวอร์ชั่นเก่าออก แค่นั้นเองครับ ติดตั้ง fpc ผ่าน synaptic ด้วยคำสั่ง sudo synaptic จากนั้นคลิกปุ่ม Search พิมพ์คำว่า fpc จะเห็น package ที่เกี่ยวข้องกับ fpc ดังรูปข้างล่าง
prajuab@blackwidowloveru32:~/svn$ sudo synaptic

Download old version of freepascal by Synaptic.

 

  • จากรูปด้านบนโปรแกรม synaptic จะเห็น fpc เวอร์ชั่น 2.2.2 ซึ่งเก่าพอสมควรติ๊กเลือก fpc บรรทัดบนสุด ที่เหลือ synaptic จะเลือก lib อื่นๆที่จำเป็นให้เอง

Install freepascal

  • จากรูปด้านบนคลิกที่ Apply เพื่อทำการติดตั้ง fpc รอนานพอสมควรกว่าจะเสร็จ

Compile freepascal

  • ก่อนจะทำการคอมไพล์ fpc ลองตรวจสอบดูว่าไฟล์ไบนารี fpc และ ppc386 ติดตั้งเข้ามาแล้วหรือยังใช้คำสั่ง
prajuab@blackwidowloveru32:~/svn$ fpc -i
  • ลองดูด้านต้นๆจะเห็นคำว่า “Free Pascal Compiler version 2.2.2” ใช้คำสั่งต่อไปเพื่อหาไฟล์ ppc386
prajuab@blackwidowloveru32:~/svn$ ppc386 -vt bogus
  • โปรแกรมจะแสดงผล ลองดูประมาณบรรทัดที่ 5-6 จะเห็นคำว่า “Free Pascal Compiler version 2.2.2” อะไรประมาณนี้ ถ้าคำสั่ง fpc -i และ ppc386 -vt bogus แสดงผลออกมาแสดงว่าเราพร้อมจะคอมไพล์ fpc ที่เป็น subversion ตอนนี้ที่ไดเรคทอรี /home/prajuab/svn จะมีไดเรคทอรี 2 ไดเรคทอรีคือ fpcsvn และ lazarussvn ที่เก็บ sourcecode อยู่พร้อมที่จะทำการคอมไพล์
prajuab@blackwidowloveru32:~/svn$ cd fpcsvn            <====(เข้าไปที่ไดเรคทอรี fpcsvn)
prajuab@blackwidowloveru32:~/fpcsvn$make clean all     <====(compile fpc ใช้เวลามาก)
prajuab@blackwidowloveru32:~/fpcsvn$sudo make install <====(ใช้สิทธิ์ผู้ดูแลระบบทำการ install)
  • ส่วนใหญ่แล้วที่ผมประสบมาการคอมไพล์ fpc (svn) ไม่เคยมีปัญหาผ่านตลอด (ที่จะยากคือคอมไพล์ lazarus ซึ่งจะได้กล่าวต่อไป) ถ้าใช้คำสั่ง sudo make install ไม่มี error เลยแสดงว่าผ่านแล้ว ตอนนี้มาได้ครึ่งทางแล้ว

การถอนการติดตั้ง (Uninstall) fpc เวอร์ชั่นเก่าจาก Synaptic

  • fpc ที่ติดตั้งจาก Synaptic โปรแกรมไบนารีเช่น fp, fpc, fpcmake เป็นต้นจะถูกติดตั้งไปอยู่ที่ /usr/bin ส่วน library ของ fpc จะถูกติดตั้งที่ /usr/lib/fpc/2.2.2 ทำการ uninstall ด้วยคำสั่ง
prajuab@blackwidowloveru32:~/fpcsvn$sudo apt-get remove fpc
  • แต่ผมสังเกตว่าถึงแม้จะใช้ remove ไฟล์ binary ของ fpc ยังอยู่ไม่รู้ว่าทำไม ไม่เป็นไรเราจะลบด้วยมือ ถึงแม้ไม่หมด 100% แต่ก็ไม่เป็นไร ดูรูปข้างล่างที่เปิดดูด้วย sudo nautilus ยังเห็น library ของ fpc เวอร์ชั่น 2.2.2 อยู่
prajuab@blackwidowloveru32:~/fpcsvn$sudo nautilus

Nautilus

  • จัดการลบไดเรคทอรี fpc ด้วย nautilus ออก ต่อไปจะลบไฟล์ไบนารีออก ที่ไดเรคทอรี /usr/bin ใช้คำสั่ง
prajuab@blackwidowloveru32:~/fpcsvn$sudo rm /usr/bin/fp*      <===(คำสั่ง rm โปรดใช้ด้วยความระมัดระวัง)

การสร้างลิงค์ไปยัง fpc library เวอร์ชั่นใหม่

  • ตอนที่เราคอมไพล์ fpc ที่เป็น subversion ขั้นสุดท้ายที่ใช้คำสั่ง sudo make install ไฟล์ที่เป็นไฟล์ไบนารีเช่น fp, fpc, fpcmake เป็นต้น จะถูก copy ไปยัง /usr/local/bin (ไม่ใช่ usr/bin เหมือนติดตั้งด้วย synaptic) ส่วนไฟล์ที่เป็น library จะถูก copy ไปที่ /usr/local/lib/fpc/2.5.1 ลองดูด้วย nautilus จะเห็นดังรูปด้านล่าง

Nautilus shown library of fpc

  • คำสั่งต่อไปสำคัญมากคือสร้างลิงค์ให้ ppc386 ที่อยู่ในไดเรคทอรี /usr/local/lib/fpc/2.5.1 ไฟล์ลิงค์ ppc386 อยู่ที่ /bin (ไฟล์ลิงค์ ppc386 ยังชี้ไปตัวเก่าคือ /usr/lib/fpc/2.2.2 ที่เราเพิ่งลบไดเรคทอรีไป) เราจะสร้างไฟล์ลิงค์ทับ ppc386 ไฟล์เดิม
prajuab@blackwidowloveru32:~/fpcsvn$cd /bin     <=====(เปลี่ยนไดเรคทอรีไปที่ /bin)

prajuab@blackwidowloveru32:/bin$sudo ln -s /usr/local/lib/fpc/2.5.1/ppc386  <===(สร้างไฟล์ลิงค์)

เตรียมการเพื่อคอมไพล์ lazarus

  • เมื่อทำการสร้างไฟล์ลิงค์ให้กับ ppc386 เรียบร้อยแล้วลองใช้คำสั่ง ppc386 -vt bogus ดู check ว่าเป็นเวอร์ชั่น 2.5.1 แล้วหรือยัง ถ้าใช่ก็ไปต่อ เนื่องจาก lazarus ต้องใช้ไฟล์ของ  fpc ดังนั้นการคอมไพล์ lazarus จะมองหาไฟล์ตั้งค่าของ fpc  เช่น path ตั้งถูกหรือไม่ ด่านนี้เป็นด่านสำคัญสำหรับการคอมไพล์ lazarus การตั้งค่าทำได้โดยการไปแก้ไขไฟล์ fpc.cfg อยู่ที่ /etc

การตั้งค่า fpc.cfg

  • ต่อไปจะใช้ Text Editor ที่มากับ linux ซึ่งแต่ละ distro ก็มีตัวเก่งแตกต่างกันไปในถ้าเป็น Gnome ก็ต้อง gedit ถ้าเป็น KDE ก็ kwrite ถ้าใช้ Ubuntu ก็สั่งเปิดไฟล์ fpc.cfg ดังนี้
prajuab@blackwidowloveru32:~$sudo gedit /etc/fpc.cfg
  • ค้นหา 3 บรรทัดสำคัญจะเห็นดังนี้
# searchpath for units and other system dependent things
-Fu/usr/lib/fpc/$fpcversion/units/$fpctarget
-Fu/usr/lib/fpc/$fpcversion/units/$fpctarget/*
-Fu/usr/lib/fpc/$fpcversion/units/$fpctarget/rtl
  • ไฟล์ fpc.cfg จะมาพร้อมกับที่เราติดตั้ง fpc ผ่าน synaptic จึงอ้างอิงถึง /usb/lib/fpc/…… (คำนำหน้า -Fu เป็น prefix = unit file) ทำการแก้ไขไฟล์ fpc.cfg ให้ -Fu มาที่ fpc ที่ได้จาก subversion ซึ่งอยู่ที่ /usr/local/lib/fpc/… ดังนี้
# searchpath for units and other system dependent things
-Fu/usr/local/lib/fpc/$fpcversion/units/$fpctarget
-Fu/usr/local/lib/fpc/$fpcversion/units/$fpctarget/*
-Fu/usr/local/lib/fpc/$fpcversion/units/$fpctarget/rtl

fpc.cfg

  • จัดการ save fpc.cfg แล้วเข้าไปที่ไดเรคทอรี lazarus (svn)
prajuab@blackwidowloveru32:~/$cd ~/svn/lazarussvn   <===(เปลี่ยนไดเรคทอรีมาที่เก็บ lazarus(svn))

คอมไพล์ lazarus

  • เมื่อเข้าไปในไดเรคทอรี lazarussvn ใช้คำสั่ง make clean all แล้วนั่งภาวนาให้ผ่าน ถ้าไม่ผ่านเกิด error กลับไปแก้ไฟล์ fpc.cfg อีกครั้ง
prajuab@blackwidowloveru32:~/lazarussvn$make clean all
  • ถ้าผ่านการคอมไพล์ make clean all ตรงนี้ได้ก็เฮได้เลย โอกาสสำเร็จขึ้นมาถึง 90% แล้ว
prajuab@blackwidowloveru32:~/lazarussvn$sudo make install  <===(ใช้สิทธิ์ผู้ดูแลระบบ
  • คำสั่ง sudo make install ต้องใช้ sudo เพราะต้องเป็นผู้ดูแลระบบ เพื่อจะทำการติดตั้งและเขียนไฟล์ลงไดเรคทอรีของระบบ lazarus จะเขียนไฟล์ทั้ง source, bianary, library ไปที่ /usr/local/share/lazarus ต้องรอนานเนื่องจากไฟล์มีมากที่ lazarus จะคัดลอกจากไดเรคทอรี lazarussvn ไปยังไดเรคทอรี /usr/local/share/lazarus
  • พูดถึง component ที่ lazarus เตรียมมาให้นั้นมากมายจริงๆ ทั้งแปลงมาจาก delphi หรือใหม่ๆก็มี ผมเองใช้ไม่กี่อย่าง ที่ว่าก็คือ ฐานข้อมูลเล็กพริกขี้หนู  Sqlite ชุด component จะอยู่ที่ /usr/local/share/lazarus/components

lazarus 's components

  • ส่วนไดเรคทอรีหลักคือ /usr/local/share/lazarus มีไดเรคทอรีที่น่าสนใจคือ examples เป็นตัวอย่างการใช้ components ของ lazarus เลือกเปิดดูได้

Main directory of Lazarus.

แรกเริ่ม lazarus และการตั้งค่า

  • ถึงตอนนี้ เราก็จะได้เห็นหน้าตาของ lazarus ในรุ่นแบบ subversion (สวย ใส ผมคิดว่าดูดีกว่าเวอร์ชั่นบนวินโดส์)
prajuab@blackwidowloveru32:~/lazarussvn$cd /usr/local/share/lazarus

prajuab@blackwidowloveru32:/lazarus$startlazarus   <===(รัน lazarus)

Lazarus the first time shown.

ตั้งค่า Environment ให้ lazarus

  • จัดหน้าต่างเช่น object inspector , source editor, project inspector, code explorer และ messages ตามความพอใจ เสร็จแล้ว สิ่งที่ต้องทำคือตั้งค่าให้ Environment จากเมนูหลัก คลิกที่ Environment > Options… จะเห็น dialog ดังรูปตั้งค่า path ให้สอดคล้อง ตรงไหนก็ให้ตั้งค่าให้เรียบร้อย ส่วนใหญ่ถ้าใช้ Ubuntu หรือ PCLinuxOS และติดตั้งด้วย subversion ตัว path จะเหมือนของผมยกเว้น FPC Source Directory (ก็คือเป็น source code ที่ดาวน์โหลดจาก subversion) เครื่องผมจะเป็น /home/prajuab/svn/fpcsvn/

IDE options

  • จากรูปด้านบน column ด้านซ้ายมือถ้าคลิกมาที่ Editor และคลิกที่ Display จะเลือกฟอนต์และขนาดฟอนต์ได้ ผมใช้ Courier New ขนาด 11 กำลังสวยครับ สามารถ comment ที่โค๊ดได้แต่ข้อเสียคือ cursor จะไม่ตรง ก็เหมือน text editor หลายๆตัวบนวินโดส์ก็เหมือนกันเมื่อมาเจอภาษาไทย ผมจึงเลือก comment ด้วยภาษาอังกฤษตลอด เพราะความจำเป็นบังคับ
  • ต่อไปตั้ง Debugger ก็ยังอยู่หน้าเดียวกันแต่เลื่อนคอลัมภ์ด้านซ้ายมาที่ Debugger ตั้งชื่อและ path ดังรูปด้านล่าง

ide_options1

ตั้งค่า Build Options

  • ถึงจุดสำคัญคือตอนนี้เราจะตั้งค่าให้ lazarus เราเป็นคือตั้ง Widget ถ้าเป็น Ubuntu ก็ต้อง GTK2, Qt และ fpGUI (แต่ widget สองอย่างหลังผมไม่เคย build ผ่านเลย) ที่เมนูหลักคลิก Tools > Configure “Build Lazarus” … คลิกที่ Advance Build Options ตั้งค่า options  ดังรูปด้านล่าง

Advance build options

  • คลิกที่ Build เลยครับ ถ้าสามารถผ่านขั้นตอนสุดท้ายนี้ได้ ความสำเร็จประมาณ 95% แล้วครับ สุดท้ายจะ compile และ build ตัวเองพร้อมทั้ง restart ขึ้นมาใหม่

ติดตั้ง Component เพิ่มเติม

  • component ที่ผมติดตั้งเสมอคือ package (.lpk) ของฐานข้อมูล sqlite มี 2 component อยู่ที่ /usr/local/share/lazarus/components/sqldb ชื่อแพ็คเกจคือ sqldblaz.lpk อีกตัวอยู่ที่ /usr/local/share/lazarus/components/sqlite ชื่อแพ็คเกจคือsqlite3laz.lpk ผมเข้าใจว่าที่ lazarus ไม่เลือกติดตั้งให้มาตั้งแต่ตอนแรกคงคิดฐานของผู้ใช้ฐานข้อมูล(ฟรี) ก็หลากหลายกันไป เช่น sqlite, mysql, postgresql, firebird
  • ที่เมนูหลักคลิก Package > Open package file (.lpk) … แล้ว browse ไปหาไฟล์ที่ /usr/local/share/lazarus/components/sqldb เลือกไฟล์ sqldblaz.lpk ที่ dialog คลิก compile ตามด้วย install และให้ comfirm ว่าต้องการ rebuild lazarus ตอบ Yes

Sqldb Package

  • ถ้า library ของ sqlite ไม่ได้ติดตั้งไว้ การ rebuild lazarus จะล้มเหลว ฟ้องว่า /usr/bin/ld: cannot find -lsqlite ให้ไปที่ terminal พิมพ์คำสั่ง เพื่อติดตั้ง library ของ sqlite database
prajuab@blackwidowloveru32:~$sudo apt-get install sqlite sqlite3 libsqlite3-dev
  • ทำการ rebuild ใหม่ จะผ่าน ต่อไปใช้เมนู Package > Open package file (.lpk) … แล้ว browse หาไฟล์ที่ /usr/local/share/lazarus/components/sqlite เลือกไฟล์ sqlite3laz.lpk ทำการ compile และ rebuild lazarus ใหม่ ถ้าสำเร็จจะเห็น component palette ดังรูป (แต่ sqlite3 จะไปอยู่ใน Data Access ชื่อ TSqlite3Dataset)

Sqldb & Sqlite

การ update fpc และ lazarus ด้วย subversion

  • หลังจากนี้ไปทุกอย่างก็ง่ายหมด ผมไม่แนะนะให้ update ทุกๆวัน สำหรับผมทิ้งช่วงไปประมาณหนึ่งอาทิตย์ ถ้าจะ update ทุกๆวันมันก็ไม่ผิดกฎอะไร เพียงแต่ถ้าจะ compile และ build ตัว fpc และ lazarus ทุกวันมันใช้เวลามาก มาดูคำสั่ง update นั้นสั้นและง่ายมาก
prajuab@blackwidowloveru32:~$cd /usr/home/prajuab/svn     <==(cd ไปไดเรคทอรีที่เก็บไฟล์)
prajuab@blackwidowloveru32:~/svn$svn update fpcsvn        <==(ใช้คำสั่ง svn เพื่อ update fpc)

prajuab@blackwidowloveru32:~/svn$svn update lazarussvn    <==(ใช้คำสั่ง svn เพื่อ update lazarus)
  • เสร็จแล้วก็คอมไพล์ด้วย make clean all และ sudo make install ทั้ง fpc และ lazarus เป็นอันเสร็จสิ้น
  • ตอนเริ่มจะเขียนผมไม่นึกว่ามันจะยาวขนาดนี้  แต่อย่างไรก็ตามก็เสร็จจนได้ สำหรับบนวินโดส์ จะเอามารีวิวให้ดูกันเร็วๆนี้

Leave a Reply

Your email address will not be published.