Как узнать, какому пакету принадлежит бинарный файл в Debian/Ubuntu
Если вы управляете программным обеспечением в Debian/Ubuntu с помощью управления пакетами apt-get , могут быть случаи, когда вы захотите удалить или обновить пакет программного обеспечения, содержащий существующий двоичный файл в вашей системе. Итак, учитывая существующий двоичный файл (например, /usr/lib/postgresql/8.4/bin/postgres ), как узнать, какой пакет предоставляет двоичный файл?
В этом вам может помочь apt-file — утилита командной строки, разработанная именно для этой цели. Сначала установите apt-file следующим образом.
$ sudo apt-get install apt-file $ sudo apt-file update
Чтобы узнать, какому пакету принадлежит /usr/lib/postgresql/8.4/bin/postgres , выполните следующие действия.
$ sudo apt-file search /usr/lib/postgresql/8.4/bin/postgres
postgresql-8.4: /usr/lib/postgresql/8.4/bin/postgres
Приведенный выше вывод сообщает вам, что двоичный файл получен из пакета с именем postgresql-8.4 .
Чтобы удалить найденный пакет, а также его зависимости, которые были установлены вместе с ним, но больше ничем не используются в системе, выполните следующие действия.
$ sudo apt-get autoremove postgresql-8.4
Re: как посмотреть, какому пакету принадлежит файл?
а откуда я его возьму. Мне говорят, что нет такого файла — битые зависимости, я хочу узнать какому пакету он пренадлежит. Откуда брать путь?
anonymous
( 12.04.06 12:19:13 MSD )
Ответ на: Re: как посмотреть, какому пакету принадлежит файл? от anonymous 12.04.06 12:19:13 MSD
Re: как посмотреть, какому пакету принадлежит файл?
какой файл нужно узнать?
anonymous
( 12.04.06 13:27:41 MSD )
Ответ на: Re: как посмотреть, какому пакету принадлежит файл? от anonymous 12.04.06 13:27:41 MSD
Re: как посмотреть, какому пакету принадлежит файл?
на счет путей не вижу проблем, наверное всем известно, что бинарники живут в основном в /bin /sbin /usr/bin /usr/sbin , если это не чужеродный пакет — /opt
anonymous
( 12.04.06 13:29:43 MSD )
Ответ на: Re: как посмотреть, какому пакету принадлежит файл? от anonymous 12.04.06 13:29:43 MSD
Re: как посмотреть, какому пакету принадлежит файл?
man find я и сам умею, пасибки.
anonymous
( 12.04.06 13:31:10 MSD )
Ответ на: Re: как посмотреть, какому пакету принадлежит файл? от anonymous 12.04.06 12:19:13 MSD
Re: как посмотреть, какому пакету принадлежит файл?
> а откуда я его возьму.
Т.е. есть только имя файла ? Тогда можно попробовать перебрать все пакеты:
rpm -qa|while read p; do n=`rpm -ql $p|grep -c имя_файла`; [ «$n» != «0» ] && echo $p; done
Либо искать не во всех пакетах, а по имени файла попробовать узнать имя пакета.
How do I find out which package owns a file?
Alternatively, there are several utilites in Debian which perform this task; check this page for a description. I’ll mention two of them, apt-file and dlocate .
apt-file searches its internal cache, thus allowing you to not install all the packages you want to search. Below you will find more detailed guide.
dlocate is a fast alternative to dpkg -L (the command that lists package contents), and as so, it searches only installed packages. Search is performed by dlocate -S file.name .
Also you can search packages online using packages.debian.org server (the Search the contents of packages section).
Installing and using apt-file
It’s a good idea to update first:
sudo apt-get update
See what apt-file is for:
apt-cache show apt-file
sudo apt-get install apt-file
Read data from repositories (this works also without sudo but creates user’s cache then; with sudo the cache is system-wide):
sudo apt-file update
Perform search. In this example we want to know in which package xrandr executable is:
apt-file search xrandr
It lists many packages with unxrandr , lxrandr.mo or source_lxrandr.py . Not very useful in our case. More clever search:
apt-file search -x /xrandr$
( $ denotes end of line). Example output:
bash-completion: /usr/share/bash-completion/completions/xrandr x11-xserver-utils: /usr/bin/xrandr
The first result doesn’t look like executable, the second one does. We can investigate further. Run:
apt-cache show x11-xserver-utils
Bingo! This is the package.
как найти какому пакету принадлежит отсутствующий файл?
![]()
потому что «equery f файл» ищет только в том случае если пакет установлени — а как найти какой надо доустановить если его нет? неужели в опять в http://rpm.pbone.net лезть искать? уж думал что с переходдом с редхета — от этих поисков избавился.
-
Для комментирования войдите или зарегистрируйтесь
я несовсем
Автор evadim, дата создания 1 марта, 2007 — 03:34.
я несовсем понимаю, но в данном случае это или неправильно скофигуренное ведро, или не те юсы у иптаблес, смотря что за правило ты хочеш использовать
- Для комментирования войдите или зарегистрируйтесь
Автор kiev1, дата создания 1 марта, 2007 — 03:58.
ну хорошо — ошибку я нашел руками — но в общем я с этим много раз сталкивался — программа хочет что-то чего не известно в каком пакете искать? какой принцип поиска (rpm.pbone.net не предлагать)))
- Для комментирования войдите или зарегистрируйтесь
Автор Mesk (не зарегистрирован), дата создания 1 марта, 2007 — 05:42.
- Для комментирования войдите или зарегистрируйтесь
gentoo достаточно
Автор KiberGus, дата создания 1 марта, 2007 — 12:33.
gentoo достаточно хорошо отслеживает зависимости, поэтому в gentoo такая ошибка из-за неустановленного пакета как правило не возникает.
- Для комментирования войдите или зарегистрируйтесь
Re: gentoo достаточно
Автор roman, дата создания 1 марта, 2007 — 13:06.
KiberGus написал(а):
gentoo достаточно хорошо отслеживает зависимости, поэтому в gentoo такая ошибка из-за неустановленного пакета как правило не возникает.
+1
ниразу не было
- Для комментирования войдите или зарегистрируйтесь
Чтобы тузла
Автор wi, дата создания 1 марта, 2007 — 16:12.
Чтобы тузла могла узнать что лежит в неустановленном сурсовом пакете она как минимум должна достать пакет с тырнета и установить (имхо особенности сурса). Другой способ реализации мне пока что в голову не приходит. Так что ваша ситуация решается только чтением доки на устанавливаемый пакет.
Обратная ситуация, когда нужно решить проблему и не знаешь чего поставить опять же требует поиска в тырнете. Всегда. Как только с именами тузл определился жизнь становится раем. Потому как в гене метаинформация текстовая, лежит в /usr/portage. Можно втупую грепить, можно воспользоваться какими нить тузлами коих море бо текст (типа eix, esearch, equery, q). Прямые и обратные зависимости как правило прописаны в ебилде. Разобраться не так сложно как кажется на первый взгляд.
Так что rpm.pbone.net или гугл по любому. Без тырнета линь мертв.
- Для комментирования войдите или зарегистрируйтесь
Russian Gentoo Linux Community © 2005—2017
Gentoo — торговая марка Gentoo Foundation, Inc.
Сервер работает под управлением Gentoo Linux
Сайт работает под управлением CMS Drupal