ฉันจะถ่ายโอนแพ็คเกจและการตั้งค่าที่ติดตั้งจาก distro หนึ่งไปยังอีกที่หนึ่งได้อย่างไร


16

ฉันสำรวจการเรียนรู้และเกี่ยวกับระบบ Linux ผ่าน VirtualBox มาสองสามเดือนแล้วและตัดสินใจว่าฉันต้องการทำให้มันเป็นระบบปฏิบัติการหลักและติดตั้งลงในฮาร์ดไดรฟ์ของฉัน ฉันมีไฟล์จำนวนแพ็คเกจและการตั้งค่า (เช่นการเปลี่ยนแปลงเป็น. bashrc) ที่ฉันต้องการนำมาติดตั้งเมื่อฉันติดตั้งโดยตรงกับ HDD ของฉันดังนั้นฉันจะทำอย่างไร นอกจากนี้ตอนนี้ฉันกำลังใช้งาน Ubuntu ถ้าฉันตัดสินใจที่จะเปลี่ยนเป็น Debian หรือ RPM ที่คล้ายกัน RHEL แบบอิง distro จะเป็นกระบวนการเดียวกันหรือไม่ ฉันจะต้องพิจารณาเรื่องใดบ้างหากมี?


Ubuntu เป็นตราสารอนุพันธ์เดเบียน อนุพันธ์ของ Debian ทั้งหมดมีความคล้ายคลึงกันมากเนื่องจากในแพ็คเกจทั้งหมดมีชื่อเดียวกันการจัดการบรรจุภัณฑ์การกำหนดค่า ฯลฯ และคล้ายคลึงกันมาก อย่างไรก็ตามการแจก Red Hat เช่น Fedora, CentOS และอื่น ๆ นั้นไม่เหมือนกันในเรื่องต่างๆเช่นการจัดการบรรจุภัณฑ์แม้ว่าโดยทั่วไปแล้วจะเป็นซอฟต์แวร์เดียวกัน คุณควรจะสามารถคัดลอกการตั้งค่า / config ฯลฯ จากระบบปฏิบัติการในตระกูล Debian ไปยังส่วนที่อยู่ในตระกูล RH ได้
Faheem Mitha

คำตอบ:


32

การจัดการบรรจุภัณฑ์เป็นหนึ่งในความแตกต่างที่สำคัญระหว่างการแจกแจง ระหว่างการแจกแจงที่ไม่เกี่ยวข้องคุณจะไม่สามารถทำอะไรอัตโนมัติ การกระจายที่แตกต่างกันจะแบ่งซอฟต์แวร์ออกเป็นชุดแพคเกจต่างๆและใช้ชื่อต่าง

ระหว่างเครื่องที่ใช้เวอร์ชั่นเดียวกันของการแจกจ่ายแบบเดียวกันคุณสามารถทำการติดตั้งที่คล้ายกันได้โดยสร้างรายการของแพ็คเกจที่ติดตั้งใหม่ บนระบบที่ใช้aptเช่น Debian และสัญญาซื้อขายล่วงหน้า (อูบุนตู, มิ้นท์, ... ), apt-cloneการใช้งาน ดูฉันจะทำซ้ำการเลือกแพ็คเกจที่ติดตั้งจากระบบ Debian หนึ่งไปยังอีกระบบหนึ่งได้อย่างไร (Debian Wheezy)สำหรับคำสั่งที่แน่นอน สั้นบนเครื่องเก่า:

sudo apt-get install apt-clone
apt-clone clone foo

คัดลอกfoo.apt-clone.tar.gzไปยังเครื่องใหม่และเรียกใช้

sudo apt-get install apt-clone
sudo apt-clone restore foo.apt-clone.tar.gz

apt-cloneอาจทำงานระหว่างการแจกแจงที่เกี่ยวข้องเช่น Debian และ Ubuntu ใช้restore-new-distroแทนrestoreในกรณีนั้น หากล้มเหลวใช้วิธีการด้วยตนเองด้วยdpkg --get-selectionsและapt-markและซอกับรายการแพคเกจจนกว่า apt เป็นที่พอใจ

สำหรับการตั้งค่าของคุณเองมันง่ายกว่าเพียงแค่คัดลอกไฟล์ dotจากโฮมไดเร็กตอรี่ของคุณ ตามกฎแล้วให้กำหนดค่าสิ่งต่าง ๆ ที่ไม่เกี่ยวข้องกับฮาร์ดแวร์ในบัญชีของคุณไม่ใช่ทั้งระบบ ที่จะทำให้ง่ายต่อการคัดลอกไปยังเครื่องอื่น


ข้อได้เปรียบเหนือคำตอบที่สองด้านล่างคือวิธีนี้เร็วกว่าเพราะข้ามอินเทอร์เน็ตช้าและใช้ USB 3 ได้เร็วขึ้น อาจมีข้อได้เปรียบอื่น ๆ อีกด้วย ???
WinEunuuchs2Unix

@ WinEunuuchs2Unix รายการแพ็คเกจมีเพียงไม่กี่กิโลไบต์ การถ่ายโอนผ่านอินเทอร์เน็ตใช้เวลาน้อยกว่าการหาด็องเกิล USB ปล่อยให้ติดตั้งเพียงอย่างเดียวแล้วเลือกไฟล์ที่จะคัดลอกเป็นต้น
Gilles 'หยุดชั่วร้าย'

@ Gilles ทำให้ฉันโง่ ฉันคิดว่าfoo.apt-clone.tar.gzเป็นลูก tar บีบอัดของไบนารีทั้งหมดที่ติดตั้ง ไม่ทราบว่าเป็นเพียงรายการแพ็คเกจที่ติดตั้งไว้ มันรวมหมายเลขรุ่นที่ถูกพักไว้ด้วยหรือไม่?
WinEunuuchs2Unix

ข้อผิดพลาดมากมาย.... version mismatch: libgl1-mesa-dri, libmirprotobuf3, xserver-xorg-legacy, libgbm1, libmirclient9, xserver-common, libxatracker2, gnome-software, libmircommon7, libwayland-client0, mesa-vdpau-drivers, adobe-flash-properties-gtk, libwayland-server0, xserver-xorg-core, conky-all, libgles2-mesa, libmircore1, libosmesa6, x11proto-core-dev, dkms, libgl1-mesa-glx, adobe-flashplugin, libegl1-mesa, gnome-software-common, libglapi-mesa, libwayland-cursor0, ubuntu-software, libwayland-egl1-mesa Note that you can use --with-dpkg-repack to include those packges in the clone file.
WinEunuuchs2Unix

@ WinEunuuchs2Unix ฉันคิดว่า apt-clone รวมถึง dpkg state ทั้งหมดรวมถึงแพ็คเกจที่จัดขึ้น โปรดทราบว่าถ้าคุณต้องการโคลนการติดตั้งแบบเต็มมันเป็นเรื่องที่แตกต่างกันโดยสิ้นเชิง: จุดของ apt-clone คือเมื่อคุณมีแบนด์วิดธ์ระหว่างเครื่อง 2 และแพ็คเกจมิเรอร์มากกว่าระหว่างเครื่อง 1 และเครื่อง 2 (หรือแบนด์วิดท์ราคาถูกกว่า) ที่คุณไม่ต้องการให้เครื่อง 1 ยุ่งเกินไปในขณะที่คุณตั้งค่าเครื่อง 2) Apt-clone ทำงานได้ดีที่สุดเมื่อติดตั้งแพคเกจเวอร์ชันทั้งหมดบนเครื่องต้นทาง
Gilles 'หยุดชั่วร้าย'

10

หากคุณอยู่ในครอบครัวเดเบียนคุณสามารถถ่ายโอนได้อย่างง่ายดาย เพียงแค่แสดงรายการแพคเกจที่ติดตั้งในปัจจุบันบันทึกลงในไฟล์แล้วอ่านไฟล์นั้นเพื่อติดตั้งใหม่:

  1. บันทึกแพ็คเกจที่ติดตั้งในไฟล์installed:

    dpkg -l | grep ^ii | awk '{print $2}' > installed
    
  2. ใน Distro ที่ใช้ Debian ที่เพิ่งติดตั้งใหม่ให้ติดตั้งแพ็คเกจที่บันทึกไว้:

    sudo apt-get install $(cat installed)
    

หรือคุณสามารถใช้เครื่องมือ GUI สำหรับสิ่งนี้ มิ้นท์มีหนึ่งที่ดีมากเรียกว่าmintbackup:

ภาพหน้าจอ mintbackup

จากนั้นจากการติดตั้งใหม่:

อีกสกรีนช็อตของ mintbackup


จะdpkg --get-selections | awk '$2 == "install" {print $1}' > instlpkgเทียบเท่าหรือไม่ นอกจากนี้แล้วการใช้ yum install alien บน RHEL / Fedora / CentOS ล่ะ?
Sergiy Kolodyazhnyy

1
ไม่เพียงแค่สร้างการเลือกซ้ำสร้างรายการของแพ็คเกจที่ติดตั้งโดยอัตโนมัติมิฉะนั้นจะเกิดความยุ่งเหยิง นอกจากนี้apt-cloneในขณะนี้ซึ่งโดยอัตโนมัตินี้ ดูunix.stackexchange.com/questions/191662/…
Gilles 'SO- หยุดความชั่วร้าย'

มันจะเป็นประโยชน์ในการคัดลอกแพคเกจที่จัดขึ้นเช่นกัน เช่น Conky 1.9 จัดขึ้นเพื่อให้ Conky 1.10 ไม่ได้ทำสิ่งสกปรก ส่วนหนึ่งของคำตอบจะอยู่ในหัวข้อ AskUbuntu
WinEunuuchs2Unix

1
คำตอบนี้เร็วกว่าคำตอบที่ได้รับการโหวตสูงสุดและไม่มีข้อความแสดงข้อผิดพลาดมากมายเหมือนapt-cloneด้านบน 1/3 ของข้อผิดพลาดที่โพสต์ในความคิดเห็นด้านบน
WinEunuuchs2Unix

ดูดี แต่เป็นไปได้ไหมที่จะใช้ mintbackup ใน ubuntu 18.04?
ดูแลเว็บ

1

/etc/การตั้งค่าจะถูกเก็บไว้ใน etckeeperมีประโยชน์ จุดประสงค์หลักของมันคือเปลี่ยน/etc/เป็นที่เก็บ git แต่มันก็กรองบางส่วนที่คุณไม่ต้องการคัดลอกถ้าฉันเข้าใจดี ดังนั้นหากคุณคุ้นเคยกับการใช้gitงานคุณอาจจะดีกว่าที่etckeeperจะรวมการเปลี่ยนแปลงของคุณเข้ากับการติดตั้งใหม่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.