[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: