Làm cách nào để chuyển các gói và cài đặt đã cài đặt từ bản phân phối này sang bản khác?


15

Tôi đã khám phá việc học và về hệ thống Linux qua VirtualBox trong một vài tháng và quyết định rằng tôi muốn biến nó thành HĐH chính của mình và cài đặt nó vào ổ cứng. Tôi có một số tệp, gói và cài đặt (chẳng hạn như thay đổi .bashrc) mà tôi muốn mang theo khi cài đặt trực tiếp vào ổ cứng của mình, vậy tôi phải làm thế nào? Ngoài ra, ngay bây giờ tôi đang chạy Ubuntu nếu tôi quyết định chuyển sang một bản phân phối Debian hoặc RPM tương tự, bản phân phối dựa trên RHEL có phải là cùng một quy trình không? Những cân nhắc nào tôi sẽ phải tính đến nếu có?


Ubuntu là một dẫn xuất Debian. Tất cả các dẫn xuất Debian đều rất giống nhau, vì trong các gói đều có cùng tên, quản lý gói, cấu hình, v.v. và tất cả đều rất giống nhau. Tuy nhiên, các bản phân phối Red Hat như Fedora, CentOS, v.v. không giống nhau trong các vấn đề như quản lý gói, mặc dù về cơ bản chúng là cùng một phần mềm. Mặc dù vậy, phần lớn bạn có thể sao chép các cài đặt / cấu hình, v.v. từ các HĐH trong họ Debian sang các phần tử trong họ RH.
Faheem Mitha

Câu trả lời:


31

Quản lý gói là một trong những khác biệt chính giữa các bản phân phối. Giữa các bản phân phối không liên quan, bạn sẽ không thể làm bất cứ điều gì tự động. Các bản phân phối khác nhau chia phần mềm thành các bộ gói khác nhau và sử dụng các tên khác nhau.

Giữa các máy chạy cùng một phiên bản của cùng một bản phân phối, bạn có thể đạt được cài đặt tương tự bằng cách sao chép danh sách các gói đã cài đặt. Trên các hệ thống sử dụng apt, như Debian và các công cụ phái sinh (Ubuntu, Mint, tầm), hãy sử dụng apt-clone. Xem Làm cách nào để sao chép các lựa chọn gói đã cài đặt từ một hệ thống Debian sang hệ thống khác? (Debian Wheezy) cho các lệnh chính xác. Tóm lại, trên máy cũ:

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

Sao chép foo.apt-clone.tar.gzvào máy mới và chạy

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

apt-clonecó thể hoạt động giữa các bản phân phối có liên quan, ví dụ Debian và Ubuntu. Sử dụng restore-new-distrothay vì restoretrong trường hợp đó. Nếu thất bại, hãy sử dụng phương thức thủ công với dpkg --get-selectionsapt-mark, và sử dụng danh sách gói cho đến khi apt được thỏa mãn.

Đối với các cài đặt của riêng bạn, nó đơn giản hơn: chỉ cần sao chép các tệp chấm từ thư mục chính của bạn. Theo quy định, hãy định cấu hình những thứ không liên quan đến phần cứng trong tài khoản của bạn, không phải toàn hệ thống; Điều đó sẽ giúp bạn dễ dàng sao chép chúng sang một máy khác.


Ưu điểm so với câu trả lời thứ hai dưới đây là phương pháp này nhanh hơn vì internet chậm bị bỏ qua và có thể sử dụng USB 3 nhanh hơn. Có thể có những lợi thế khác nữa ???
WinEunuuchs2Unix

@ WinEunuuchs2Unix Danh sách các gói chỉ có vài kilobyte. Truyền nó qua internet mất ít thời gian hơn so với việc tìm kiếm một chiếc USB, hãy để nó tự lắp và chọn các tệp để sao chép, v.v.
Gilles 'SO- ngừng trở nên xấu xa'

@ Gilles ngớ ngẩn với tôi. Tôi nghĩ foo.apt-clone.tar.gzlà một quả bóng nhựa nén của tất cả các nhị phân được cài đặt. Không nhận ra nó chỉ đơn giản là một danh sách các gói được cài đặt. Nó có bao gồm các số phiên bản giữ lại quá không?
WinEunuuchs2Unix

Rất nhiều lỗi.... 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 Tôi nghĩ apt-clone bao gồm tất cả trạng thái dpkg bao gồm các gói được giữ. Lưu ý rằng nếu bạn muốn sao chép toàn bộ cài đặt thì đó là một vấn đề hoàn toàn khác: điểm của apt-clone là khi bạn có nhiều băng thông giữa máy 2 và máy nhân bản gói hơn giữa máy 1 và máy 2 (hoặc băng thông ít tốn kém hơn, trong rằng bạn không muốn giữ máy 1 quá bận trong khi bạn đang thiết lập máy 2). Apt-clone hoạt động tốt nhất khi tất cả các phiên bản gói trên máy nguồn đều có thể cài đặt được.
Gilles 'SO- ngừng trở nên xấu xa'

10

Nếu bạn ở trong gia đình Debian, vâng, bạn có thể chuyển chúng rất dễ dàng. Chỉ cần liệt kê các gói hiện được cài đặt, lưu chúng vào một tệp và sau đó đọc tệp đó để cài đặt lại chúng:

  1. Lưu các gói đã cài đặt trong tệp installed:

    dpkg -l | grep ^ii | awk '{print $2}' > installed
    
  2. Trong bản phân phối dựa trên Debian mới cài đặt của bạn, hãy cài đặt các gói đã lưu:

    sudo apt-get install $(cat installed)
    

Ngoài ra, bạn có thể sử dụng một công cụ GUI cho việc này. Mint có một cái rất đẹp gọi là mintbackup:

ảnh chụp màn hình mintbackup

Sau đó, từ cài đặt mới:

một ảnh chụp màn hình khác của mintbackup


Sẽ dpkg --get-selections | awk '$2 == "install" {print $1}' > instlpkgtương đương? Ngoài ra, làm thế nào về việc sử dụng yum cài đặt người ngoài hành tinh trên RHEL / Fedora / CentOS?
Sergiy Kolodyazhnyy

1
Không chỉ tái tạo các lựa chọn, sao chép danh sách các gói được cài đặt tự động, nếu không nó sẽ trở nên lộn xộn. Có apt-clonebây giờ, mà tự động hóa này. Xem unix.stackexchange.com/questions/191662/ từ
Gilles 'SO- ngừng trở nên xấu xa'

Nó sẽ hữu ích để sao chép các gói tổ chức quá. tức là Conky 1.9 được giữ để Conky 1.10 không làm hỏng mọi thứ. Một phần của câu trả lời sẽ có trong chuỗi AskUbfox .
WinEunuuchs2Unix

1
Câu trả lời này nhanh hơn câu trả lời được bình chọn hàng đầu và không có vô số thông báo lỗi như apt-clonetrên. 1/3 trong số những lỗi được đăng trong bình luận ở trên.
WinEunuuchs2Unix

Nhìn tuyệt vời, nhưng có thể sử dụng mintbackup trong Ubuntu 18.04 không?
WebCome

1

Cài đặt thường được lưu trữ trong /etc/. vân vân có thể tiện dụng. Mục đích chính của nó là biến /etc/thành một kho lưu trữ git, nhưng nó cũng lọc ra một số phần mà bạn không muốn sao chép, nếu tôi hiểu rõ. Vì vậy, nếu bạn quen thuộc git, bạn có thể sử dụng tốt hơn etckeeperđể hợp nhất các thay đổi của mình vào bản cài đặt mới.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.