cloning package in ubuntu

สวัสดีครับพี่น้องสาวก ubuntu ทุกท่าน วันนี้ rooney มี trick เล็กๆน้อยๆเกี่ยวกับการติดตั้งโปรแกรมแบบเร่งด่วนมาฝากครับ เรื่องมีอยู่ว่า

หัวหน้า: เฮ้ what zapp!

rooney: เอ่อ... ครับ

หัวหน้า: นี่ๆ ช่วงบ่ายนี้ช่วย setup เครื่อง server ให้หน่อยนะเอาให้เหมือนเครื่อง server ที่วางที่ชั้น 11 เลยนะ เดี๋ยวพรุ่งนี้ต้องเอาไปตั้งที่สาขา

rooney: ชิวๆ อยากได้จัดให้เลยครับท่าน

อีก 10 นาทีต่อมา

rooney: อ้าว เฮ้ย! งานเข้า ไอ้เจ้า server ที่ว่ามันเป็น all in one server นี่หว่า เครื่องเดียวเป็นทั้ง web , mail , ftp , file server , vpn , etc แล้วนี่ต้องลง app กันกี่ตัวฟะเนี่ย แล้วต้อง apt-get อะไรมามั่งล่ะตู ลืมไปแล้วด้วยเด่ะ (T _ T ")?

อีก 15 นาทีถัดมา

rooney: อืม..........

rooney: อา..........

rooney: โอว.........

rooney: เอ..... นึกออกแล้ว \(^ _ ^)/

ขั้นตอนการแก้ปัญหา

ขั้น 1: ติดตั้ง ubuntu ที่เครื่อง server เครื่องใหม่ให้เรียบร้อย

ขั้น 2: ลอง list ดู package ในเครื่อง server เครื่องเก่าดู

#dpkg -l (เพื่อนๆลองทำตามดูนะครับ)

ขั้น 2: ทีนี้ลองกรอง package ที่มีอยู่ในเครื่องออกมาเป็น file

#dpkg -l | awk '{print $2}' > packages.list

ตัวอย่างไฟล์:

Status=Not/Installed/Config-f/Unpacked/Failed-cfg/Half-inst/t-aWait/T-pend
Err?=(none)/Hold/Reinst-required/X=both-problems
Name

acl
acpi
acpi-support
acpid
adblock-plus
adduser
alacarte
alsa-base
alsa-utils
anacron
apache2-utils
apache2.2-common
apmd
.
.
.
.
xsltproc
xterm
xtrans-dev
xulrunner-1.9
xulrunner-1.9-gnome-support
xutils
xutils-dev
yakuake
yelp
zenity
zip
zlib1g
zlib1g-dev

จะเห็นว่ามีส่วนที่ไม่ได้เป็นชื่อ package ปนอยู่ในไฟล์

Status=Not/Installed/Config-f/Unpacked/Failed-cfg/Half-inst/t-aWait/T-pend
Err?=(none)/Hold/Reinst-required/X=both-problems
Name

ให้ทำการลบส่วนนี้ทิ้งไป

3. copy ไฟล์ packages.list ไปไว้ที่เครื่อง server เครื่องใหม่ (สมมติว่าวางไว้ที่ /tmp)

4. ติดตั้งโปรแกรม

#apt-get -y install --force-yes $(cat /tmp/packages.list)

5. ที่เหลือก็คือลอกไฟล์ configure จากเครื่องเดิมมาเครื่องใหม่

หมายเหตุ: วิธีข้างต้นอาจจะดูถึกเถื่อนไปนิด เพราะเล่นไล่ติดตั้งซะทุก app ถ้าจะให้ดี software ตัวไหนไม่ใช้แน่ๆก็ตัดทิ้งไปจาก packages.list ซะครับ จริงๆถ้าเราเป็นคน set server เครื่องเก่าเองกะมือ แค่ขั้นตอน list ชื่อ package ออกมาก็น่าจะพอทำให้จำได้บ้างแล้วละว่าต้องลงอะไรบ้าง ก็ให้ทำการคัดชื่อ package ออกมาให้เหลือเฉพาะที่น่าจะต้องติดตั้ง แล้วค่อย apt-get -y install --force-yes ....... ทีเดียวจบ(อย่างเร็ว)

ปล: ใช้เป็น shell script รันเพื่อทำการติดตั้งก็ได้นะครับ ตัวอย่าง script ดูตามข้างล่างครับ

#!/bin/bash

for pkg in $(cat /tmp/packages.list); do

apt-get -y install $pkg

done

สุดท้าย อยากจะบอกว่าเหตุการณ์ดังกล่าวเป็นเรื่องสมมตินะครับ ไม่มีไรมาก เค้าแค่อยากสอน command line อ่ะตัวเอง แง็ว ๆ ๆ ๆ (ส่วน server น่ะ เอา clonezilla clone เอาก็ได้นะครับง่ายดี)

Comments

TrendyTeddy's picture

นานๆ เทพรูนีย์สุดหล่อ จะลงมาสักที สงสัยจะมาผ่านม้าทรงในเทศกาลกินเจ :P (แซว) อันนี้ก็ใช้ได้ขอรับกระผม สำหรับคนที่อยาก clone แพกเกจและติดตั้ง http://forum.ubuntuclub.com/index.php/topic,4778.0.html
GreenApple's picture

บะ บะ บร้า ตัวเองก็ เด๋วก็ตอบแทนด้วยร่างกายเลย O_o เอ่อ นี่ก็เหตุการณ์สมมุตินะครับ - -"
SilliCon's picture

แล้วใน script ไม่ต้องมี --force-yes เหรอครับ
aumpradya's picture

เดี๋ยวจะลองทำดูบ้าง ^ ^
บุคคลทั่วไป's picture

อย่าทำ dns server บน ubuntu
บุคคลทั่วไป2's picture

..เพราะอะไรล่ะคับ รบกวนบอกเหตุผลด้วย