Я по ошибке убил процесс dpkg, работающий в фоновом режиме, и я хотел бы переустановить все пакеты, чтобы убедиться, что все в порядке.
Сначала я попытался получить список всех пакетов и переустановить их.
dpkg --get-selections | grep -v deinstall | awk '{print $1}' > list.log
apt-get install --reinstall $(cat list.log)
Но есть такие сообщения, как:
E: Couldn't configure pre-depend debconf:i386 for console-setup:i386, probably a dependency cycle.
Я пытался apt-get -f install
, но безуспешно.
В крайнем случае я переустановил все программы, которые не прошли контрольные суммы:
dpkg -l | grep ^ii | awk '{ print $2 }' | xargs debsums -s -a
Что я должен сделать, чтобы переустановить все?
Изменить: проблема решена. Проблема была в другом (см. Комментарии). Я понимаю, что с Debian этого следует избегать.
debian
package-management
apt
alex_reader
источник
источник
Ответы:
Попробуйте это, помня, что я не проверял это:
Источники:
man apt-get
источник
dpkg --get-selections
список команд также удаляет пакеты.На всякий случай попробуйте переустановить каждый пакет :
Вы также можете добавить вариант ответа «да» на все вопросы.
источник
dpkg --get-selections > list.log
первым.list.log
взято из вопроса.На одном из ресурсов, на которые ссылается Лукас Малор, я нашел скрипт под названием populator, который, похоже, близок к решению. Если вы установите переменную выбора пакетов в список всех ваших пакетов
PKGLIST=$(dpkg --get-selections | grep -v deinstall| cut -f1)
Затем вы можете запустить скрипт и переустановить все пакеты, но система, вероятно, будет иметь некоторые проблемы. Было бы лучше сначала протестировать его на виртуальной машине.
Вот вариант скрипта по ссылке выше:
Если показано сообщение об ошибке, что определенные пакеты не могут быть переустановлены, выполните эту команду, чтобы повторить попытку:
источник
Попробуйте вместо этого, так как он возьмет ваш вывод и сделает его одной гигантской строкой с пробелами, разделяющими имена файлов.
dpkg --get-selections | grep -v deinstall | awk '{print $1}' > list.log awk '$1=$1' ORS=' ' list.log > newlist.log apt-get install --reinstall $(cat newlist.log)
Единственное изменение в исходном сообщении - это добавление во второй оператор awk, что, вероятно, можно сделать в строке с первым, чтобы создать нужный файл.
Это изменение заставит apt-get корректно перезагружать пакеты и все недостающие зависимости, которые не были установлены в первый раз, и переустанавливать их по порядку.
Если мы сделаем это встроенным, я думаю, что это будет выглядеть так:
dpkg --get-selections | grep -v deinstall | awk '{print $1}' | awk '$1=$1' ORS=' ' > list.log
И затем убедитесь, что вы действительно установили в системе правильные пакеты (или последние), очистите кэш apt, обновите его, а затем повторно загрузите все файлы (вы можете пропустить первые два шага, если хотите только то, что у вас есть в кеше переустановил):
apt-get clean && apt-get update && apt-get install --reinstall $(cat list.log)
У меня было более 2 тыс. Пакетов, установленных в обновленной системе с зависанием. Использование dpkg --configure -a завершило установку (это было на последнем этапе). Затем я запустил это, чтобы все переустановить правильно.
Или, как указано на /superuser/298912/reinstall-debian- while-keeping-installed-packages-and-data :
sudo apt-get install --reinstall $(dpkg --get-selections | grep -w 'install$' | cut -f1)
Просто убедитесь, что вы запускаете «init 2» перед любой переустановкой, поскольку некоторые компоненты X или ваш любимый оконный менеджер могут не захотеть переустанавливаться.
источник
$(cat file)
токены в кавычках без кавычек и дают точно такой же результат, независимо от того, разделен ли файл символами новой строки или пробелами.--reinstall
может помочь, но уже было дано дважды до этого.При использовании Aptitude есть простой и быстрый способ сделать это:
sudo aptitude reinstall '~i'
который переустановит все установленные на данный момент пакеты.
источник
При использовании RPM, в случае, если вы вызываете повреждение в базе данных пакета, есть возможность перестроить эту базу данных, таким образом, не позволяя вам выполнить в основном переустановку. Как отметил один из пользователей, это делается в Debian
dpkg --configure -a
.источник
dpkg --configure -a
заключается в настройке всех распакованных и ненастроенных пакетов. См искусственные страницыdpkg
и ,dpkg-reconfigure
а также debian.org/doc/manuals/debian-faq/ch-pkg_basics.en.html