Bagaimana cara saya mendapatkan daftar paket yang tersedia (mis. Dihapus) di Debian?

19

Pada dasarnya yang saya cari adalah setara dengan Debian:

yum list available

untuk menunjukkan kepada saya paket mana yang tersedia (meskipun saat ini tidak diinstal) Saya lebih suka sesuatu yang dapat dijalankan dari konsol karena ini ada di server jarak jauh. Terima kasih.

orang aneh
sumber

Jawaban:

7

grep-dctrldan turunannya menyediakan cara yang bagus untuk menanyakan file cache yang tepat. (Anda dapat menginstal alat-alat ini di ubuntu dengan sudo apt-get install dctrl-tools)

Dalam hal paket yang tersedia (tetapi tidak harus diinstal), Anda dapat menggunakan grep-available. Misalnya, untuk mendaftar semua paket yang tersedia:

grep-available  -s Package .

Edit:

aptitude dapat menampilkan daftar Paket Tidak Terpasang dengan meluncurkannya.

Anda juga bisa mendapatkan daftar paket yang tidak diinstal dengan aptitudemenggunakan:

aptitude -F "%p" search "?not(?installed)"

Perhatikan bahwa dengan paket multi-lengkungan yang baru, Anda akan mendapatkan paket untuk arsitektur lain yang tercantum dalam hasil ini. Sebagai contoh, saya mendapatkan:

aptitude -F "%p" search "?not(?installed)"  | grep "^bash:"
bash:i386

Saya sudah bashmenginstal paketnya, tetapi ini adalah versi amd64, karena OS saya diinstal dengan versi amd64 dari Ubuntu Precise. Jika Anda tidak ingin melihat paket-paket ini untuk arsitektur lain, Anda dapat mengecualikan baris yang mengandung ::

aptitude -F "%p" search "?not(?installed)"  | grep -v ':'
ℝaphink
sumber
Terima kasih tetapi masalah dengan ini adalah saya harus menjelajah seluruh daftar paket untuk repositori yang saya pilih. Mungkin cara yang lebih baik untuk memvisualisasikan masalah adalah sebagai berikut: bayangkan X adalah set universal semua paket dalam repositori paket Debian yang ditunjuk oleh server saya dan Y adalah set paket yang saya instal pada server tersebut; apa, pada dasarnya, yang saya cari adalah X - Y. Sekarang, saya menyadari saya bisa melakukan ini secara terprogram tetapi saya berharap akan ada perintah yang relatif sederhana untuk mencapai hasil yang sama pada sistem Debian.
freakwincy
Baru saja melihat jawaban Anda yang diedit. Persis seperti yang saya cari! Terima kasih.
freakwincy
NB Saya akan memilih-up jawaban Anda tetapi saya belum mengumpulkan poin reputasi yang cukup.
freakwincy
Tidak masalah. Selamat datang di SU omong-omong ;-)
ℝaphink
16

apt-cache digunakan untuk menanyakan cache paket:

apt-cache pkgnames | menyortir
hal pencarian apt-cache
apt-cache search --names-satunya hal
grawity
sumber
terima kasih tapi saya khawatir itu tidak berhasil. Saya membandingkan daftar yang dihasilkan oleh perintah pertama dengan daftar paket-paket yang diinstal sebelumnya yang saya peroleh dengan demikian: code"dpkg --get-choices | grep '[[: space:]] instal $' | awk '{print $ 1}' > install.txt "dan ditemukan duplikat. Dua perintah lain yang Anda berikan tidak akan berfungsi karena saya tidak mencari paket tertentu melainkan paket apa pun yang saat ini tidak diinstal.
freakwincy
2

Gunakan apt-cacheuntuk tujuan ini:

apt-cache search package

Karena apt-cachehanya menggunakan cache paket pada sistem, pastikan cache ini terbaru:

apt-get update

Anda juga dapat menggunakan utilitas apt-filejika Anda tahu nama file yang ingin Anda cari; ini harus ditambahkan ke sistem. Sebagai contoh:

apt-file search somefilename

Saya cenderung menggunakan apt-cachesalah satu cara berikut:

apt-cache search package | sort | grep item

(Ini menunjukkan Anda hal-hal yang memiliki item sebenarnya dalam ringkasan atau nama mereka.)

apt-cache search thing | sort | less

(Ini mencari sesuatu kemudian mengurutkannya untuk dilihat dengan menyenangkan less.)

Mei
sumber
2

Pandangan saya adalah bekerja dengan perintah yang diinstal secara default, dan menghindari paket tambahan jika tidak ada alasan khusus.

Dalam Debian saya dengan GNU, bash perintah-perintah sederhana ini

apt list
apt list --all-versions

memberikan daftar apa saja (diinstal dan tidak diinstal). Saya kemudian dapat membatasi hasil dengan grep "diinstal" atau grep -v "diinstal". Itu juga dapat dikombinasikan dengan satu atau lebih nama paket (tanda liar diterima).

Switch "-all-versi" memberikan garis terpisah keluaran untuk setiap versi paket (stabil, pengujian, tidak stabil, eksperimental).

"Daftar apt" yang sederhana hanya memberikan satu (prioritas tertinggi) versi.

George Vasiliou
sumber
0

Mengambil pertanyaan Anda secara ketat (Anda ingin menunjukkan daftar paket yang tidak diinstal), coba gunakan

(diedit sesuai dengan komentar di bawah)

# apt-get update
# dpkg -l '*' | egrep --invert-match '^i'

Tidak yakin dengan sintaks yang tepat, karena saya menulis ini di kotak windows dan tidak ada cara untuk memeriksa. Mungkin mencoba mengubah apa yang Anda mengerti

PPC
sumber
Ini daftar paket yang diinstal , tidak dihapus .
ℝaphink
@ Rafink: Maaf, saya mengedit posting untuk memperbaikinya
PPC
Tidak masalah, tetapi Anda masih belum mendaftar paket yang tidak diinstal. Dengan mengecualikan paket 'ii' (yang sebenarnya bukan apa yang dilakukan ekspresi Anda, Anda harus menggunakan '^ii'daripada '[ii]'), Anda kehilangan paket yang diinstal tetapi tidak dikonfigurasikan misalnya (suka iFatau iHmisalnya).
ℝaphink
@PPC: Sayangnya, ini tidak berfungsi baik karena dpkg -l hanya mendaftar paket yang sudah diinstal yaitu semua paket diawali dengan "ii" jadi piping hasilnya ke grep menggunakan flag --invert-match atau -v hanya menghasilkan serangkaian tanda hubung yang merupakan pemisah tajuk daftar. Bagaimanapun, terima kasih.
freakwincy
@ freakwincy: Benar! Maaf karena tidak mengujinya sebelum mengirim (bekerja di windows). Menurut manual, Anda harus menggunakan "dpkg -l '*'" untuk mendaftar semua paket.
PPC