Як дізнатись, з якого пакета Debian прийшов файл?
Як дізнатись, з якого пакета Debian прийшов файл?
Відповіді:
У Debian є кілька утиліт, які виконують це завдання; перегляньте цю сторінку для опису. Я згадаю два з них, apt-fileі dlocate.
apt-fileздійснює пошук у внутрішньому кеші, що дозволяє не встановлювати всі пакунки, які ви хочете шукати. Нижче ви знайдете більш детальний посібник.
dlocateє швидкою альтернативою dpkg -L(команда, що містить список вмісту пакету), і тому вона шукає лише встановлені пакети. Пошук здійснює компанія dlocate -S file.name.
Також ви можете шукати пакети в Інтернеті з допомогою packages.debian.org сервера ( пошук вмісту пакетів розділу).
apt-fileПотрібно спочатку оновити:
sudo apt-get update
Подивіться, що apt-fileтаке:
apt-cache show apt-file
Встановіть його:
sudo apt-get install apt-file
Читання даних із сховищ (це також працює без, sudoале створює кеш користувача тоді; sudoкеш є загальносистемним):
sudo apt-file update
Провести пошук. У цьому прикладі ми хочемо знати, у якому пакунку xrandrвиконується:
apt-file search xrandr
Він перераховує безліч пакунків з unxrandr, lxrandr.moабо source_lxrandr.py. У нашому випадку не дуже корисно. Більш розумний пошук:
apt-file search -x /xrandr$
( $позначає кінець рядка). Приклад виводу:
bash-completion: /usr/share/bash-completion/completions/xrandr
x11-xserver-utils: /usr/bin/xrandr
Перший результат не схожий на виконуваний, а другий. Ми можемо дослідити далі. Виконати:
apt-cache show x11-xserver-utils
Бінго! Це пакет.
user@host:~$ dpkg-query -S /bin/bash
bash: /bin/bash
Де bash - назва пакету.
dpkg-query -SІ він посилає вас неправильним шляхом встановлення додаткових пакетів ..
Ще одна альтернатива:
$ dpkg -S /bin/bash
bash: /bin/bash
Принаймні, на моєму Ubuntu обидва, здається, є в dpkgпакеті, тому жодної реальної переваги перед будь-яким конкретним ...
Файли генеруватися ні знайдено dpkg -S, як уже згадувалося в: https://askubuntu.com/a/667227/52975
Наприклад, /bin/ncз'являється при встановленні пакета netcat-openbsd.
Але на:
dpkg -S /bin/nc
ми отримуємо dpkg-query: no path found matching pattern /bin/nc.
Це відбувається тому /bin/nc, що породжується update-alternativesвикликом у постінст-скрипті, який запускається після встановлення.
Це працює так, оскільки інша версія пакета /bin/ncнадається netcat-traditionalпакетом.
Я не думаю, що існує загальний спосіб пошуку таких згенерованих файлів. У конкретному випадку альтернативних посилань ми можемо просто перейти за посиланням на readlink -f:
dpkg -S "$(readlink -f /bin/nc)"
Не будучи знайомим з Дебіаном, мене збивали з пантелику, коли я спробував це:
kearnsp@xubuntuvb:~$ dpkg -S /usr/bin/vncviewer
dpkg-query: no path found matching pattern /usr/bin/vncviewer
kearnsp@xubuntuvb:~$
Трохи розслідування, і я знайшов пакет:
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:~$