'Пакет не в базе данных' при восстановлении с dpkg - выборы набора

Я просто переустановил ПОМОЩНИКА 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, который работал без любых проблем.

Что идет не так, как надо здесь?

6
задан 13 April 2017 в 05:24

4 ответа

Предупреждения безопасно проигнорировать, поскольку они только касаются dpkg база данных. Фактическая установка сделана с APT, который не использует эту базу данных.

, Когда Вы используете dpkg этим способом, необходимо использовать dselect-upgrade для применения отмеченных изменений.

sudo apt-get dselect-upgrade

От человека dpkg:

Примечание, что этот файл главным образом бесполезен, если Вы не используете dselect, но основанный на APT frontend: APT имеет свою собственную систему для отслеживания доступные пакеты.

3
ответ дан 23 November 2019 в 07:43

Попробуйте это:

sudo apt-get install dselect && sudo dselect update

После того, как можно выполниться:

sudo dpkg --set-selections < packages-backup.list
4
ответ дан 23 November 2019 в 07:43

Следующий сценарий был обходным решением для меня. Не упустите изображения 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
0
ответ дан 23 November 2019 в 07:43

Обновить 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 пакет

0
ответ дан 23 November 2019 в 07:43

Другие вопросы по тегам:

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