Memerintahkan untuk menemukan paket sumber biner?

33

Saya tahu ada whichperintah, yang menggemakan nama lengkap biner (misalnya which sh). Namun, saya cukup yakin ada perintah yang menggemakan paket yang menyediakan biner tertentu. Apakah ada perintah seperti itu? Jika demikian, apakah itu? Saya ingin dapat menjalankan ini:

commandName ls

dan dapatkan

coreutils

sebagai contoh.

Delan Azabani
sumber

Jawaban:

36

Saya kira Anda sedang mencari dpkg -Sperintah (juga lihat opsi yang sering digunakan untuk dpkg ).

nik
sumber
4
Terima kasih! dpkg -S `which COMMANDHERE`bekerja untukku.
Delan Azabani
Gentoo: qfile <name>
Sergei
dpkg -Smenemukan nama nama paket biner, yang dapat berbeda dari nama paket sumber (kode).
Tino
Hanya untuk kelengkapan, -Sadalah bentuk pendek dari --searchopsi, yang sebenarnya merupakan opsi untuk dpkg-queryperintah (tetapi dpkgjuga berfungsi)
waldyrious
10

Jika Anda ingin menemukan file dalam paket yang belum Anda instal, gunakan file apt

apt-get install -y apt-file
apt-file update

Kemudian, untuk menemukan sesuatu:

apt-file search /usr/bin/file

atau

apt-find search file

Di mana "file" adalah nama apa pun yang Anda cari.

Jika Anda tidak ingin melalui ini pada setiap sistem debian, Anda dapat menggunakan skrip ini:

#!/bin/bash
which apt-get >/dev/null || { echo apt-get not found >&2; exit 1; }
which apt-file >/dev/null || { apt-get install -y apt-file;  apt-file update; }
unset i; IFS=$'\x0a'; select i in $( apt-file search "/$@" ); do 
    test -n "$i" || break; apt-get install "${i%% *}"; done

Saya baru saja mengocoknya, tetapi tampaknya bekerja dengan baik.

Catatan: "dpkg -S" hanya menemukan hal-hal yang sudah Anda instal.

Orwellophile
sumber
3
Menggunakan -yparameter berbahaya, itu bisa mengatakan ya untuk sejumlah hal. Dalam skrip mungkin baik-baik saja, tetapi perintah pertama harus benar-benar dibaca apt-get install apt-filetanpa -ykarena Anda tidak bisa tahu seperti apa sistem pengguna.
jmiserez