Я просто переустановил Ubuntu MATE 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, но я продолжаю получать ту же ошибку. [!d5 ]
Кажется, я получаю это сообщение об ошибке для каждого отдельного пакета в списке, в том числе довольно незаметные, такие как ядро по умолчанию или sqlite. Кроме того, я не добавил никаких дополнительных PPA в свою предыдущую настройку, поэтому пакеты из репозиториев, отличных от по умолчанию, не могут быть проблемой здесь.
В качестве теста я попытался установить одно из "оскорбительных" пакеты с sudo apt-get install, которые работали без каких-либо проблем.
Что здесь не так?
Попробуйте следующее:
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 через apt-get [ ! d1]
#!/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