Установите все недавние пакеты, установленные на другом компьютере.

У меня есть некоторый пакет, установленный на компьютере. Я хочу установить подобные пакеты для другого компьютера.

Я могу перечислить вниз все недавние пакеты с этой командой

cat /var/log/dpkg.log | grep "\ install\ "

Это произведет что-то как

2015-02-18 19:33:46 install login:amd64 <none> 1:4.1.5.1-1ubuntu9
2015-02-18 19:33:46 install lsb-base:all <none> 4.1+Debian11ubuntu6
2015-02-18 19:33:46 install makedev:all <none> 2.3.1-93ubuntu1
2015-02-18 19:33:46 install module-init-tools:all <none> 15-0ubuntu6
2015-02-18 19:33:46 install mount:amd64 <none> 2.20.1-5.1ubuntu20
2015-02-18 19:33:46 install mountall:amd64 <none> 2.53

Этот список является довольно большим.

Я хочу сделать его чем-то как

sudo apt-get install login lsb-base module-init-tools mount mountall
1
задан 23 June 2015 в 11:38

3 ответа

Сохраните все установленные пакеты, показанные /var/log/dpkg.log в массиве:

mapfile -t packages < <(grep -Po '.* install \K[^ ]+' /var/log/dpkg.log)

Здесь массив packages будет содержать все имена пакета.

Теперь Вы можете простой делать:

echo "${packages[@]}"

видеть имена пакета в пространстве разделило форму.

Это будет работать хорошо с apt-get команда:

sudo apt-get install --dry-run "${packages[@]}"

Вышеупомянутая команда будет расширена до:

sudo apt-get install --dry-run libntlm0:amd64 libgsasl7:amd64 ....

Если Вы имеете ssh доступ от нового компьютера до того, откуда пакет установлены, NEW компьютер можно использовать:

$ mapfile -t packages < <(ssh OLD 'grep -Po ".* install \K[^ ]+" /var/log/dpkg.log'))"

Это сохранит имена пакета от OLD компьютер в массиве packages. изменитесь ssh параметры соответственно.

Теперь можно просто сделать:

$ sudo apt-get install "${packages[@]}"
1
ответ дан 3 December 2019 в 07:01

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

На Первом вычисляют, выполняет те команды:

dpkg --get-selections > /some-path/packages.list

sudo cp -R /etc/apt/sources.list* /some-path/

sudo apt-key exportall > /some-path/Repo.keys

Тогда копия те файлы к другому компьютеру и там выполняет те команды для установки точно тех же приложений от первого компьютера:

sudo apt-key add /some-path/Repo.keys

sudo cp -R /some-path/sources.list* /etc/apt/

sudo apt-get update

sudo apt-get install dselect

sudo dpkg --set-selections < /some-path/packages.list

sudo apt-get dselect-upgrade -y
2
ответ дан 3 December 2019 в 07:01

команда, чтобы сделать это

cat /var/log/apt/history.log | grep "\ install\ " | awk '/ install / {printf "%s ",$4 }'
1
ответ дан 3 December 2019 в 07:01

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

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