Re: dselect base
Привет Debian Russian!
В письме от Kiryanov Vasiliy <kva@riva.gomel.by>
(Wed, 9 Apr 2003 00:26:27 +0300) было написано :
> 2) А почему после apt-get update, не обновляется база dselect, и нужно
> дополнительно использовать dselect update, почему эти две программы
> используют разные базы?
Собственно и apt-get, и dselect используют одну и ту же базу пакетов.
Состояние пакетов хранится в /var/lib/dpkg/status, и резервируется
предыдущее состояние в /var/lib/dpkg/status-old. Также имеются файлы
/var/lib/dpkg/available - список всех доступных пакетов с их описанием.
apt-get дополнительно имеет кэшы пакетов /var/cache/apt/*.bin,
хранящие указатели на информацию в базе и зависимости пакетов.
Ещё есть каталог /var/lib/apt/lists, в котором хранятся списки
пакетов отдельно для каждого архива из файла /etc/apt/sources.list
При 'apt-get update' происходят следующие действия:
- скачиваются файлы Packages из архивов пакетов и помещаются в /var/lib/apt/lists
(имена файлов формируются на основе расположения архива)
- далее они объединяются в единый список и помещаются на место /var/lib/dpkg/available
(старый список сохраняется)
- изменяется ли /var/lib/dpkg/status - я ещё не уловил
- переписываются кэшы пакетов
Вот вроде бы и всё, что делает apt-get.
Команду 'dselect update' сам я не пускал, но судя по man'у должно
происходить тоже самое.
Возможно apt-get и dselect различаются в данном случае по параметрам
передаваемым в dpkg.
> 1) А может кто-то знает способ как привести его базу в соответствие с
> тем что уже на самом деле, то есть что установлено, то пеметить как
> устанолено, что удалено как удалено, а все пометики для установки и
> для удаления снести!
Судя по тому как была описана проблема, то произошли некоторые изменения файла
/var/lib/dpkg/status. Теперь в нём должно быть много примерно таких записей:
Package: имя_пакета
Status: install ok not-installed
(Т.е. пакет отмечен для установки и неустановлен)
либо
Package: имя_пакета
Status: deinstall ok installed
(Т.е. пакет отмечен для удаления и установлен)
Также возможны промежуточные состояния
(подробнее 'man dpkg' - секция INFORMATION ABOUT PACKAGES,
где PACKAGE STATES - третье поле строки Status, а
PACKAGE SELECTION STATES - первое поле)
Дальнейшее - дело техники.
Искать неправильное сочетание и заменить на правильное.
(Кто напишет скрипт - будет очень интересно взглянуть).
С наилучшими, Woland.
Reply to: