5/5 - (14 голосов)

Предположим я- новичек, системный администратор Ubuntu Linux. Как мне получить список всех установленных пакетов на server1 и установить их на server2? Как перечислить все установленные пакеты с помощью команды apt-get на сервере Ubuntu или Debian?

Вам нужно использовать dpkg и другие команды, как показано ниже, чтобы увидеть список всех установленных пакетов на сервере Ubuntu или Debian Linux.

Просмотр установленных пакетов

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

$ dpkg-query -l

Примеры результатов:

Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                          Version                           Architecture Description
+++-=============================-=================================-============-=============================================================================
==
ii  accountsservice               0.6.40-2ubuntu11.3                amd64        query and manipulate user account information
ii  acct                          6.5.5-2.1ubuntu1                  amd64        The GNU Accounting utilities for process and login accounting
ii  acl                           2.2.52-3                          amd64        Access control list utilities
ii  adduser                       3.113+nmu3ubuntu4                 all          add and remove users and groups
ii  apparmor                      2.10.95-0ubuntu2.5                amd64        user-space parser utility for AppArmor
ii  apt                           1.2.19                            amd64        commandline package manager
ii  apt-transport-https           1.2.19                            amd64        https download transport for APT
ii  atop                          1.26-2build1                      amd64        Monitor for system resources and process activity
ii  base-files                    9.4ubuntu4.3                      amd64        Debian base system miscellaneous files
ii  base-passwd                   3.5.39                            amd64        Debian base system master password and group files
ii  bash                          4.3-14ubuntu1.1                   amd64        GNU Bourne Again SHell
ii  bash-completion               1:2.1-4.2ubuntu1.1                all          programmable completion for the bash shell
ii  bc                            1.06.95-9build1                   amd64        GNU bc arbitrary precision calculator language
ii  bind9-host                    1:9.10.3.dfsg.P4-8ubuntu1.4       amd64        Version of 'host' bundled with BIND 9.X
ii  bsdmainutils                  9.0.6ubuntu3                      amd64        collection of more utilities from FreeBSD

Хотите увидеть только список пакетов? Выполните:

$ dpkg-query -f '${binary:Package}\n' -W

Примеры результатов:

unattended-upgrades
ureadahead
usbutils
util-linux
uuid-runtime
vim
vim-common
vim-runtime
vim-tiny
virt-what
vnstat
wamerican
...........

Как получить список установленных пакетов

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

$ dpkg --get-selections | grep -v deinstall

список установленных пакетов

Другой вариант — использовать команду apt следующим образом:

$ apt list --installed

ИЛИ просто найдите все пакеты  php, используя команду grep :

$ apt list --installed | grep php

Примеры результатов:

Listing...
accountsservice/xenial-updates,now 0.6.40-2ubuntu11.3 amd64 [installed,automatic]
acl/xenial,now 2.2.52-3 amd64 [installed,automatic]
adduser/xenial,xenial,now 3.113+nmu3ubuntu4 all [installed]
apt/xenial-updates,now 1.2.19 amd64 [installed]
apt-transport-https/xenial-updates,now 1.2.19 amd64 [installed]
apt-utils/xenial-updates,now 1.2.19 amd64 [installed]
atop/xenial,now 1.26-2build1 amd64 [installed]
base-files/xenial-updates,now 9.4ubuntu4.3 amd64 [installed]
base-passwd/xenial,now 3.5.39 amd64 [installed]
................

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

Синтаксис следующий: server1:

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

Или

$ Dpkg -l | Grep ^ ii | Awk '{print $ 2}'> mylist.txt

Теперь скопируйте файл mylist.txt на сервер с именем server2:

$ scp mylist.txt user@server2:~/

Как установить список пакетов на сервере2

На сервере 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
###  копировать файл на другой сервер под названием server1.itfb.com.ua ##
scp /tmp/packages.txt [email protected]:/tmp/
### Теперь, когда ваш список скопирован, используйте apt-get / synaptic для установки пакетов
#### 1. Вход на другой сервер
ssh [email protected]
# 2. Установите из списка
aptitude install $(cat /tmp/packages.txt | awk '{print $1}')

Администрирование и поддержка серверов, [email protected]