====== Как получить и скопировать список установленных пакетов на Ubuntu / Debian Linux ======
Чтобы получить список всех установленных пакетов на Ubuntu или Debian, используйте DPKG и другие команды.
Введите следующую команду:
dpkg-query -l
Чтобы увидеть только список пакетов, попробуйте:
dpkg-query -f '${binary:Package}\n' -W
Чтобы получить список установленных пакетов, введите команду:
dpkg --get-selections | grep -v deinstall
Другой вариант:
apt list --installed
или можно просто найти все пакеты на основе PHP:
apt list --installed | grep php
===== Как сохранить список в текстовый файл =====
Команда выглядит следующим образом для 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}')