Ubuntu, làm thế nào để thiết lập một máy mới như máy hiện có


27

Tôi có một thiết lập máy với các ứng dụng tôi cần và tôi muốn cài đặt tương tự trên hộp Ubuntu mới.

Có một kịch bản sẽ liệt kê tất cả các ứng dụng đã cài đặt, để tôi có thể khác giữa các hộp và thêm các mục bị thiếu?

Cảm ơn trước, Chris

Câu trả lời:


18

Cũng như các thủ thuật dpkg được đề cập bởi pjz, bạn cũng có thể muốn xem etckeeper ( hướng dẫn ) - một ứng dụng đặt / etc / * của bạn dưới sự kiểm soát phiên bản, giúp dễ dàng tìm thấy bất kỳ thay đổi nào bạn đã thực hiện và sao chép chúng sang các thay đổi khác máy chủ.

Ngoài ra, đối với danh sách ngắn hơn danh sách được tạo bởi phương pháp của pjz, bạn có thể sử dụng

$ deborphan -a --no-show-section > /tmp/mypackagelist

Điều này sẽ cung cấp cho bạn một danh sách các gói sẽ cài đặt tất cả các gói khác mà bạn yêu cầu làm phụ thuộc. Có thể hữu ích nếu bạn thực sự muốn xem qua danh sách. (dpkg --get-select sẽ tạo ra một danh sách loooong ). Ngoài ra, danh sách này đủ ngắn để bạn có thể thêm dòng mới và nhận xét các mục với '#'. Sau đó, khi cài đặt các gói bổ sung, bạn có thể làm

$ grep -v '#' /tmp/mypackagelist | xargs apt-get install -y

Bằng cách này, nếu có một số gói bạn chỉ muốn cài đặt trên một số máy, bạn không phải xóa chúng khỏi danh sách gói hoàn toàn.


etckeeper trông thực sự thú vị (+1).
jkp

17
dpkg --get-selections >/tmp/mypackagelist

nên làm thủ thuật. Sau đó, sau khi chắc chắn rằng /etc/apt/source.list trên máy mới có cùng một bộ mục như trên máy cũ, hãy sao chép mypackagelist sang máy mới và thực hiện:

cat mypackagelist | xargs apt-get -y install 

và bạn nên tốt để đi.

Lưu ý rằng dòng dpkg --get-select cũng là thông tin tốt để đưa vào / etc / dir của bạn một cách ngẫu nhiên - điều đó có nghĩa là bạn không phải bận tâm sao lưu / bin / và / usr / bin / và vì bạn biết những gói nào trên hệ thống.


Vâng, Jeff, nhưng làm thế nào về việc sửa đổi các tập tin cấu hình? Làm thế nào về các tùy chọn cấu hình lại dpkg? làm thế nào về tên máy chủ ... người dùng, chia sẻ, gắn kết ... Xem phản hồi của tôi về dddưới đây
elcuco

2

Diễn đàn Ubuntu có một câu trả lời tốt

  1. Trên máy cũ: $ dpkg --get-select> phần mềm đã cài đặt
    • Điều này nhận được danh sách các ứng dụng đã cài đặt của bạn
  2. Trên máy mới: $ dpkg - bộ lựa chọn
    • Điều này đặt máy mới để cài đặt các gói hiện không được cài đặt trên máy mới.
    • Thật thú vị khi xem máy mới có một số gói không được cài đặt trên máy cũ hay không, vì vậy bạn có thể tìm thấy lệnh dpkg --get-selections> trên máy mới, sau đó sử dụng diff để so sánh các tệp đầu ra từ cả hai.
  3. Cuối cùng, trên máy mới: $ dselect và các gói sẽ được cài đặt.

Một số liên kết bổ sung từ các cuộc thảo luận diễn đàn:

  1. Đừng quên các phím gpg của bạn (từ cùng một chủ đề)
  2. Cách cài đặt tất cả các gói mong muốn và gỡ cài đặt tất cả các gói không mong muốn

2

Các lệnh dpkg tốt hơn có thể là [máy gốc]

dpkg --get-selections | grep -v deinstall > packages_list

sau đó khi cài đặt [máy mới; sau khi chuyển gói_list]

sudo dpkg --set-selections < packages_list
sudo apt-get -u dselect-upgrade

1

Nếu bạn không phải là người hâm mộ CLI (mặc dù bạn thực sự nên như vậy), bạn có thể sử dụng trình quản lý gói Synaptic để lưu hình ảnh của các gói đã cài đặt và sử dụng tệp đó (một lần nữa qua Synaptic) để tải máy mới. Trong tùy chọn tệp / lưu đánh dấu, có một hộp kiểm gọi là "lưu trạng thái đầy đủ".


Tôi nghĩ rằng đây là phương pháp mà Cory tìm thấy
jbdavid

1

Tại sao bạn không sao chép máy bằng cách sử dụng dd?


1
Điều này. Chỉ cần sao chép máy và thay đổi tên, đó là cách nhanh nhất để làm điều đó.
pjc50


1

Sử dụng FSArchiver để sao chép các máy là hoàn toàn chấp nhận được. Mặt khác, đây là các cặp lệnh hữu ích, nửa đầu bạn cũng có thể thêm vào cron sao lưu của mình:

debconf-get-selections
debconf-set-selections

~

aptitude-create-state-bundle
aptitude-run-state-bundle --unpack

~

dpkg --get-selections
dpkg --clear-selections; dpkg --set-selections

Vị trí bạn nên nhân rộng là / etc và / var. Các lệnh trên thao tác trực tiếp một vài tệp trong / var và một số đoạn mã trong / etc gián tiếp thông qua debconf. Bạn sẽ nhận được hiệu ứng tương tự bằng cách chỉ cần sao chép các cây con đó và chạy năng khiếu.


0

Tôi đoán Docker sẽ là cách để thực hiện điều này ngay bây giờ - xác định các yêu cầu trong Dockerfile - sau đó bạn có thể chạy nó trên bất kỳ máy chủ Docker nào.

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.