Cara membuat daftar paket yang diinstal agar mudah / otomatis menginstal ulang setelah disk diformat

8

Saya akan mengubah sistem saya dari 32 bit menjadi 64 bit, dan akan sama dengan yang saya miliki sebelumnya, Debian Squeeze, tetapi saya tidak ingin kehilangan program yang saya instal sebelumnya, karena saya tidak ingat nama semuanya.

Jadi saya ingin perintah untuk melakukan ini untuk saya, simpan nama semua program yang saya instal pada file, tetapi bukan program standar yang datang dengan sistem, dan ketika saya menggunakan sistem lain saya akan menyebutkan nama file dan direktori Anda untuk semuanya diinstal secara otomatis.

Satu pertanyaan lagi: apakah mungkin melakukan ini dengan program yang diinstal secara manual dpkg-i package.deb? Jika demikian, bagaimana saya bisa melakukan itu?

Zignd
sumber

Jawaban:

7

Sudahkah Anda mencoba menggunakannya dpkg --get-selections >packages? Jika Anda ingin mengecualikan beberapa paket, Anda dapat mengedit file output packages. Setelah selesai, transfer ke sistem target dan katakan:

dpkg --set-selections <packages

Dan paket akan ditandai untuk instalasi. Kemungkinan besar Anda juga perlu mengatakannya aptitude update; aptitude dist-upgrade.

Pertanyaan lain: jika paket-paket itu adalah paket i386arsitektur, dan Anda telah multiarchmenginstalnya, Anda dapat menginstalnya .debseperti biasa dpkg -i package.deb. Tetapi mungkin lebih baik untuk menginvestigasi berdasarkan kasus per kasus dan menginstal versi 64 bit dari paket-paket yang memilikinya.

Alexios
sumber
Terima kasih, Anda benar-benar membantu saya ketika Anda mengatakan tentang paket yang sudah diinstal dalam arsitektur i386, saya tidak memikirkannya, saya pikir lebih baik menginstal ulang yang lain.
Zignd
9

Pada versi Debian saat ini, Anda bisa mendapatkan daftar paket yang diinstal secara eksplisit

apt-mark showmanual

Bagi mereka yang menjalankan versi kuno Debian di mana apt-mark showmanualtidak ada, atau jika Anda ingin melakukan pilihan tambahan, Anda bisa menggunakan aptitude.

aptitude search '~i !~M' -F %p >package.list

~icocok dengan paket yang diinstal; !~Mmenghilangkan paket yang diinstal secara otomatis sebagai ketergantungan dari beberapa paket lainnya. -F %pmengubah format output untuk hanya menyertakan nama paket.

Anda kemudian dapat menginstal paket-paket itu dengan

apt-get install $(cat package.list)

Debian squeeze tidak ada apt-mark showmanual, tetapi ia memiliki apt-mark showautodaftar paket yang diinstal secara otomatis. Jika Anda menggunakan ini, Anda dapat mencantumkan semua paket di sistem lama dengan dpkg --get-selections >package.list, kembalikan semua ini, dan kemudian tandai paket-paket otomatis dengan apt-mark markauto. Untuk kasus penggunaan Anda (32-bit ke 64-bit), pendekatan ini cenderung meninggalkan beberapa perpustakaan ditandai sebagai manual, karena mereka memiliki nama yang berbeda di bawah arsitektur yang berbeda.

Perhatikan bahwa jika use case adalah untuk mereproduksi instalasi yang identik, daripada menyimpan set paket tetapi mengubah arsitektur, sekarang ada alat yang disebut apt-clone (didistribusikan dalam Debian sejak mengi) yang melakukan semuanya secara otomatis.

Gilles 'SANGAT berhenti menjadi jahat'
sumber
Sayangnya, ini tidak sempurna. Ketika saya melakukan ini, hal pertama yang terdaftar adalah "acl", yang saya tidak memuat secara eksplisit. Melihat rdepends, tampaknya systemd tergantung pada ini, dan di Debian 8 yang sudah diinstal. Dan, systemd juga ada di daftar ini. Jadi meskipun systemd dan acl datang diinstal, aptitude tidak mengidentifikasi mereka sebagai "otomatis". Mungkinkah ini kekurangan dalam bakat?
Liam
@Liam Saya pikir installer tidak menandai paket apa pun sebagai otomatis. Bahkan jika itu, yang akan masuk akal untuk perpustakaan, paket seperti aclmungkin dianggap sebagai bagian penting dari sistem dasar dan akan ditandai sebagai diinstal secara manual. Itu "secara manual" diinstal oleh installer awal daripada oleh pengguna, tetapi meskipun demikian, arti dari "diinstal secara otomatis" adalah "Anda dapat dengan aman menghapus ini jika tidak merusak dependensi", dan paket mendasar diperlukan untuk membuat sistem bekerja dengan baik tidak sesuai dengan tagihan.
Gilles 'SANGAT berhenti menjadi jahat'
1

Saya tidak melihat cara sederhana dan standar untuk melakukannya. Saya khawatir Anda harus mengutak - atik dpkglog dan opsi, karena dpkgtidak membedakan "program standar yang menyertai sistem" dan yang lainnya.

INI TIDAK AKAN TERJALAN , Saya lebih suka memperjelas dengan menggunakan teks tebal huruf besar , tetapi Anda dapat melakukan sesuatu seperti ini

  • Ekstrak daftar perangkat lunak yang diinstal dari /var/log/dpkg.log*file.

  • Hapus yang diinstal selama instalasi sistem. (Gunakan waktu instal untuk mendeteksi mereka)

  • Simpan daftar dalam dpkg --get-selectionsformat

Dan lagi! Saat sistem Anda aktif dan berjalan, pasang kembali program Anda dengan

 apt-get update
 dpkg --set-selections < yourSelection
 apt-get -u dselect-upgrade
deviantkarot
sumber