Как получить и скопировать список установленных пакетов на Ubuntu / Debian Linux сервере

Материал из support.qbpro.ru
  • Чтобы получить список всех установленных пакетов на Ubuntu или Debian, используйте DPKG и другие команды.

Введите следующую команду:

dpkg-query -l

Примеры результатов:
Apt-list1.png

  • Чтобы увидеть только список пакетов, попробуйте:
dpkg-query -f '${binary:Package}\n' -W

Примеры результатов:
Apt-list2.png

  • Чтобы получить список установленных пакетов, введите команду:
dpkg --get-selections | grep -v deinstall

Пример:
Apt-list3.png

  • Другой вариант:
apt list --installed

или можно просто найти все пакеты на основе PHP:

apt list --installed | grep php

Пример:
Apt-list4.png

  • Как сохранить список в текстовый файл

Команда выглядит следующим образом для server1:

dpkg --get-selections | grep -v deinstall > mylist.txt

Теперь скопируйте mylist.txt на server2 с вашим адресом, например 100.100.100.100:

scp mylist.txt 100.100.100.100:~/

Пример:

The authenticity of host 100.100.100.100 (100.100.100.100)' can't be established.
ECDSA key fingerprint is SHA256:r+WgiifO
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '100.100.100.100' (ECDSA) to the list of known hosts.
  • Как установить скопированные пакеты на server2

На втором сервере server2 для восстановления установок из mylist.txt, выполните следующую команду:

dpkg --clear-selections
sudo dpkg --set-selections < mylist.txt

или

sudo apt-get install -y $(< mylist.txt)

Наконец, выполните следующую команду, чтобы удалить ненужные пакеты:

sudo apt-get autoremove

Вышеприведенные команды должны восстановить пакеты из резервных копий или другого сервера.

Если данных на втором сервере нет, нужно их скопировать и после этого восстановить. Этот вариант заключается в использовании команды aptitude следующим образом:

### Создаем список программ в директории на первом сервере /tmp/packages.txt ###
dpkg --get-selections > /tmp/packages.txt
### Копируем файл на второй сервер с адресом 100.100.100.100 ###
scp /tmp/packages.txt 100.100.100.100:/tmp/
### Теперь вы можете установить пакеты на втором сервере используя команду apt-get/synaptic ###

1. Соединяемся с первым сервером

ssh root@100.100.100.101

2. Устанавливаем aptitude:

sudo aptitude

3. Восстанавливаем данные

aptitude install $(cat /tmp/packages.txt | awk '{print $1}')