Pertanyaan Bagaimana daftar semua paket yang diinstal


Saya ingin menampilkan daftar semua paket yang terinstal ke dalam file teks sehingga saya dapat memeriksanya dan menginstal secara massal pada sistem lain. Bagaimana saya melakukan ini?


1575
2017-12-17 02:08


asal


Ini sudah dijawab sini. - Simon Quigley
Wow, melalui jawaban sepertinya ada banyak cara untuk mencapai ini: / - Madivad
Bagaimana saya melakukan instalasi massal pada sistem baru dari file teks seperti itu? - Elysium
@Madivad para manajer paket ini seharusnya membuat hidup lebih mudah ... - René Nyffenegger
Pertanyaan serupa di unix.stackexchange.com "Daftar paket berdasarkan tanggal pemasangan" - JamesThomasMoon1979


Jawaban:


Ubuntu 14.04 ke atas

Itu apt alat pada Ubuntu 14.04 ke atas membuat ini sangat mudah.

apt list --installed

Versi yang lebih lama

Untuk mendapatkan daftar paket yang diinstal secara lokal, lakukan ini di terminal Anda:

dpkg --get-selections | grep -v deinstall

(Itu -v tag "inverts" grep untuk mengembalikan baris yang tidak cocok)

Untuk mendapatkan daftar paket tertentu yang diinstal:

dpkg --get-selections | grep postgres

Untuk menyimpan daftar itu ke file teks yang disebut packages di desktop Anda lakukan ini di terminal Anda:

dpkg --get-selections | grep -v deinstall > ~/Desktop/packages

Atau, gunakan saja

dpkg -l

(Anda tidak perlu menjalankan salah satu dari perintah ini sebagai superuser, jadi tidak sudo atau varian lain yang diperlukan di sini)


1727
2017-12-17 03:02



Kemudian, ketika menginstal ke komputer baru, lakukan cat ~/Desktop/packages > sudo dpkg --set-selections && sudo apt-get dselect upgrade  sumber - koanhead
Sintaks untuk dpkg mungkin telah sedikit berubah sejak 2006 karena perintah itu tidak bekerja untuk saya, @koanhead. sudo dpkg --set-selections < ~/Desktop/packages && sudo apt-get -u dselect-upgrademelakukan triknya. - James
Perhatikan bahwa ini tidak akan melacak paket yang secara eksplisit diinstal oleh pengguna dan yang diinstal sebagai dependensi. Ini berarti bahwa jika Anda menggunakan metode ini untuk membuat ulang pengaturan Anda di komputer lain, apt tidak akan dapat menghapus dependensi yang tidak dibutuhkan ketika Anda menghapus paket yang diberikan. - intuited
Sangat menyedihkan dan menakjubkan bahwa komentar @intuited tidak dipahami oleh komunitas. Akankah lebih banyak kontributor "berperingkat tinggi" berhenti untuk berpikir lebih jauh sebelum memberikan saran yang hanya memuat kembali paket lama pada versi ubuntu baru bukanlah ide yang bagus (?). Dengan semua opsi dpkg, saya masih tidak melihat salah satu yang menarik paket-paket 'yang secara eksplisit' diinstal oleh pengguna agar daftar itu dapat dimuat ulang dan diizinkan untuk menginstal dependensinya; Saya ingin mengetahuinya - tolong bagikan info itu. Sementara itu, buat daftar paket yang benar-benar Anda perlukan untuk menginstal ulang dan menjalankannya - Ricalsin
Kita semua tahu bahwa linux membedakan orang-orang tanpa memori fotografi, tetapi serius, apa yang salah dengan itu apt list installed. Suatu hari kita harus menghentikan secara sistematis kegagalan prinsip "menjaga hal-hal sederhana yang mudah".


Untuk mendapatkan paket yang terinstal secara jelas (tidak hanya diinstal sebagai dependensi), Anda dapat menjalankannya

aptitude search '~i!~M'

Ini juga akan menyertakan deskripsi singkat, yang mungkin Anda inginkan. Jika tidak, tambahkan juga opsi -F '%p', seperti yang disebutkan oleh karthick87.


Namun pilihan lain tampaknya menyalin file /var/lib/apt/extended_states, yang merupakan basis data file teks dalam format ini:

Package: grub-common
Architecture: amd64
Auto-Installed: 0

Package: linux-headers-2.6.35-22-generic
Architecture: amd64
Auto-Installed: 1

Auto-Installed: 0 menunjukkan bahwa paket itu secara tegas dipasang dan bukan hanya ketergantungan.


380
2017-08-28 21:35



Ini harus menjadi jawaban yang benar. Mengapa daftar dependensi? - Stavros Korokithakis
Ini harus jadilah jawabannya, tetapi gunakan bakat agak tidak bisa diandalkan karena Multiarch saat ini (perbaikan di jalan), sayangnya. Masih +1 untuk menunjukkan hanya daftar paket yang dipasang secara eksplisit dan cara untuk melakukan ini (meskipun itu tidak akan berfungsi pada 11.10+ saat ini). - gertvdijk
@intuited "Fix Dirilis" untuk Precise (beberapa waktu lalu). :) - gertvdijk
Ini mencantumkan semua paket, bukan hanya paket yang diinstal secara manual di Ubuntu 13.10. - Eamon Nerbonne
pada Ubuntu-15.10, harus menginstal aptitude terlebih dahulu misalnya: sudo apt-get install aptitude - Mark Mikofski


Buat cadangan paket apa yang saat ini terpasang:

dpkg --get-selections > list.txt

Kemudian (pada sistem lain) mengembalikan instalasi dari daftar itu:

dpkg --clear-selections
sudo dpkg --set-selections < list.txt

Untuk menyingkirkan paket basi:

sudo apt-get autoremove

Agar terinstal seperti pada waktu pencadangan (yaitu menginstal paket yang diatur oleh dpkg --set-selections):

sudo apt-get dselect-upgrade

179
2018-05-16 18:26



Kiat hebat tentang memulihkan di komputer lain. +1. - Drew Noakes
bermigrasi antara 2 mesin ubuntu 12.04 yang berbeda pendekatan ini merusak sistem saya. butuh beberapa saat sampai saya menyadari itu entah bagaimana ubuntu-desktop dihapus instalasinya - mungkin karena salah satu perintah dpkg. hati-hati, butuh waktu berjam-jam untuk memperbaiki kerusakan! - Karl Frisk
Dan terkadang sistem memperbarui aplikasi yang secara khusus Anda inginkan agar sistem tidak menyentuhnya, jalankan ini di akhir perintah sudo apt-mark hold name-your-package  . Ini akan mencegah apt-get dari upgrade ke versi saat ini yang merupakan default untuk proses pembaruan. - Faron


Untuk daftar semua paket sengaja dipasang (bukan sebagai dependensi) dengan perintah apt, jalankan yang berikut:

(zcat $(ls -tr /var/log/apt/history.log*.gz); cat /var/log/apt/history.log) 2>/dev/null |
  egrep '^(Start-Date:|Commandline:)' |
  grep -v aptdaemon |
  egrep '^Commandline:'

Ini menyediakan tampilan berbasis waktu terbalik, dengan perintah yang lebih lama yang tercantum pertama:

Commandline: apt-get install k3b
Commandline: apt-get install jhead
...

Data pemasangan juga menunjukkan penggunaan sinaptik, tetapi tanpa detail (sama dengan tanggal pemasangan):

(zcat $(ls -tr /var/log/apt/history.log*.gz); cat /var/log/apt/history.log) 2>/dev/null |
  egrep '^(Start-Date:|Commandline:)' |
  grep -v aptdaemon |
  egrep -B1 '^Commandline:'

menyediakan hal-hal berikut:

Start-Date: 2012-09-23  14:02:14
Commandline: apt-get install gparted
Start-Date: 2012-09-23  15:02:51
Commandline: apt-get install sysstat
...

174
2018-02-02 10:39



Atau (dengan zgrep dan menghapus pesan pembaruan): zgrep -hE '^(Start-Date:|Commandline:)' $(ls -tr /var/log/apt/history.log*.gz ) | egrep -v 'aptdaemon|upgrade' | egrep -B1 '^Commandline:' - belacqua
Apakah pendekatan ini melewatkan paket yang diinstal dpkg?? - drevicko
Sementara jawaban sederhana di atas bagus untuk pengguna umum. Metode ini sejauh ini adalah yang terbaik untuk backtracking semua kustomisasi yang dilakukan ke mesin, karena ini juga menunjukkan apa yang dihapus, atau ditambahkan, dari gambar dasar, karena daftar mereka dalam urutan itu dilakukan, dan membantu Anda mengingat yang urutan yang benar untuk menambahkannya kembali ke sistem lain. - AllGamer
@drevicko Anda benar, itu tidak mencantumkan paket yang diinstal dengan dpkg - Steve Buzonas
Ini sangat berguna untuk tetap teratur-- otak saya lebih memilih seperti ini untuk alasan apa pun .. - JeremyFelix


apt-mark showmanual

halaman manual:

akan mencetak daftar paket yang dipasang secara manual

Jadi, seharusnya hanya memberikan daftar paket yang terinstal secara eksplisit (meskipun ini termasuk paket yang merupakan bagian dari instalasi awal default) tanpa semua dependensi termasuk karena paket-paket ini sedang diinstal.

Untuk menampilkan hasilnya ke dalam file teks:

apt-mark showmanual >list-installed.txt

60
2017-07-10 13:43



Pada Debian "apt-mark showmanual" tidak berfungsi "memeras" tetapi bekerja pada "wheezy" - Wadih M.
Seperti kebanyakan jawaban lainnya, apt-mark showmanual tidak benar. Ini juga mencantumkan banyak paket yang diinstal secara otomatis, mungkin bagian dari pemasangan dasar. - mivk
Nah pertanyaannya adalah untuk paket yang diinstal dan ini memberikan semua paket yang terinstal dikurangi dependensi yang terinstal secara otomatis. Itu termasuk paket awal sebagai bagian dari instalasi awal. Saya kira Anda bisa menjalankan ini pada instalasi baru untuk mendapatkan daftar instalasi default dan kemudian kurangi itu dari ini untuk melihat perbedaannya. - Tim Tisdall


dpkg-query (dari pada dpkg --get-selections, yang mencantumkan beberapa paket yang tidak diinstal) sebagai berikut:

dpkg-query -W -f='${PackageSpec} ${Status}\n' | grep installed |  sort -u | cut -f1 -d \ > installed-pkgs

Atau:

dpkg -l | grep ^ii | sed 's_  _\t_g' | cut -f 2 > installed-pkgs

38
2018-05-16 18:40



Typying # for pkg in `cat installed-pkgs`; do apt-get install -y $pkg; done dalam sistem kedua saya telah membuat ini sehingga akan menginstal Paket. - xyz
@julianromera: apt-get install -y $(< installed-pkgs) akan membuatnya sehingga apt-get berjalan hanya sekali dan menangani semua dependensi sekaligus. - jamadagni
@julianromera ... betulkan saya jika saya salah, tetapi buatlah aplikasi dengan dependensi sebelum melakukan penginstalan biasanya sudo apt-get build-dep name-package; sudo apt-get install name-package;  ? - Faron


Untuk daftar semua paket yang diinstal,

dpkg -l |awk '/^[hi]i/{print $2}' > 1.txt

atau

aptitude search -F '%p' '~i' > 1.txt

atau

dpkg --get-selections > 1.txt

catatan:
Anda akan mendapatkan file hasil 1.txt di folder rumah Anda atau Anda dapat menentukan jalur Anda sendiri.


36
2017-12-17 03:35