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-filevà dlocate.
apt-filetì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.
dlocatelà 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-filedà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 sudotạo bộ đệm của người dùng; với sudobộ đệ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 xrandrthực thi nào là:
apt-file search xrandr
Nó liệt kê nhiều gói với unxrandr, lxrandr.mohoặ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 -SVÀ 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 dpkggó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/ncxuấ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-alternativescuộ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-traditionalgó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:~$