Переустановка всех пакетов Debian

Добавление -f переключатель (никакая сортировка) заставил его показать что путь ко мне.

man ls

[root@dusknoir ~/java/test]# ls -fl
total 0
-rw-r--r--  1 root  wheel  0 Jun  1 13:27 _1
-rw-r--r--  1 root  wheel  0 Jun  1 13:27 _2
-rw-r--r--  1 root  wheel  0 Jun  1 13:27 _3
-rw-r--r--  1 root  wheel  0 Jun  1 13:27 1
-rw-r--r--  1 root  wheel  0 Jun  1 13:27 2
-rw-r--r--  1 root  wheel  0 Jun  1 13:27 3
19
12.06.2013, 20:45
8 ответов

Попробуйте это, помня, что я не протестировал его:

dpkg --get-selections > selections
sudo dpkg --clear-selections
sudo dpkg --set-selections < selections
sudo apt-get --reinstall dselect-upgrade

Источники:

10
27.01.2020, 19:45
  • 1
    Моя проблема полностью отличалась: Я не загружал корректное ядро (!). Я приму Ваш ответ, поскольку это, кажется, делает то, что я хотел (но непротестированный также). –  alex_reader 12.06.2013, 20:44
  • 2
    Это не будет работать и полностью повредит систему. Строка 3 удалит склонный, таким образом, не будет возможно переустановить все, впоследствии. –  rkjnsn 04.11.2013, 19:41
  • 3
    @rkjnsn: Я обновил ответ, проверьте, работает ли он. –  Marco Sulla 06.11.2013, 11:17
  • 4
    , Пытающегося сделать это, ничто не переустанавливается, хотя файл выборов заполняется: pi@prodpi ~ $ sudo склонный - добирается - переустанавливают dselect-обновление, Читая списки пакета... Сделанное дерево зависимостей Здания, Чтение информация состояния... Сделанный 0 обновленных, 0 недавно установленный, 0 для удаления и 0 не обновленный. какая-либо идея? –  andig 09.06.2014, 11:42
  • 5
    , Одна причина, я думаю Ваш код, не будет работать, то, потому что команда dpkg --get-selections список также деинсталлирует пакеты. –  Ortomala Lokni 06.02.2015, 01:20

При использовании об/мин в конечном счете Вы вызываете повреждение в базе данных пакета, существует опция восстановить эту базу данных, таким образом препятствуя тому, чтобы Вы имели для прохождения через в основном переустанавливания. Поскольку один пользователь здесь указал, что это сделано в Debian dpkg --configure -a.

-1
27.01.2020, 19:45

В Одним из ресурсов , цитируемых Mucas Malor, я нашел скрипт под названием Populator, который, кажется, рядом с решением. Если вы устанавливаете переменную выбора пакетов в список всех ваших пакетов

pkglist = $ (dpkg - get-selections | grep -v deinstall | cut -f1)

Вы можете запускать скрипт и переустановить все пакеты Но система, вероятно, будет иметь некоторые проблемы. Было бы лучше проверить его на виртуальной машине первым.

Вот вариант скрипта со ссылкой выше:

#!/bin/bash
#
# Script to pre-populate apt-get proxy for faster later downloads.
# It uses apt-get and wget to pull all the specified packages.
#

# Make sure only root can run our script
if [[ $EUID -ne 0 ]]; then
   echo "You're not root, are you?" 1>&2
   exit 1
fi

# Specify wanted packages
PKGLIST="exaile" 

# Clears out the local repository of retrieved package files
apt-get clean

# Resynchronize the package index files from their sources
apt-get update

# Re-install specified packages at the newest version. 
apt-get install --reinstall $PKGLIST

Если ошибка показана, что определенные пакеты не могут быть переустановлены запускать эту команду, чтобы попробовать еще раз:

sudo apt-get -y autoremove
2
27.01.2020, 19:45

На всякий случай попробуйте переустановить каждый пакет :

for i in $(cat list.log); do apt-get install --reinstall "$i"; done

Вы также можете добавить вариант ответа «да» на все вопросы.

2
27.01.2020, 19:45

Попробуйте вместо этого вот это, поскольку оно возьмет ваш вывод и сделает его одной огромной строкой с пробелами, разделяющими имена файлов.

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 завершило установку (она была в финальной фазе). Затем я выполнил следующее, чтобы все переустановилось правильно.

Или, как сказано на https://superuser.com/questions/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 или вашего любимого оконного менеджера может не понравиться переустановка.

1
27.01.2020, 19:45

При использовании Aptitude есть простой и быстрый способ сделать это:

sudo aptitude reinstall '~i'

, который переустановит все установленные на данный момент пакеты.

12
27.01.2020, 19:45

Сделать это с помощью aptдовольно просто:

apt list --installed | cut --delimiter=/ --fields=1 | xargs apt reinstall -y

Часть apt list --installedделает именно то, что можно было бы предположить.Символ |направляет стандартный вывод команды aptна стандартный ввод команды cut. Часть cut --delimiter=/указывает команде cutиспользовать /в качестве разделителя, а --fields=1указывает cutиспользовать первое поле, то есть текст перед первым /, который появляется в выводе. команды apt list --installed. В этом случае результатом команды cutявляется список всех установленных пакетов без всей дополнительной информации, которая нам не нужна из команды apt list --installed.

Следующий |направляет стандартный вывод команды cut, список всех установленных пакетов, на стандартный ввод команды xargs, которая, в свою очередь, вызывает apt reinstall -yдля каждого из пакеты, которые в настоящее время установлены.

Примечание.:В зависимости от вашей подходящей конфигурации часть apt reinstall -yможет устанавливать обновления для ваших существующих пакетов вместо точных версий, которые вы установили в настоящее время.

0
27.01.2020, 19:45

У меня было странное поведение, поэтому я переустановил все подобные пакеты. Исправлена ​​проблема для меня. Занимает пару часов.

for package in $(apt list --installed | grep -P ".*(?=/)" -o); do echo $package; done;

заменить echoнаsudo apt install --reinstall -y
чтобы переустановить все пакеты или что-то еще, если это необходимо.

1
04.04.2021, 02:03

Теги

Похожие вопросы