Попытался установить пакет после удаления некоторых серверов, которые мне больше не нужны, и удаления пользователей и групп удаленного пакета программного обеспечения. Пошел забирать и устанавливать новый пакет и получил следующую ошибку.
user@localhost~$ sudo apt-get install any-package
... package installation output omitted for brevity ...
dpkg: unrecoverable fatal error, aborting:
syntax error: unknown user 'puppet' in statoverride file
E: Sub-process /usr/bin/dpkg returned an error code (2)
Итак, /usr/bin/dpkg-statoverride имеет опцию удаления пути, но двоичный файл выдает ту же ошибку, когда я пытаюсь запустить его вне общего контекста установки apt-get.
Итак, я просто добавил пользователя puppet и снова могу загружать пакеты, но я пытаюсь удалить все посторонние элементы из моей системы разработки, так что, насколько я понимаю, это не решение, просто потому что оно работает.
Насколько я могу судить, statoverride сообщает менеджеру пакетов, что нужно установить определенные вещи по определенному пути, и портит флаг setuid, так что потенциально это может открыть кучу дыр в безопасности, устанавливая программы, совладельцем которых является неиспользуемый пользователь и группа. Есть ли причина, по которой dpkg-statoverride не обновляется вместе с остальной системой при удалении пользователя? И есть ли способ обойти это, чтобы мне не приходилось :adduser -> install -> deluser: каждый раз, когда я хочу установить пакет?
решение1
Вы можете попробовать это:
sudo sed -i '/puppet/d' /var/lib/dpkg/statoverride
Следует удалить пользователя из statoverride и снова предоставить вам доступ к установке.