Недавно я установил Kali Linux, но из-за негибкого выбора зеркала все deb-пакеты загружаются с зеркала, которому я не доверяю. Можно ли указать apt / dselect повторно загрузить и переустановить все пакеты, предполагая, что sources.list был обновлен для использования нового зеркала?
решение1
Как отметил Алекс:
sudo apt-get clean
sudo apt-get install --reinstall $(dpkg --get-selections | grep -w 'install$' | cut -f 1)
Первый гарантирует, что кэш apt пуст. Таким образом, apt-get должен будет загрузить пакеты из репозиториев. Второй, сначала вам нужен список всех установленных пакетов, что и делает часть $(...)
, а затем вы используете apt-get, чтобы переустановить их. Есть еще один способ с aptitude:
sudo aptitude --reinstall install '~i'
Поиск ~i
«установленных пакетов».
При использовании обоих методов вы закончите без каких-либо автоматически установленных пакетов, поэтому вам необходимо использовать apt-mark showauto > packages
перед этим и sudo apt-mark auto $(cat packages)
переустановить список.
решение2
Ответы здесь помогли мне решить проблему. Это решение, возможно, не самое эффективное, но оно выполняет свою работу.
#!/bin/bash
for package in `dpkg --get-selections | grep -w 'install$' | cut -f 1`; do
apt-get install --reinstall $package;
done
решение3
Я использовал этот скрипт, и меня время от времени просили ответить «Да» (Yes) Затем скрипт продолжил работу. Но поскольку это занимает довольно много времени, это значительно увеличивает время выполнения. Я изменил скрипт, вставив « --yes force-yes
Recommend forcing automatic def/old config accept» также
#!/bin/bash
for package in `dpkg --get-selections | grep -w 'install$' | cut -f 1`; do
apt-get --yes --force-yes -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" install --reinstall $package
done