สร้าง mirror ส่วนตัว ด้วย apt-move
การแก้ไขจากต้นฉบับเก่า: เพิ่มเรื่องการเซ็น archive ด้วย GPG
อัปเกรดกันบ่อย ๆ มีการดาวน์โหลดแพกเกจมาไว้ที่เครื่องทุกวัน อยากเอามาใช้ประโยชน์อื่นหลังจากติดตั้งแล้วหรือเปล่า? ไม่อยาก? โอเค aptitude clean หรือ aptitude autoclean จบ ไม่ต้องอ่านต่อ :-) แต่ถ้าคิดว่าน่าเอาไปรีไซเคิล ก็ทำได้หลายอย่างครับ แต่ขั้นแรกที่น่าทำ คือการย้ายเข้า sub-mirror ส่วนตัวเสียก่อน ด้วยเครื่องมือที่จะแนะนำในวันนี้ คือ apt-move
apt-move จะช่วยย้าย deb ต่าง ๆ ที่ดาวน์โหลดมา เข้าไปไว้ใน package pool พร้อมทั้งสร้างรายชื่อแพกเกจให้ด้วย กล่าวคือ สามารถใช้เป็น apt source ได้เลย โดยสามารถกำหนดให้ลบแพกเกจเก่าได้ด้วย ซึ่งเมื่อใช้ไปนาน ๆ ก็จะได้ mirror ย่อย ที่มีแต่แพกเกจที่เราดาวน์โหลดมาเท่านั้น แต่ถ้าจะทำ mirror เต็ม ๆ ก็มีคำสั่งให้ทำได้เหมือนกัน
ผลก็คือ สามารถใช้สร้าง local mirror ไว้ใช้เองเวลาจะ reinstall หรือไว้ใช้ร่วมกันใน intranet ก็ได้ หรือจะเก็บใส่ CD ไว้ใช้ติดตั้งในเครื่องอื่นก็ได้ (ถ้าแพกเกจครบพอ) ผมเคยใช้วิธีนี้แทน apt-proxy ในบางกรณี เพื่อแก้ปัญหาอาการค้างที่เกิดกับ apt-proxy บ่อย ๆ รวมทั้งใช้ทำ apt source สำหรับใช้ในองค์กร โดยคัดเลือกแพกเกจจาก unofficial site (เช่น LTN APT) มารวมด้วย
ติดตั้งกันก่อน:
# aptitude install apt-move
จากนั้น แก้ค่าตั้งใน /etc/apt-move.conf
โดยค่าที่น่าสนใจคือ:
APTSITES
- เลือก mirror site ที่จะใช้อ้างอิงเวลา move เช่น
"linux.thai.net ftp.jp.debian.org"
หรือใช้ค่า"/all/"
เพื่อแทนทุกแหล่งที่อยู่ใน/etc/apt/sources.list
LOCALDIR
- กำหนดไดเร็กทอรีปลายทางที่จะเก็บ package pool
DIST
- กำหนด distribution ที่ใช้ เช่น
unstable
DELETE
- กำหนดว่าจะลบแพกเกจเก่าทิ้งด้วยหรือไม่ โดยปกติควรจะกำหนดเป็น
yes
เพื่อประหยัดเนื้อที่ MAXDELETE
- กำหนดว่าจะลบแพกเกจเก่ากี่เปอร์เซ็นต์ ที่เหลือจะเก็บไว้หลายเวอร์ชัน เผื่ออยาก downgrade แพกเกจไหน
GPGKEY
- กำหนด GPG private key ที่จะใช้เซ็นกำกับแฟ้ม Release เพื่อที่เครื่องลูกข่ายจะสามารถตรวจสอบความน่าเชื่อถือของแหล่งเราผ่าน secure apt ได้ (หากยังไม่ทราบเกี่ยวกับ GPG กรุณาอ่านจากเอกสารของ GPG ก่อน เพราะอธิบายในที่นี้จะยาวเกินไป)
กำหนดคอนฟิกเรียบร้อยแล้ว ก็มาที่คำสั่งสำหรับย้ายแพกเกจ:
# apt-move update
จะย้ายแพกเกจที่ดาวน์โหลดมา ไปยังไดเร็กทอรีที่กำหนด พร้อมสร้างแฟ้ม Packages[.gz] ให้ด้วย ไดเร็กทอรีที่ได้ สามารถเอาไปเพิ่มใน /etc/apt/sources.list
ของเครื่องที่ต้องการใช้ได้เลย เช่น สมมุติว่าย้ายเข้า /home/ftp/debian
ก็กำหนดเป็น:
deb file:///home
/ftp/debian unstable main contrib non-free
และถ้าเปิด FTP service ไว้ด้วย ก็ไปกำหนดที่เครื่องลูกได้:
deb ftp://server-ip/debian unstable main contrib non-free
โดยที่ถ้าคุณกำหนด GPGKEY
สำหรับเซ็นรับรอง คุณก็สามารถ export public key ให้ลูกข่ายใช้ตรวจสอบได้:
# gpg -o archive-key.gpg --export -a 0xXXXXXXXX
โดยแทน 0xXXXXXXXX
ด้วย key id ที่ใช้เซ็น จะได้ ascii-armored public key ออกมาในแฟ้ม archive-key.gpg
(ตั้งเป็นชื่ออื่นก็ได้ แล้วแต่)
จากนั้น ก็ส่ง public key นี้ให้ผู้ใช้ด้วยวิธีใดวิธีหนึ่ง (เอาใส่ใน FTP เลยก็คงได้ แล้วบอกเขาดาวน์โหลดเอา) ซึ่งเขาสามารถ import public key เข้าใน keyring ของ apt ได้ด้วยคำสั่ง:
# apt-key add archive-key.gpg
เนื้อหาใน sub-mirror จะมีแต่แพกเกจที่มีการดาวน์โหลดมาเท่านั้น ดังนั้น ความครบถ้วนของ mirror ก็ขึ้นอยู่กับว่า มีการดาวน์โหลดแพกเกจต่าง ๆ ขนาดไหน ซึ่งก็มีหลายกลวิธี ที่จะทำให้เกิดการดาวน์โหลดให้ได้แพกเกจครบตามต้องการ ไว้เป็นเรื่องของเทคนิคส่วนตัวของแต่ละคน หรือไว้พูดถึงในภายหลังถ้ามีโอกาส แต่ถ้าคุณมีผู้ใช้จำนวนมาก ไม่รู้ว่าเขาจะใช้อะไรบ้าง ก็อาจจะ mirror ให้ครบที่สุดไว้ก่อน ก็ใช้คำสั่ง:
# apt-move mirror
ระวังให้ดีก่อนเรียก เพราะมันจะดาวน์โหลดเยอะมาก อย่าลืมเตรียมเนื้อที่ดิสก์ไว้รองรับด้วยล่ะ แล้วก็อย่าลืมพิจารณาเครื่องมือ mirror อื่น ๆ ที่ออกแบบมาเพื่อการ mirror โดยเฉพาะ ที่อาจจะเหมาะกว่า apt-move ด้วย :-)
- thep's blog
- Log in to post comments
![]() |
ลิขสิทธิ์ของบทความเป็นของเจ้าของบทความแต่ละชิ้น ผลงานนี้ ใช้สัญญาอนุญาตของครีเอทีฟคอมมอนส์แบบ แสดงที่มา-อนุญาตแบบเดียวกัน 3.0 ที่ยังไม่ได้ปรับแก้ |