Я просто переустановил ПОМОЩНИКА Ubuntu 15.10 с нуля. Я следовал этому ответу, чтобы сохранить список установленных пакетов и восстановить его в недавно установленной системе.
Однако, когда я делаю
sudo dpkg --set-selections < packages-backup.list
Я получаю длинный список сообщений об ошибках как они:
dpkg: warning: package not in database at line 1417: sqlite3
dpkg: warning: package not in database at line 1417: sqliteman
dpkg: warning: package not in database at line 1417: sqliteman-doc
и наконец
dpkg: warning: found unknown packages; this might mean the available database is outdated, and needs to be updated through a frontend method
Таким образом, я работал sudo apt-get update
и повторно выполнился dpkg
но я продолжаю получать ту же ошибку.
Я, кажется, получаю это сообщение об ошибке для каждого пакета в списке, включая довольно незахватывающие, такие как ядро по умолчанию или sqlite. Кроме того, я не добавил дополнительного PPAs на своей предыдущей установке, таким образом пакеты из репозиториев не по умолчанию не могут быть проблемой здесь.
Как тест, я пытался установить один из "незаконных" пакетов с sudo apt-get install
, который работал без любых проблем.
Что идет не так, как надо здесь?
Предупреждения безопасно проигнорировать, поскольку они только касаются dpkg
база данных. Фактическая установка сделана с APT, который не использует эту базу данных.
, Когда Вы используете dpkg
этим способом, необходимо использовать dselect-upgrade
для применения отмеченных изменений.
sudo apt-get dselect-upgrade
От человека dpkg:
Примечание, что этот файл главным образом бесполезен, если Вы не используете dselect, но основанный на APT frontend: APT имеет свою собственную систему для отслеживания доступные пакеты.
Попробуйте это:
sudo apt-get install dselect && sudo dselect update
После того, как можно выполниться:
sudo dpkg --set-selections < packages-backup.list
Следующий сценарий был обходным решением для меня. Не упустите изображения Linux и заголовки Linux. Если у Вас есть многие из тех, которые в Вашем dpkglist.txt затем, Вы могли бы хотеть фильтровать их с grep-v команды как
cat dpkglist.txt | grep "$l_mode" | grep -v linux-headers | grep -v linux-image-3 | grep -v linux-image-extra-3 | cut -f1
сценарий, чтобы установить и удалить пакеты из dpkglist.txt через Кв. - добирается
#!/bin/bash
#
# get the packages
#
# param 1: l_mode: install or deinstall
#
packages() {
local l_mode="$1"
# get the lines for the given mode
cat dpkglist.txt | grep "$l_mode" | cut -f1
}
#
# loop over the packages in the given mode
# param 1: l_mode: install or deinstall
#
loop() {
local l_mode="$1"
for package in $(packages $l_mode)
do
case "$l_mode" in
install) apt-get -y install $package;;
deinstall) apt-get -y remove $package;;
esac
done
}
# do two loops
loop deinstall
loop install
Обновить dpkg базу данных от способного кэша:
apt-get update # can skip this
apt-cache dumpavail > /var/cache/apt/available
dpkg --admindir=/var/lib/dpkg --update-avail /var/cache/apt/available
или острота с корнем
dpkg --admindir=/var/lib/dpkg --update-avail <(apt-cache dumpavail)
Этот метод не требует dselect
пакет