Bagaimana saya bisa tahu program apa yang berisi beberapa paket apt-get?

17

Saya ingin tahu apa yang diinstal oleh beberapa paket tertentu , misalnya, ketika menginstal ncurses, saya menemukan TABkunci itu mengembang:

sudo apt-get install ncurses-

memperlihatkan:

ncurses-base      ncurses-doc       ncurses-hexedit
ncurses-bin       ncurses-examples  ncurses-term

Bagaimana saya bisa tahu apa, katakanlah, ncurses-termmenginstal? Saya tertarik terutama pada program, tetapi perpustakaan dan tipe file lainnya juga bisa berguna.

Metode baris perintah , jika mungkin, akan lebih disukai (yang lain juga diterima).

Sopalajo de Arrierez
sumber
Ketika Anda mengatakan "program" apakah Anda berbicara tentang binari?
Braiam
Biner dan skrip, jika memungkinkan, terima kasih, @Braiam.
Sopalajo de Arrierez

Jawaban:

21

Berikut adalah beberapa opsi, ini akan mencantumkan semua file yang diinstal oleh sebuah paket:

A. Daftar semua file yang termasuk dalam paket

  1. Untuk paket yang diinstal

    dpkg -L ncurses-term
    
  2. Untuk semua paket, diinstal atau tidak

    apt-file -F list ncurses-term
    

    The -Fbergantian dari pencocokan pola sehingga hanya paket yang tepat pertandingan Nama dikembalikan. Anda mungkin perlu menginstal apt-filedengan sudo apt-get install apt-filedan kemudian memperbarui databasenya sudo apt-file update.

B. Mendaftar hanya file yang dapat dieksekusi yang termasuk dalam paket

  1. Untuk paket yang diinstal

    Cukup instal dlocate( sudo apt-get dlocate) dan jalankan:

    dlocate -lsbin ncurses-term 
    

    Sebagaimana dijelaskan dalam man dlocate:

    -lsbin Daftar path lengkap / nama file dari file yang dapat dieksekusi (jika ada) dalam paket

    Jika Anda tidak ingin menginstal paket tambahan, Anda dapat melakukan ini secara manual. Cukup kumpulkan daftar file dan temukan di antara mereka yang memiliki set bit yang dapat dieksekusi:

    apt-file -F list ncurses-term | cut -d ' ' -f 2 | 
        while read file; do [[ -x $file && -f $file ]] && echo "$file"; done
    

    Scriplet kecil di atas hanya akan mencetak path ( cut -d ' ' -f 2) dan kemudian meneruskannya melalui whileloop yang memeriksa apakah file tersebut dapat dieksekusi ( -x $file) dan jika itu adalah file biasa, tidak ada direktori atau symlink ( -f $file) dan mencetak namanya hanya jika melewati kedua tes .

  2. Untuk semua paket, diinstal atau tidak

    Tidak ada cara saya tahu untuk daftar hanya executable yang termasuk dalam paket yang dihapus. Namun, karena sebagian besar executable diinstal ke bindirektori, Anda dapat memperoleh sebagian besar dari mereka dengan menguraikan output:

     apt-file -F list ncurses-term | grep -Ew "bin|sbin"
    

    The -wpilihan cocok seluruh kata-kata, sehingga Anda tidak mendapatkan sesuatu dipasang di, misalnya, trashbinatau apa pun.


CATATAN : Tidak satu pun dari perintah di atas akan menghasilkan output apa pun untuk ncurses-termtetapi itu karena paket ini tidak menginstal file yang dapat dieksekusi. Namun, perintahnya berfungsi, cobalah dengan paket yang berbeda.

terdon
sumber
Hai terdon, apakah Anda yakin perintah harus bekerja pada aplikasi yang tidak diinstal? ketika saya mencoba, itu hanya menawarkan untuk menginstal. Mana yang tidak aneh, karena file .install (mungkin) diunduh dengan aplikasi?
Jacob Vlijm
@ Jacob ya, saya baru mencoba dengan paket yang saya tahu tidak diinstal dan apt-filemencantumkan isi paket. Bekerja pada pengujian Debian dan Ubuntu 13.10.
terdon
Aha, terima kasih, itu masuk akal saya hanya berpikir, karena ketergantungan ditampilkan juga pada aplikasi yang tidak diinstal.
Jacob Vlijm
4

Anda dapat menggunakan file-apt:

sudo apt-file update        
apt-file list package_name
Sylvain Pineau
sumber
3
Jika apt-filetidak diinstal Anda dapat menginstalnya dengan sudo apt-get install apt-file.
edwin
3

Ada kemungkinan menggunakan browser Anda (karena itu tidak memerlukan akses ke sistem APT). Misalnya, untuk daftar isi file dari paket "ncurses-term", cukup ketik

https://packages.debian.org/wheezy/all/ncurses-term/filelist

ke bilah alamat browser Anda (ganti "wheezy" sesuai kebutuhan) untuk Debian atau

http://packages.ubuntu.com/saucy/all/ncurses-term/filelist

untuk Ubuntu (ganti "cakep" sesuai kebutuhan).

Michael Kremser
sumber
Metode yang menarik. Daftar ini untuk paket Debian, jadi: apakah seharusnya sama untuk distro lain seperti Ubuntu atau Kali?
Sopalajo de Arrierez
1
@Sopalajo de Arrierez: Baca dengan tepat: Saya juga telah memposting tautan untuk paket yang sama (ncurses-term dalam contoh ini) untuk Ubuntu. Daftar file mungkin sama jika versi Ubuntu tertentu memiliki versi paket yang sama dari satu set Debian, tetapi itu belum tentu. Ubuntu, Kali, Aptosid, CrunchBang dan semua distribusi berbasis Debian lainnya dapat melakukan modifikasi pada paket sesuai keinginan mereka (terutama file seperti "README" atau file konfigurasi untuk sistem init).
Michael Kremser
Saya mengerti, @MichaelKremser. Jadi, seperti yang saya lihat, mencari di web untuk isi dari suatu paket itu berguna tetapi, lebih baik, Anda harus mencari pada daftar paket resmi dari distro spesifik Anda.
Sopalajo de Arrierez
1
@Sopalajo de Arrierez: Ya, benar. Jika Anda menggunakan Debian Wheezy, gunakan daftar paket untuk Debian Wheezy, jika Anda sedang menguji Debian, gunakan yang itu, jika Anda menggunakan Ubuntu Precise, ambil daftarnya. Selalu ada perbedaan, meskipun misalnya Ubuntu mengambil banyak paket dari Debian yang tidak dimodifikasi. Namun, ini dapat berubah kapan saja.
Michael Kremser