Bagaimana cara mentransfer paket dan pengaturan yang diinstal dari satu distro ke distro lainnya?

15

Saya telah menjelajahi pembelajaran dan tentang sistem Linux melalui VirtualBox selama beberapa bulan dan memutuskan bahwa saya ingin menjadikannya OS utama saya dan memasangnya di hard-drive saya. Saya memiliki sejumlah file, paket, dan pengaturan (seperti perubahan pada .bashrc) yang ingin saya bawa ketika saya menginstalnya langsung ke HDD saya, jadi bagaimana saya bisa melakukan ini? Juga, sekarang saya menjalankan Ubuntu jika saya memutuskan untuk beralih ke Debian atau RPM yang serupa, distro berbasis RHEL apakah itu proses yang sama? Pertimbangan apa yang harus saya perhitungkan jika ada?

Tony
sumber
Ubuntu adalah turunan Debian. Semua turunan Debian sangat mirip, seperti dalam paket semua memiliki nama yang sama, manajemen paket, konfigurasi dll dan semuanya sangat mirip. Namun, distribusi Red Hat seperti Fedora, CentOS dll tidak begitu mirip dalam hal-hal seperti manajemen paket, meskipun pada dasarnya mereka adalah perangkat lunak yang sama. Anda harus dapat sebagian besar dapat menyalin pengaturan / konfigurasi dll dari OS di keluarga Debian ke orang-orang dalam keluarga RH, meskipun.
Faheem Mitha

Jawaban:

31

Manajemen paket adalah salah satu pembeda utama antara distribusi. Di antara distribusi yang tidak terkait, Anda tidak akan dapat melakukan apa pun secara otomatis. Distribusi yang berbeda memecah perangkat lunak menjadi beberapa paket dan menggunakan nama yang berbeda.

Di antara mesin yang menjalankan versi yang sama dari distribusi yang sama, Anda dapat mencapai instalasi serupa dengan mereproduksi daftar paket yang diinstal. Pada sistem yang menggunakan apt, seperti Debian dan turunannya (Ubuntu, Mint, ...), gunakan apt-clone. Lihat Bagaimana cara mereplikasi pilihan paket yang diinstal dari satu sistem Debian ke yang lain? (Debian Wheezy) untuk perintah yang tepat. Singkatnya, di mesin lama:

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

Salin foo.apt-clone.tar.gzke mesin baru dan jalankan

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

apt-clonedapat bekerja di antara distribusi terkait, misalnya Debian dan Ubuntu. Gunakan restore-new-distrosebagai ganti restoredalam kasus itu. Jika itu gagal, gunakan metode manual dengan dpkg --get-selectionsdan apt-mark, dan mengutak-atik daftar paket sampai apt puas.

Untuk pengaturan Anda sendiri, ini lebih sederhana: cukup salin file dot dari direktori home Anda. Sebagai aturan, konfigurasikan hal-hal yang tidak terkait dengan perangkat keras di akun Anda, bukan di seluruh sistem; yang akan membuatnya mudah untuk menyalinnya ke komputer lain.

Gilles 'SANGAT berhenti menjadi jahat'
sumber
Keuntungan dari jawaban kedua di bawah ini adalah metode ini lebih cepat karena internet lambat dilewati dan USB 3 lebih cepat dapat digunakan. Mungkin ada keuntungan lain juga ???
WinEunuuchs2Unix
@ WinEunuuchs2Unix Daftar paket hanya beberapa kilobyte. Mentransfernya melalui internet membutuhkan waktu lebih sedikit daripada menemukan dongle USB, apalagi memasangnya dan memilih file yang akan disalin dan sebagainya.
Gilles 'SANGAT berhenti menjadi jahat'
@ Gilles konyol aku. Saya pikir foo.apt-clone.tar.gzbola tar terkompresi dari semua binari diinstal. Tidak menyadari itu hanyalah daftar paket yang diinstal. Apakah itu termasuk nomor versi yang ditahan juga?
WinEunuuchs2Unix
Banyak kesalahan.... 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 Saya pikir apt-clone menyertakan semua status dpkg termasuk paket yang dimiliki. Perhatikan bahwa jika Anda ingin mengkloning instalasi penuh, itu masalah yang sama sekali berbeda: titik apt-clone adalah ketika Anda memiliki bandwidth lebih banyak antara mesin 2 dan cermin paket daripada antara mesin 1 dan mesin 2 (atau bandwidth lebih murah, di bahwa Anda tidak ingin membuat mesin 1 terlalu sibuk saat Anda menyiapkan mesin 2). Apt-clone bekerja paling baik ketika semua versi paket pada mesin sumber dapat diinstal.
Gilles 'SANGAT berhenti menjadi jahat'
10

Jika Anda tinggal di dalam keluarga Debian, ya, Anda dapat mentransfernya dengan sangat mudah. Cukup daftarkan paket yang saat ini diinstal, simpan ke file dan kemudian baca file itu untuk menginstalnya kembali:

  1. Simpan paket yang diinstal di file installed:

    dpkg -l | grep ^ii | awk '{print $2}' > installed
    
  2. Di distro berbasis Debian Anda yang baru diinstal, instal paket yang disimpan:

    sudo apt-get install $(cat installed)
    

Atau, Anda bisa menggunakan alat GUI untuk ini. Mint memiliki yang sangat bagus yang disebut mintbackup:

tangkapan layar mintbackup

Kemudian, dari instalasi baru:

tangkapan layar mintbackup lainnya

terdon
sumber
Apakah dpkg --get-selections | awk '$2 == "install" {print $1}' > instlpkgakan setara? Juga, bagaimana dengan menggunakan yum install alien di RHEL / Fedora / CentOS?
Sergiy Kolodyazhnyy
1
Jangan hanya mereproduksi pilihan, mereproduksi daftar paket yang diinstal secara otomatis, jika tidak menjadi berantakan. Ada apt-clonesekarang, yang mengotomatiskan ini. Lihat unix.stackexchange.com/questions/191662/...
Gilles 'SO- stop being evil'
Akan sangat membantu untuk menyalin paket yang diadakan juga. yaitu Conky 1.9 diadakan sehingga Conky 1.10 tidak mengacaukan semuanya. Sebagian dari jawabannya ada di utas AskUbuntu .
WinEunuuchs2Unix
1
Jawaban ini lebih cepat daripada jawaban pilihan teratas dan tidak memiliki banyak pesan kesalahan seperti di apt-cloneatas. 1/3 dari kesalahan yang diposting di komentar di atas.
WinEunuuchs2Unix
Terlihat hebat, tetapi apakah mungkin menggunakan mintbackup di ubuntu 18.04?
WebComer
1

Pengaturan biasanya disimpan di /etc/. penjaga dll bisa berguna. Tujuan utamanya adalah untuk berubah /etc/menjadi repositori git, tetapi juga menyaring beberapa bagian yang tidak ingin Anda salin, jika saya mengerti dengan baik. Jadi, jika Anda terbiasa git, Anda mungkin lebih baik menggunakan etckeeperuntuk menggabungkan perubahan Anda ke dalam instalasi baru.

Rolf
sumber