This is G o o g l e's cache of http://www.debianclub.com/node/2 as retrieved on 16 Feb 2007 19:02:54 GMT.
G o o g l e's cache is the snapshot that we took of the page as we crawled the web.
The page may have changed since that time. Click here for the current page without highlighting.
This cached page may reference images which are no longer available. Click here for the cached text only.
To link to or bookmark this page, use the following url: http://www.google.com/search?hl=en&q=cache%3Ahttp%3A%2F%2Fwww.debianclub.com%2Fnode%2F2&btnG=Search


Google is neither affiliated with the authors of this page nor responsible for its content.

User login

Links

debianclub.com
debian.org
ubuntuclub.com
blognone.com

Syndicate

Syndicate content

aptitude ที่น่าใช้กว่า apt-get

|

ขอประเดิมบทความแรกด้วยเรื่องการใช้ aptitude

การติดตั้งแพกเกจใน debian ด้วย apt-get เป็นสิ่งมหัศจรรย์อย่างหนึ่งที่ debian นำมาสู่โลกใบนี้ ระบบที่ติดตั้ง debian ส่วนใหญ่ ติดตั้งกันครั้งเดียว แล้วก็ปรับรุ่นแบบออนไลน์กันไปตลอดอายุขัยของเครื่อง

ในระยะแรก ผู้ใช้อาจเพลิดเพลินกับการ apt-get ที่ทำให้การติดตั้งทดลองใช้โปรแกรมบน debian กลายเป็นเรื่องง่าย แต่ทุกอย่างก็ใช่จะเพอร์เฟ็กต์ เรื่องแรกที่คุณอาจพบคือ แพกเกจที่ดาวน์โหลดมา ทำให้ /var ใหญ่ขึ้นเรื่อยๆ จนอาจทำให้ฮาร์ดดิสก์เต็ม ปัญหานี้ ทางแก้ค่อนข้างเป็นที่รู้จักกันดีอยู่แล้ว:


# apt-get clean

ซึ่งจะลบแพกเกจที่ดาวน์โหลดมาทั้งหมด หรือถ้าคุณอยากเก็บแพกเกจไว้ reinstall:


# apt-get autoclean

จะลบเฉพาะแพกเกจที่เก่า จนไม่อยู่ในแหล่งดาวน์โหลดอีกแล้ว

แต่ปัญหาที่คุณอาจพบตามมาเมื่อใช้ไปนานๆ คือมีแพกเกจเก่าและใหม่ปะปนกัน ไลบรารีบางตัวมีหลายรุ่น อย่างที่ผมพบก็คือ ยังมีแพกเกจของ GNOME 1.x ตกค้างอยู่ในเครื่องอยู่เลย ใช้แพกเกจอย่าง deborphan ตรวจหาไลบรารีหมดอายุเพื่อลบทิ้ง ก็พอกล้อมแกล้ม แต่หลังจากได้พบความสามารถหนึ่งของ aptitude ก็ตกลง migrate มาใช้ aptitude แทน apt-get ดีกว่า

aptitude ไม่ได้เป็นแค่ UI front-end ของ apt-get เท่านั้น แต่ aptitude สามารถเรียกผ่าน command-line แทน apt-get ก็ได้ เช่น คุณอาจจะเรียกแบบนี้:


# aptitude update
# aptitude upgrade
# aptitude install package

แต่ความสามารถที่น่าสนใจของ aptitude ที่ผมว่า ก็คือการติดตามแพกเกจกำพร้า (orphaned package) และลบให้โดยอัตโนมัติ

หลักการก็คือ aptitude จะติดแท็กให้กับแพกเกจที่ถูกลากมาเพิ่มจากการติดตั้งแพกเกจที่เราสั่ง ว่าเป็น auto-installed package ส่วนแพกเกจที่เราสั่งติดตั้งโดยตรง จะเรียกว่า manually-installed package จากนั้น ทุกครั้งที่มีการ resolve dependency จากการ upgrade, install หรือ remove แพกเกจ aptitude จะตรวจสอบแพกเกจ auto-installed ที่ไม่มีใครใช้ และจัดการ remove ให้ด้วย

ตัวอย่างเช่น สมมุติว่าคุณใช้ GNOME อยู่ อยากลองใช้ KDE บ้าง คุณอาจสั่ง "aptitude install kde" จะมีเพียง meta-package kde เท่านั้นที่ถือเป็น manual install ที่เหลือที่ถูกลากมาจะเป็น auto install และเมื่อคุณตัดสินใจลบ kde ออก แพกเกจ auto install ก็ถูกปลดปล่อยตามไปด้วย ซึ่งจะต่างจากการใช้ apt-get ที่จะลบแค่ meta-package kde เท่านั้น

ทีนี้สมมุติว่าในระหว่างที่ใช้ KDE คุณติดตั้งโปรแกรมที่ใช้ Qt เพิ่ม แพกเกจของ Qt ก็จะมีพันธะกับแพกเกจนั้นด้วย เมื่อคุณสั่งลบ kde ก็เพียงปลดพันธะกับ KDE desktop แต่ Qt ซึ่งยังเหลือพันธะกับแพกเกจดังกล่าว ก็จะไม่ถูกลบ

อ้าว! ก็ไม่บอกแต่แรก ตูก็ใช้ apt-get มาตั้งนาน แล้วจะเปลี่ยนไปใช้ aptitude ตอนนี้ จะมีผลอะไรกับแพกเกจเก่าที่ติดตั้งไปแล้วล่ะเนี่ย คุณอาจปรามาสผมในใจ

คำตอบจึงมีผลกับผู้ที่กำลังจะติดตั้ง debian ว่าควรจะตัดสินใจใช้ aptitude แต่แรก แต่ถ้าคุณใช้ apt-get มาเป็นแรมปีแล้ว ก็ยังพอมีทาง โดย aptitude สามารถสั่ง mark auto/manual ได้ โดยใน full-screen interface นั้น คุณสามารถเลื่อนแถบเลือกไปที่แพกเกจที่ต้องการ แล้วกด m ถ้าต้องการ mark manual หรือ M ถ้าต้องการ mark auto (จำง่ายๆ ว่า m คือ manual ไม่อยากให้ manual ก็กด shift เพิ่ม) ถ้าเป็น command line ก็:


# aptitude markauto package
# aptitude unmarkauto package

ผมใช้วิธีนี้แหละ migrate มา aptitude โดยไล่ mark ไปวันละนิดละหน่อย เริ่มจาก section library ก่อน (ใครมีวิธีที่ง่ายกว่านี้ก็ช่วยแนะนำด้วยนะครับ)

อ้อ! ความแตกต่างอีกอย่างของ aptitude ก็คือ มันจะจัดการแพกเกจที่ recommends ให้ด้วยนะครับ โดยถ้าติดตั้งผ่าน command line มันจะติดตั้งแพกเกจที่ recommends เพิ่มให้ด้วย แต่ถ้าสั่งผ่าน full-screen interface มันจะลิสต์เพิ่มให้เลือกเอาก่อนสั่งติดตั้งขั้นสุดท้าย

นอกจากนี้ ใครที่เคยต้องใช้ apt pinning เพื่อ fix version ของแพกเกจบางตัว ใน aptitude คุณสามารถสั่งได้ง่ายๆ โดยสั่ง hold package (=) เอา

แถม trick สำหรับ aptitude command line อีกนิด คือสามารถสั่งแบบรวมมิตรได้:


# aptitude install package1 package2 package3- package4=

จะติดตั้ง package1 และ package2, ลบ package3, และ hold package4

รายละเอียดยังมีอีกเยอะครับ อ่าน man เพิ่มเติมได้ :-)

debian-administration

วันนี้ ที่ debian-administration เพิ่งลงเรื่องนี้ครับ รบกวนฝากคุณเทพย่อยให้หน่อยครับ
Cleaning up a Debian GNU/Linux system

marking auto to all

บังเอิญอะไรขนาดนั้น ถามปุ๊ป ได้ลิงก์คำตอบปั๊บ :)

ที่เขาพยายามทำก็คือ สั่ง mark ทุกแพกเกจให้เป็น auto แล้วค่อยมา mark manual เอาครับผม โดยใช้คำสั่ง:

for pkg in $(aptitude search ~i | grep -v "i A" | cut -d " " -f 4) ; do
  echo "-- markauto $pkg --"
  aptitude markauto $pkg
done

โดยส่วนแรก

aptitude search ~i

จะค้นหาทุกแพกเกจที่ติดตั้งอยู่ จากนั้น ก็ grep -v "i A" เพื่อตัดตัวที่ mark auto อยู่ก่อนแล้ว แล้ว cut เอาแต่ชื่อแพกเกจ

แล้วเนื้อหาในลูปก็สั่ง markauto ซะ

ว้าว..

เสริมหน่อย

ขอเสริมข้างบนของคุณเทพหน่อย

ส่วนใหญ่เมื่อเราลบแพเเกจออกไปแล้ว ถ้าเป็นการเอาออกแบบไม่ใช่ purge มันก็จะยังมีไฟล์คอนฟิกของแพกเกจเหล่านั้นค้างอยู่ ถ้าจะให้เกลี้ยงสนิทก็ต้อง

aptitude purge packages
หรือ
dpkg -P packages

แต่ถ้า remove ออกไปแล้ว เราสามารถสังเกตุว่าแพกเกจไหนยังมีคอนฟิกค้างอยู่บ้างก็

dpkg -l | grep ^rc

ซึ่งใช้ดูแพกเกจที่ remove ออกไปแล้วแต่ยังมีไฟล์ config ค้างอยู่ (ขึ้นต้นด้วย rc)

ถ้าต้องการล้างบางไปเลย ขี้เกียจมานั่งลบทีละตัวก็

for pkg in $(dpkg -l | grep ^rc | cut -d " " -f 3) ; do
dpkg -P $pkg ;
done

คงเหมาะสำหรับคนที่แก้คอนฟิกผิดแล้วจะลงใหม่นะ....

Debian Repository?

บทความนี้น่าสนใจมากครับ สำหรับคนที่พอจะคุ้นเคยกับ Debian มาบ้างแล้ว ก็คงเข้าใจกันดี
แต่สำหรับมือใหม่ที่เพิ่งจะเริ่มหัดใช้ Debian Package Management ในลักษณะนี้
คงจะงง ๆ กันบ้าง ว่า เราจะใช้ aptitude กันตอนไหน และเจ้า aptitude ไปดึง package ต่าง ๆ มาจากที่ใด เพราะสิ่งที่เกิดขึ้นก็คือ ทำไมสั่ง aptitude เพื่อลงโปรแกรมไปแล้ว ต้องนั่งรอนาน ๆ โหลดได้ทีละไม่กี่ KB/s อะไรประมาณนี้

ก่อนอื่นมาตามหา แหล่งเก็บ package ต่าง ๆ ของ Debian กันนะครับ ... อย่างที่พี่เทพบอกเสมอ ๆ ว่า Debian เป็น Distro ที่ครอบจักรวาล

  • มีหลาย Architech ให้เลือกที่จะติดตั้ง ไม่ว่าจะเป็น i386,amd64, powerpc, arm ฯลฯ
  • มี package จำนวนมากให้เลือกที่จะติดตั้ง
  • เป็น package ที่เรียกได้ว่ามีคุณภาพสูง มีการแก้ไขปรับปรุงแทบจะเรียกได้ว่าตลอดเวลา

ทำให้เครื่องที่จะใช้เก็บ package ต่าง ๆ นี้ ต้องมีเนื้อที่ของฮาร์ดดิสก์ขนาดใหญ่มาก ถ้าจะต้องเก็บทั้งหมด ลองตามหาต่อไป ก็จะพบกับคำที่คุ้นเคยกันดี ในแวดวงลินุกซ์ครับ ก็คือ คำว่า Mirror sites แต่เป็นสมัยก่อนที่อินเตอร์เน็ตในบ้านเรายังไม่ค่อยพัฒนา การใช้งาน Mirror sites ของเราก็จะเป็นในแง่ของการ Download ISO ไฟล์ หรือก็ค อไฟล์ที่เป็นสำเนาของแผ่น CD ที่ใช้ในการติดตั้ง ถึงทุกวันนี้ก็ยังใช้กันอยู่ อาจจะมีรูปแบบอื่น ๆ เพิ่มขึ้นมาเช่นเป็นแผ่น DVD ซึ่งทำให้จำนวนแผ่นในการติดตั้ง Linux ลดลงไปมาก อาจเหลือแค่แผ่นเดียว

แต่อย่างที่กล่าวมาแล้วครับว่า package ของ Debian มีจำนวนมาก ถ้าต้องโหลดมาทั้งหมดแล้วค่อยติดตั้งก็ทำได้ แต่ไม่นิยมทำกัน ดังนั้น Mirror ของ Debian จึงเป็นที่เก็บ package ย่อย ๆ ทั้งหลาย พร้อมทั้งตัว Installer ที่ใช้ในการต ดตั้ง ซึ่งมีหลายตัวให้เลือก แต่ที่ผมชอบก็เห็นจะเป็น Debian Net Installer ครับ เพราะเล็กดี โหลดไม่นานก็ใช้ได้แล้ว ไม่พูดพร่ำทำเพลงมากไปดู Mirror ของ Debian กันเลยครับ

ถ้าเข้าไปดูที่ http://www.debian.org/mirror/list
ก็จะพบกับนิยามของ Debian Mirror คือ

  • Primary Mirror: เป็น Mirror หลักที่เปิดให้ใช้ตลอด 24 ชั่วโมง เก็บ package ที่ update ล่าสุด เก็บทุก Architech มีชื่อที่จดจำง่าย ftp..debian.org เช่น ftp.us.debian.org, ftp.jp.debian.org เป็นต้น
  • Secondary Mirror: เป็น Mirror ที่เก็บบางส่วน หรืออาจจะทั้งหมดของ Debian Mirror อันเนื่องมาจากข้อจำกัดเรื่องเนื้อที่เก็บข้อมูล และอาจมีข้อมูลไม่ update เท่า Primary Mirror

แต่เท่าที่ดูแล้วของประเทศไทยที่อยู่ ใน Mirror list ของ Debain มีสองที่

TH Thailand
-----------
ftp.nectec.or.th /pub/linux-distributions/Debian/
==> Mirror [alpha amd64 arm hppa hurd-i386 i386 ia64 m68k mips mipsel powerpc s390 sparc]

ftp.coe.psu.ac.th /debian/
==> Mirror [i386]

ซึ่งเท่าที่ทดสอบดู Mirror ที่ PSU ผมลองแล้วแต่ความเร็วไม่เป็นที่น่าพอใจ อาจเป็นเพราะผมอยู่คนละเครือข่ายกับ Server และก็ที่นั่นอาจมีภาระงานมากอยู่แล้ว ส่วนที่ NECTEC ก็ค่อนข้างเร็ว แต่ผมไม่ค่อยได้ใช้ที่นี่เพราะมีที่หลัก ๆ ใช้แล้ว แต่ว่าไม่ได้อยู่ใน list คือ

linux.thai.net /debian
mirror.in.th /debian

ซึ่งความเร็วก็ค่อนข้างดี

หลังจากที่รู้จัก Debian Mirror กันไปแล้ว มาลองตั้งค่าเพื่อจะใช้ Mirror ที่ต้องการกันครับ

ไฟล์ที่เก็บข อมูลเกี่ยวกับ Debian Mirror ที่เราเลือกไว้แล้วคือ

 /etc/apt/sources.list 

โดยใช้ โปรแกรมแก้ไขข้อความที่คุณถนัด (ผมถนัดใช้ Vim) และเพิ่มข้อความข้างล่างเข้าไป

 
deb     ftp://linux.thai.net/debian/ [sid/etch/sarge] main contrib non-free
deb-src ftp://linux.thai.net/debian/ [sid/etch/sarge] main contrib non-free

โดยที่

  • deb และ deb-src คือ package และ source code package ตามลำดับ หากไม่ต้องการจะใช้ source code ก็ไม่จำเป็นต้องใส่ deb-src ลงใน sources.list อาจจะใช้วิธี comment ไว้ โดยเพิ่มเครื่องหมาย "#" ไว้ข้างหน้า deb-src
  • [sid/etch/sarge] เป็นชื่อเรียก distribution ของ Debian โดยเลือกอย่างใดอย่างหนึ่ง ซึ่งความหมายของแต่ละชื่อเป็นอย่างนี้คือ
    sarge :stable - รุ่นที่มีความเสถียร
    etch :testing - คือ รุ่นที่อยู่ในการทดสอบ หากไม่มี Bugs ก็พร้อมที่จะเปลี่ยนเป็น stable รุ่นถัดไป
    sid :unstable - รุ่นที่อยู่ในระหว่างพัฒนา มีการเปลี่ยนแปลง และยังมี Bugs ให้ตามแก้ เหมาะสำหรับนักพัฒนา และผู้ที่สนใจใน package ใหม่ ๆ ของ Debian

ส่วน main, contrib, non-free เป็น Package Section Debian ไม่ต้องเลือกทั้งหมดก็ได้ หากไม่ได้ใช้ แต่ต้องมีหลัก ๆ คือ main

*** รายละเอียดเพิ่มเติมที่ Debian Technology โดย เทพพิทักษ์​ ​การุญบุญญานันท์

หลังจากที่เลือก distribution และ section ที่ต้องการเป็นที่เรียบร้อยแล้ว เราก็มาทำการ update list ในเครื่องเรา โดยการสั่งคำสั่งนี้ต้องมีสิทธิเป็น root หรือเทียบเท่าก่อนนะครับ

 # aptitude update 
netgate:~# aptitude update
Get:1 ftp://linux.thai.net etch Release.gpg [189B]
Get:2 ftp://linux.thai.net etch Release [74.4kB]
Get:3 ftp://linux.thai.net etch/main Packages [4218kB]
Get:4 ftp://linux.thai.net etch/contrib Packages [51.1kB]
Get:5 ftp://linux.thai.net etch/non-free Packages [76.0kB]
Fetched 4419kB in 2m50s (25.9kB/s)
Reading package lists... Done

#

แค่นี้ก็เป็นอันเรียบร้อยแล้ว หลังจากนั้นก็ใช้คำสั่ง aptitude เพื่อทำการลงโปรแกรมต่าง ๆ ต่อไป แต่ตอนนี้เราเลือก Mirror ที่ใกล้เราที่สุด ก็จะทำให้ความเร็วในการดึงข้อมูลน่าจะดีขึ้น :)

___________________________________________________________________

Key ID: D4CEFD37
Fingerprint: 1ED3 27F6 48C8 5C9D 4285 F24D D64E C0AF D4CE FD37

ตั้งหัวข้อใหม่?

ตอบละเอียดจริงๆ ความจริงตั้งเป็นหัวข้อใหม่ได้เลยนะนี่ :-)

เริ่มใช้ม

เริ่มใช้มาซักพักละ (หลังจากป๋าเทพบอก)

gibj.=hc]h;,yj'

aptitude เนี่ยก็ work เอามากๆเลย

deborphan ช่วยประหยัดเนื้อที่ไปเยอะเลย