cloning package in ubuntu


Posted in:

สวัสดีครับพี่น้องสาวก 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 เอาก็ได้นะครับง่ายดี)

TrendyTeddy's picture

อันนี้ก็ใช้ได้ครับ

นานๆ เทพรูนีย์สุดหล่อ จะลงมาสักที สงสัยจะมาผ่านม้าทรงในเทศกาลกินเจ :P (แซว)

อันนี้ก็ใช้ได้ขอรับกระผม สำหรับคนที่อยาก clone แพกเกจและติดตั้ง

http://forum.ubuntuclub.com/index.php/topic,4778.0.html

GreenApple's picture

ป่อยๆๆ

บะ บะ บร้า ตัวเองก็
เด๋วก็ตอบแทนด้วยร่างกายเลย O_o

เอ่อ นี่ก็เหตุการณ์สมมุตินะครับ - -"

แล้วใน script

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

aumpradya's picture

ขอบคุณครับ

เดี๋ยวจะลองทำดูบ้าง ^ ^

อย่าทำ dns

อย่าทำ dns server บน ubuntu

Post new comment

The content of this field is kept private and will not be shown publicly.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.
  • Allowed HTML tags: <i> <center> <span> <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <br> <dt> <dd> <object> <embed> <hr> <img> <blockquote> <b> <u> <del> <div> <p> <table> <tr> <td> <font>

More information about formatting options