Làm cách nào để tìm hiểu gói Debian mà một tệp đến từ đâu?
Làm cách nào để tìm hiểu gói Debian mà một tệp đến từ đâu?
Câu trả lời:
Có một số ứng dụng trong Debian thực hiện nhiệm vụ này; kiểm tra trang này để biết mô tả Tôi sẽ đề cập đến hai trong số họ, apt-file
và dlocate
.
apt-file
tìm kiếm bộ đệm trong của nó, do đó cho phép bạn không cài đặt tất cả các gói bạn muốn tìm kiếm. Dưới đây bạn sẽ tìm thấy hướng dẫn chi tiết hơn.
dlocate
là một thay thế nhanh chóng cho dpkg -L
(lệnh liệt kê nội dung gói) và do đó, nó chỉ tìm kiếm các gói đã cài đặt. Tìm kiếm được thực hiện bởi dlocate -S file.name
.
Ngoài ra, bạn có thể tìm kiếm các gói trực tuyến sử dụng packages.debian.org máy chủ (các tìm kiếm nội dung của gói phần).
apt-file
Đó là một ý tưởng tốt để cập nhật đầu tiên:
sudo apt-get update
Xem những gì apt-file
dành cho:
apt-cache show apt-file
Cài đặt nó:
sudo apt-get install apt-file
Đọc dữ liệu từ kho lưu trữ (điều này cũng hoạt động mà không cần sudo
tạo bộ đệm của người dùng; với sudo
bộ đệm là toàn hệ thống):
sudo apt-file update
Thực hiện tìm kiếm. Trong ví dụ này, chúng tôi muốn biết gói xrandr
thực thi nào là:
apt-file search xrandr
Nó liệt kê nhiều gói với unxrandr
, lxrandr.mo
hoặc source_lxrandr.py
. Không hữu ích trong trường hợp của chúng tôi. Tìm kiếm thông minh hơn:
apt-file search -x /xrandr$
( $
biểu thị cuối dòng). Ví dụ đầu ra:
bash-completion: /usr/share/bash-completion/completions/xrandr
x11-xserver-utils: /usr/bin/xrandr
Kết quả đầu tiên trông không giống như thực thi, kết quả thứ hai thì không. Chúng tôi có thể điều tra thêm. Chạy:
apt-cache show x11-xserver-utils
Chơi lô tô! Đây là gói.
user@host:~$ dpkg-query -S /bin/bash
bash: /bin/bash
Trong đó bash là tên gói.
dpkg-query -S
VÀ nó sẽ đưa bạn xuống con đường cài đặt các gói tùy chọn sai ..
Một cách khác:
$ dpkg -S /bin/bash
bash: /bin/bash
Trên Ubuntu của tôi ít nhất, cả hai dường như đều nằm trong dpkg
gói, vì vậy không có lợi thế thực sự cho bất kỳ ứng dụng cụ thể nào ...
Các tệp được tạo cài đặt sẽ không được tìm thấy bởi dpkg -S
, như đã đề cập tại: https://askubfox.com/a/667227/52975
Ví dụ, /bin/nc
xuất hiện khi bạn cài đặt gói netcat-openbsd
.
Nhưng khi:
dpkg -S /bin/nc
chúng tôi nhận được dpkg-query: no path found matching pattern /bin/nc
.
Điều này xảy ra bởi vì /bin/nc
được tạo bởi update-alternatives
cuộc gọi trong tập lệnh postinst được chạy sau khi cài đặt.
Nó hoạt động như thế này vì một phiên bản khác /bin/nc
được cung cấp bởi netcat-traditional
gói.
Tôi không nghĩ có một cách chung để tìm các tệp được tạo như vậy. Trong trường hợp cụ thể của các liên kết tượng trưng thay thế, chúng ta chỉ cần theo liên kết với readlink -f
:
dpkg -S "$(readlink -f /bin/nc)"
Không quen thuộc với Debian, tôi đã gặp khó khăn khi thử điều này:
kearnsp@xubuntuvb:~$ dpkg -S /usr/bin/vncviewer
dpkg-query: no path found matching pattern /usr/bin/vncviewer
kearnsp@xubuntuvb:~$
Một chút điều tra và tôi tìm thấy gói:
kearnsp@xubuntuvb:~$ ls -l /usr/bin/vncviewer
lrwxrwxrwx 1 root root 27 May 28 15:49 /usr/bin/vncviewer -> /etc/alternatives/vncviewer
kearnsp@xubuntuvb:~$ ls -l /etc/alternatives/vncviewer
lrwxrwxrwx 1 root root 20 May 28 15:49 /etc/alternatives/vncviewer -> /usr/bin/xvnc4viewer
kearnsp@xubuntuvb:~$ dpkg -S /usr/bin/xvnc4viewer
xvnc4viewer: /usr/bin/xvnc4viewer
kearnsp@xubuntuvb:~$