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

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

26 ответов

Решение

Ubuntu 14.04 и выше

apt инструмент на Ubuntu 14.04 и выше делает это очень просто.

apt list --installed

Старые версии

Чтобы получить список установленных пакетов, сделайте это в своем терминале:

dpkg --get-selections | grep -v deinstall

(The -v тег "инвертирует" grep для возврата несовпадающих строк)

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

dpkg --get-selections | grep postgres

Чтобы сохранить этот список в текстовый файл с именем packages на рабочем столе сделайте это в своем терминале:

dpkg --get-selections | grep -v deinstall > ~/Desktop/packages

В качестве альтернативы просто используйте

dpkg -l

(вам не нужно запускать какие-либо из этих команд в качестве суперпользователя, поэтому нет sudo или любые другие варианты, необходимые здесь)

Чтобы получить только те пакеты, которые были явно установлены (а не просто установлены как зависимости), вы можете запустить

aptitude search '~i!~M'

Это также будет включать краткое описание, которое вы можете захотеть. Если нет, также добавьте опцию -F '%p', как упомянуто karthick87.


Еще один вариант, кажется, копировать файл /var/lib/apt/extended_states, которая представляет собой базу данных текстовых файлов в этом формате:

Package: grub-common
Architecture: amd64
Auto-Installed: 0

Package: linux-headers-2.6.35-22-generic
Architecture: amd64
Auto-Installed: 1

Auto-Installed: 0 указывает, что пакет был явно установлен и является не просто зависимостью.

Чтобы вывести список всех пакетов, преднамеренно установленных (не как зависимости) с помощью команд apt, выполните следующее:

(zcat $(ls -tr /var/log/apt/history.log*.gz); cat /var/log/apt/history.log) 2>/dev/null |
  egrep '^(Start-Date:|Commandline:)' |
  grep -v aptdaemon |
  egrep '^Commandline:'

Это обеспечивает представление на основе обратного времени, причем более старые команды перечислены первыми:

Commandline: apt-get install k3b
Commandline: apt-get install jhead
...

Установочные данные также показывают использование синапсов, но без подробностей (то же самое с датой установки):

(zcat $(ls -tr /var/log/apt/history.log*.gz); cat /var/log/apt/history.log) 2>/dev/null |
  egrep '^(Start-Date:|Commandline:)' |
  grep -v aptdaemon |
  egrep -B1 '^Commandline:'

предоставляя следующее:

Start-Date: 2012-09-23  14:02:14
Commandline: apt-get install gparted
Start-Date: 2012-09-23  15:02:51
Commandline: apt-get install sysstat
...

Создайте резервную копию установленных пакетов:

dpkg --get-selections > list.txt

Затем (в другой системе) восстановите установки из этого списка:

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

Чтобы избавиться от устаревших пакетов:

sudo apt-get autoremove

Для установки, как во время резервного копирования (т.е. для установки пакетов, установленных dpkg --set-selections):

sudo apt-get dselect-upgrade
apt-mark showmanual

Страницы руководства:

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

Таким образом, он должен просто предоставить список явно установленных пакетов (хотя это включает в себя пакеты, которые были частью начальной установки по умолчанию) без учета всех зависимостей, связанных с установкой этих пакетов.

Чтобы вывести результат в текстовый файл:

apt-mark showmanual > list-manually-installed.txt

dpkg-query (вместо dpkg --get-selections, который перечисляет некоторые пакеты, которые не установлены) следующим образом:

dpkg-query -W -f='${PackageSpec} ${Status}\n' | grep installed |  sort -u | cut -f1 -d \ > installed-pkgs

Или же:

dpkg -l | grep ^ii | sed 's_  _\t_g' | cut -f 2 > installed-pkgs

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

dpkg -l |awk '/^[hi]i/{print $2}' > 1.txt

или же

aptitude search -F '%p' '~i' > 1.txt

или же

dpkg --get-selections > 1.txt

Замечания:
Вы получите результат 1.txt файл в вашей домашней папке или вы можете указать свой собственный путь.

APT-клон Этот пакет можно использовать для клонирования / восстановления пакетов в системе на основе apt.

  • Это сохранит / восстановит пакеты, sources.list, связку ключей и автоматически установленные состояния.
  • Он также может сохранять / восстанавливать уже не загружаемые пакеты, используя dpkg-repack.

источник: man apt-clone

APT-Clone используется ubiquity (Установщик Ubuntu) для процесса обновления. Это намного лучше, чем dpkg --get-selections решение, потому что:

  1. Сохраняет всю информацию о хранилищах.
  2. Он отслеживает, какие пакеты были автоматически установлены.
  3. Позволяет перепаковывать локально установленные файлы DEB.

Как пользоваться

  1. устанавливать

    sudo apt-get install apt-clone
    
  2. Сделать резервную копию

    sudo apt-clone clone path-to/apt-clone-state-ubuntu-$(lsb_release -sr)-$(date +%F).tar.gz
    
  3. Восстановление резервной копии

    sudo apt-clone restore path-to/apt-clone-state-ubuntu.tar.gz
    

    Восстановить до новой версии:

    sudo apt-clone restore-new-distro path-to/apt-clone-state-ubuntu.tar.gz $(lsb_release -sc)
    

Это делает простой GZIP-файл tar, который можно легко редактировать и просматривать перед восстановлением на других машинах. Вот пример его структуры:

/
├── etc
│   └── apt
│       ├── preferences.d
│       ├── sources.list
│       ├── sources.list.d
│       │   ├── anton_-ubuntu-dnscrypt-vivid.list
│       │   ├── maarten-baert-ubuntu-simplescreenrecorder-vivid.list
│       │   └── megasync.list
│       ├── trusted.gpg
│       └── trusted.gpg.d
│           ├── anton__ubuntu_dnscrypt.gpg
│           ├── anton__ubuntu_dnscrypt.gpg~
│           ├── maarten-baert_ubuntu_simplescreenrecorder.gpg
│           └── maarten-baert_ubuntu_simplescreenrecorder.gpg~
└── var
    └── lib
        └── apt-clone
            ├── extended_states
            ├── installed.pkgs
            └── uname

Я рекомендую использовать план. Несмотря на то, что он предназначен для серверов, он также может использоваться с настольных компьютеров. Он создаст скрипт оболочки /chef/puppet, который вы сможете использовать для переустановки всех ваших пакетов.

Вы можете использовать Synaptic, чтобы сохранить текущее состояние установленного пакета. В Synaptic выберите "файл / сохранить метки", введите имя файла, в который нужно сохранить состояние, и обязательно установите флажок "Сохранить полное состояние, а не только изменения".

Сохраненный из этого файл может быть загружен на новый компьютер с помощью "маркировки файла / чтения" в Synaptic.

Существует также инструмент под названием Aptik (как с командной строкой, так и с графическим интерфейсом), который может помочь вам просмотреть список всех установленных пакетов, с возможностью выбрать / отменить выбор некоторых из них, создать резервную копию списка, а затем восстановить тот же набор пакетов в другая система.

Установить:

sudo add-apt-repository -y ppa:teejee2008/ppa
sudo apt-get update
sudo apt-get install aptik

Дополнительная информация: https://teejeetech.in/aptik/

введите описание здесь

Как видно на скриншоте, Aptik позволяет также выполнять резервное копирование и восстановление PPA, что, безусловно, будет необходимо для установки некоторых установленных пакетов.

Вы хотите переустановить пакеты сейчас там 12.04, верно?

Если это так, это очень легко. Вам понадобится учетная запись Ubuntu Single Sign On. (Создайте его перед переустановкой, чтобы ваша система синхронизировалась.)

  1. Перейдите в Центр программного обеспечения и найдите пункт "Синхронизировать между компьютерами..." в меню "Файл".

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

  3. Когда вы установите новую версию, этот компьютер будет считаться новым компьютером.

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

  5. Нажмите здесь; вы получите список всех приложений. Выберите "установить" в приложении, которое вы хотите установить.

Вы можете посмотреть на apt войти под /var/log/apt/ и dpkg войти под /var/log/

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

dpkg -l | grep '^ii '

В Unix StackExchange есть отличное объяснение, которое описывает, как использовать aptitude для вывода списка пакетов, не установленных как зависимости, и как сравнить этот список со списком пакетов по умолчанию для вашей версии Ubuntu.

Чтобы получить файл манифеста для настольных версий 12.04 и новее, посетите этот сайт, выберите свой выпуск и прокрутите вниз под образами компакт-дисков раздел "Файлы". Вы найдете что-то вроде "ubuntu-12.04.4-desktop-amd64+mac.manifest", которое соответствует вашей архитектуре.

Для версий сервера вам необходимо получить файл манифеста из ISO, который использовался для установки исходной системы. Для VPS или облачного сервера ваш провайдер может предоставить доступ к изображениям или вам может потребоваться связаться с ними.

Вот пример использования кода из упомянутого поста, а также модификации для установки на новый сервер.

Старый сервер (код из другого поста, вывод сохранен в файл):

aptitude search '~i !~M' -F '%p' --disable-columns | sort -u > currently-installed.list
wget -qO - http://mirror.pnl.gov/releases/precise/ubuntu-12.04.3-desktop-amd64.manifest \
  | cut -f1 | sort -u > default-installed.list
comm -23 currently-installed.list default-installed.list > user-installed.list

На новом сервере скопируйте файл с помощью scp, а затем с помощью sed добавьте 'install' к каждой строке (-i выполняет inline-replace). Затем вы можете использовать список в качестве входных данных для 'dpkg --set-selections' и установить пакеты с помощью apt-get:

scp user@oldserver:user-installed.list .
sed -i 's/$/\tinstall/' user-installed.list
sudo dpkg --set-selections < user-installed.list
sudo apt-get dselect-upgrade

Перед тем как приступить к выполнению этой задачи, я рекомендую прочитать и понять все части поста, упомянутого в начале, а затем обратиться к справочному руководству aptitude для получения подробной информации о шаблонах поиска.

Я удивлен apt-cache Команда, разработанная именно для этой цели, не упоминалась выше...

apt-cache pkgnames

Для получения дополнительной информации, запустите apt-cache --help:

** apt-cache - инструмент низкого уровня, используемый для запроса информации
из файлов двоичного кэша APT

Команды:
   gencaches - сборка пакета и исходного кэша
   showpkg - показать некоторую общую информацию для одного пакета
   showrc - Показать исходные записи
   статистика - Показать некоторые основные статистические данные
   dump - Показать весь файл в краткой форме
   dumpavail - распечатывает доступный файл на стандартный вывод
   unmet - показывать неудовлетворенные зависимости
   search - поиск в списке пакетов по шаблону регулярных выражений
   show - показать читаемую запись для пакета
   зависимость - показать необработанную информацию о зависимости для пакета
   rdepends - показывает информацию об обратной зависимости для пакета
   pkgnames - список имен всех пакетов в системе
   dotty - генерирует графы пакетов для GraphViz
   xvcg - генерирует графы пакетов для xvcg
   policy - Показать параметры политики

Опции:
  -h это текст справки.
  -p=? Кеш пакета.
  -s=? Исходный кеш.
  -q Отключить индикатор прогресса.
  -i Показать только важные команды для команды unmet.
  -c=? Прочитайте этот файл конфигурации
  -o=? Установите произвольную опцию конфигурации, например -o dir::cache=/tmp
Для получения дополнительной информации смотрите справочные страницы apt-cache(8) и apt.conf(5).
**

Для полного изложения см:

https://help.ubuntu.com/community/SwitchingToUbuntu/FromLinux/RedHatEnterpriseLinuxAndFedora

половина пути через страницу:

dpkg --list

Помогите этому сообществу вики - добавьте актуальные решения.


dpkg, xargs, & apt-get

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

dpkg -l | awk  '{print $2}' > package_list.txt

Для выполнения массовой установки перечисленных пакетов вам необходимо отредактировать файл package_list.txt. Удалите странные строки в верхней части файла с помощью текстового редактора. Затем вы можете использовать эту команду для установки пакетов из созданного файла, используя:

xargs < package_list.txt apt-get install -y

apt-cache, xargs, & apt-get

Используйте этот метод, только если вы хотите, чтобы все текущие пакеты были установлены с использованием списка (который включает в себя автоматически установленные и т. Д.).

Выведите ответ "apt-cache pkgnames" в файл, который мы просто назовем "package_list.txt". Вы можете сделать это с помощью:

apt-cache pkgnames > package_list.txt

Затем, когда вы хотите установить пакеты из "package_list.txt", вы должны использовать эту команду:

xargs < package_list.txt apt-get install -y

apt-mark, xargs, & apt-get

Мы можем использовать команду apt-mark showmanual дать список пакетов, которые были вручную или изначально установлены с Ubuntu. Мы хотим вывести это в файл, который мы будем называть "package-list.txt". Используйте эту команду для выполнения этого:

apt-mark showmanual > package-list.txt

Команда, которую мы будем использовать для установки пакетов из файла "package_list.txt", приведена ниже.

xargs < package_list.txt apt-get install -y

Aptik Migration Utility

Утилита для упрощения переустановки пакетов программного обеспечения после обновления / переустановки дистрибутивов на основе Ubuntu.
[ Launchpad | Аптик ]

Для получения информации о Aptik, попробуйте посетить его официальную страницу, и для скриншота нажмите здесь или просмотрите конец этого раздела.

Установка Aptik проста. Следуй этим шагам:

  1. Добавьте PPA с:
    sudo add-apt-repository -y ppa:teejee2008/ppa

  2. Обновите apt с помощью приведенной ниже команды.
    sudo apt-get update

  3. Установите Aptik, используя:
    sudo apt-get install aptik


Команда ниже также выведет список всех установленных пакетов,

grep ' installed ' /var/log/dpkg.log /var/log/dpkg.log.1 | awk '{print $5}' | sort -u

Сохранить список установленных пакетов в файл с именем installed_packages.txt, просто беги:

dpkg-query --list >> installed_packages.txt

В дополнение к пакетам APT многие пакеты GUI в настоящее время распространяются в виде оснасток.

Если ваш пакет не может быть найден в apt list --installed тогда попробуй snap list:

$ snap list

Name                  Version                     Rev   Tracking  Publisher       Notes
gimp                  2.10.10                     165   stable    snapcrafters    -
gnome-calculator      3.32.1                      406   stable/…  canonical✓      -
keepassxc             2.4.1                       267   stable    keepassxreboot  -
...

Это также хорошая идея, чтобы добавить /snap/bin в PATH, чтобы вы могли запустить их из терминала (выполняется автоматически для пользователей без полномочий root).

1. Перечислите установленные пакеты программного обеспечения в Ubuntu

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

sudo apt list --installed

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

Listing...
acl/xenial,now 2.2.52-3 amd64 [installed]
adduser/xenial,xenial,now 3.113+nmu3ubuntu4 all [installed]
apache2/xenial-updates,xenial-security,now 2.4.18-2ubuntu3.1 amd64 [installed]
apache2-bin/xenial-updates,xenial-security,now 2.4.18-2ubuntu3.1 amd64 [installed,automatic]
apache2-data/xenial-updates,xenial-updates,xenial-security,xenial-security,now 2.4.18-2ubuntu3.1 all [installed,automatic]
apache2-doc/xenial-updates,xenial-updates,xenial-security,xenial-security,now 2.4.18-2ubuntu3.1 all [installed]
apache2-utils/xenial-updates,xenial-security,now 2.4.18-2ubuntu3.1 amd64 [installed]
apparmor/xenial-updates,now 2.10.95-0ubuntu2.5 amd64 [installed,automatic]
apt/xenial-updates,now 1.2.19 amd64 [installed]
apt-utils/xenial-updates,now 1.2.19 amd64 [installed]
...

2. Используйте программу LESS

Чтобы легко прочитать весь вывод, вы можете использовать less программа.

sudo apt list --installed | less

3. Используйте команду GREP

Вы можете найти конкретный пакет через вывод, используя grep программа.

sudo apt list --installed | grep -i apache

4. Перечислите все пакеты, которые включают Apache

В результате выполнения вышеприведенной команды будут перечислены все пакеты, которые включают apache в их именах.

apache2/xenial-updates,xenial-security,now 2.4.18-2ubuntu3.1 amd64 [installed]
apache2-bin/xenial-updates,xenial-security,now 2.4.18-2ubuntu3.1 amd64 [installed,automatic]
apache2-data/xenial-updates,xenial-updates,xenial-security,xenial-security,now 2.4.18-2ubuntu3.1 all [installed,automatic]
apache2-doc/xenial-updates,xenial-updates,xenial-security,xenial-security,now 2.4.18-2ubuntu3.1 all [installed]
apache2-utils/xenial-updates,xenial-security,now 2.4.18-2ubuntu3.1 amd64 [installed]
libapache2-mod-php/xenial,xenial,now 1:7.0+35ubuntu6 all [installed,automatic]
libapache2-mod-php7.0/xenial-updates,now 7.0.13-0ubuntu0.16.04.1 amd64 [installed,automatic]
libapache2-mod-security2/xenial,now 2.9.0-1 amd64 [installed]
libapache2-modsecurity/xenial,xenial,now 2.9.0-1 all [installed]

Apt поддерживает шаблоны, соответствующие именам пакетов и опциям для списка установленных (--installed) пакеты, обновляемые (--upgradeable) пакеты или все доступные (--all-versions) версии пакета.

5. Используйте программу DPKG

Еще одна альтернатива, которую вы можете использовать для просмотра списка установленных пакетов программного обеспечения на вашем Ubuntu VPS - это dpkg команда.

sudo dpkg -l

Вывод команды предоставит вам такую ​​информацию, как имя пакета, версия, архитектура и краткое описание пакета. Конечно, вы можете использовать grep Запрограммируйте снова для поиска определенного пакета.

sudo dpkg -l | grep -i apache

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

ii  apache2                       2.4.18-2ubuntu3.1                     amd64        Apache HTTP Server
ii  apache2-bin                   2.4.18-2ubuntu3.1                     amd64        Apache HTTP Server (modules and other binary files)
ii  apache2-data                  2.4.18-2ubuntu3.1                     all          Apache HTTP Server (common files)
ii  apache2-doc                   2.4.18-2ubuntu3.1                     all          Apache HTTP Server (on-site documentation)
ii  apache2-utils                 2.4.18-2ubuntu3.1                     amd64        Apache HTTP Server (utility programs for web servers)
rc  apache2.2-common              2.2.22-6ubuntu5.1                     amd64        Apache HTTP Server common files
ii  libapache2-mod-php            1:7.0+35ubuntu6                       all          server-side, HTML-embedded scripting language (Apache 2 module) (default)
rc  libapache2-mod-php5           5.5.9+dfsg-1ubuntu4.16                amd64        server-side, HTML-embedded scripting language (Apache 2 module)
ii  libapache2-mod-php7.0         7.0.13-0ubuntu0.16.04.1               amd64        server-side, HTML-embedded scripting language (Apache 2 module)
ii  libapache2-mod-security2      2.9.0-1                               amd64        Tighten web applications security for Apache
ii  libapache2-modsecurity        2.9.0-1                               all          Dummy transitional package
ii  libapr1:amd64                 1.5.2-3                               amd64        Apache Portable Runtime Library
ii  libaprutil1:amd64             1.5.4-1build1                         amd64        Apache Portable Runtime Utility Library
ii  libaprutil1-dbd-sqlite3:amd64 1.5.4-1build1                         amd64        Apache Portable Runtime Utility Library - SQLite3 Driver
ii  libaprutil1-ldap:amd64        1.5.4-1build1                         amd64        Apache Portable Runtime Utility Library - LDAP Driver
.

В конкурсе этого руководства вы успешно научились составлять список установленных пакетов в Ubuntu.

Я думаю, что это интересно отметить apt list --installed или же dpkg-query --list на самом деле использовать файл под названием /var/lib/dpkg/status сзади, где вся информация о пакетах - борода.

Так что если вы хотите иметь дело с супер расширенным списком пакетов просто cat /var/lib/dpkg/status,

Примечание: не меняйте /var/lib/dpkg/status файл.

Другой, простой и графически красивый подход заключается в использовании apt showкоманда с '~i' -aфлаг для отображения только установленных пакетов:

      apt show '~i' -a

Нет необходимости использовать sudo.

По умолчанию он также дает полезную информацию обо всех пакетах, например:

Пакет: linux-headers-generic-hwe-20.04
Версия: 5.13.0.30.33~20.04.17
Статус: установить ок установлено
Приоритет: необязательно
Раздел: ядро
Источник: linux-meta-hwe-5.13
Сопровождающий: Команда ядра Ubuntu
Установленный размер: 19,5 КБ
Зависит: linux-headers-5.13.0-30-generic
Размер загрузки: неизвестен
APT-ручная установка: нет
APT-источники: /var/lib/dpkg/status
Описание: Общие заголовки ядра Linux.
 Этот пакет всегда будет зависеть от последних общих заголовков ядра.
 доступный.

Если вы хотите исключить эту информацию, используйте grepчтобы напечатать только имя пакета:

      apt show '~i' | grep 'Package:'

Например:

      Package: linux-firmware
Package: linux-generic-hwe-20.04
Package: linux-image-generic-hwe-20.04
Package: linux-headers-generic-hwe-20.04
Package: linux-headers-5.13.0-28-generic
Package: linux-hwe-5.13-headers-5.13.0-28
Package: linux-headers-5.13.0-30-generic
Package: linux-hwe-5.13-headers-5.13.0-30
Package: linux-modules-5.13.0-28-generic
Package: linux-modules-extra-5.13.0-28-generic
Package: linux-modules-5.13.0-30-generic
Package: linux-modules-extra-5.13.0-30-generic

Посылка dctrl-tools предоставить grep-status Инструмент для получения списка пакетов, помеченных как установленные в вашей системе:

sudo apt install dctrl-tools

Использование:

grep-status -FStatus -sPackage -n   "install ok installed"

увидеть: man dctrl-tools

У меня была установка Ubuntu Server на поврежденной SD-карте, с которой я больше не мог загружаться, и мне нужно было восстановить те пакеты, которые я на ней установил.

К счастью,dpkgобеспечивает--rootвозможность указать путь к альтернативной корневой файловой системе (т.е./).

Таким образом, в новой установке Ubuntu Server на другой SD-карте после монтирования поврежденной файловой системы SD-карты в/media/external-sd-card-root-fsиспользуя второе устройство чтения SD-карт, можно перечислить установленные пакеты сломанной системы (и надеяться, что в исследованных файлах нет поврежденных секторов):

      dpkg --root=/media/external-sd-card-root-fs --get-selections

Есть много способов сделать это. Если вы используете CentOS, как я, вы можете использовать это: 1. yum list installed2. rpm -qa

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