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

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

1550 голосов | спросил Ivan 17 FriEurope/Moscow2010-12-17T05:08:49+03:00Europe/Moscow12bEurope/MoscowFri, 17 Dec 2010 05:08:49 +0300 2010, 05:08:49

19 ответов


1705

Ubuntu 14.04 и выше

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

apt list --installed

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

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

 dpkg --get-selections | grep -v deinstall

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

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

 dpkg --get-selections | grep postgres

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

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

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

 dpkg -l

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

ответил Sabacon 17 FriEurope/Moscow2010-12-17T06:02:36+03:00Europe/Moscow12bEurope/MoscowFri, 17 Dec 2010 06:02:36 +0300 2010, 06:02:36
376

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

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 указывает, что пакет был явно установлен и не является только зависимостью.

ответил intuited 29 AM00000010000001631 2012, 01:35:16
179

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

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
ответил gogaman 16 Maypm12 2012, 22:26:48
173

Чтобы отобразить все пакеты намеренно установленные (не как зависимости) с помощью команд 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
...
ответил bcl 2 FebruaryEurope/MoscowbSat, 02 Feb 2013 14:39:47 +0400000000pmSat, 02 Feb 2013 14:39:47 +040013 2013, 14:39:47
57
apt-mark showmanual

состояние man-страниц:

  

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

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

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

apt-mark showmanual >list-installed.txt
ответил Tim Tisdall 10 J000000Thursday14 2014, 17:43:47
38

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
ответил kyleN 16 Maypm12 2012, 22:40:42
36

Чтобы просмотреть все установленные пакеты,

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

или

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

или

dpkg --get-selections > 1.txt

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

ответил karthick87 17 FriEurope/Moscow2010-12-17T06:35:42+03:00Europe/Moscow12bEurope/MoscowFri, 17 Dec 2010 06:35:42 +0300 2010, 06:35:42
33

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

Файл, сохраненный из него, может быть загружен на новый компьютер с использованием «файлов /чтений» в Synaptic.

ответил Nerdfest 17 FriEurope/Moscow2010-12-17T07:46:37+03:00Europe/Moscow12bEurope/MoscowFri, 17 Dec 2010 07:46:37 +0300 2010, 07:46:37
32

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

ответил Tamer 12 PMpTue, 12 Apr 2011 16:26:16 +040026Tuesday 2011, 16:26:16
31

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

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

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

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

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

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

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

ответил Nirmik 16 Maypm12 2012, 22:26:35
30

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

Для установки:

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

Дополнительная информация: http://www.teejeetech.in/2014/04 /aptik-v14.html

введите описание изображения здесь>> </p>

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

ответил Sadi 31 Mayam14 2014, 00:22:43
27
  

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

     
  • Он сохранит /восстановит пакеты, sources.list, keyring и   автоматически установленные состояния.
  •   
  • Он также может сохранять /восстанавливать больше загружаемых пакетов, используя 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)
    

Он создает простой gzipped 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
ответил user.dz 6 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowSun, 06 Sep 2015 02:09:50 +0300 2015, 02:09:50
24

Существует отличное объяснение 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, чтобы добавить «установить» в каждую строку (-i выполняет inline-replace). Затем вы можете использовать список в качестве входа в «dpkg --set-selections» и установить пакеты с помощью apt-get:

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

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

ответил thinkmassive 10 FebruaryEurope/MoscowbMon, 10 Feb 2014 20:35:07 +0400000000pmMon, 10 Feb 2014 20:35:07 +040014 2014, 20:35:07
22

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

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

dpkg -l | grep '^ii '
ответил Maythux 13 MarpmThu, 13 Mar 2014 14:36:20 +04002014-03-13T14:36:20+04:0002 2014, 14:36:20
18

Для полного сокращения см .:

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

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

  

dpkg --list

ответил adriano72 31 J000000Wednesday13 2013, 17:21:06
18

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

apt-cache pkgnames

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

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

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

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

В приведенной ниже команде также перечислены все установленные пакеты,

grep ' installed ' /var/log/dpkg.log /var/log/dpkg.log.1 | awk '{print $5}' | sort -u
ответил Avinash Raj 30 Maypm14 2014, 22:36:24
14

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


dpkg, xargs, & APT-получить

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

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

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

xargs < package_list.txt apt-get install -y

apt-cache, xargs и & APT-получить

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

Вывести ответ «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-получить

Мы можем использовать команду «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

  

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

Информацию о 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

 Утилита миграции Aptik v16.5.2


ответил Avinash Raj 30 Maypm14 2014, 22:36:24
13

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

dpkg-query --list >> installed_packages.txt
ответил wb9688 12 Mayam15 2015, 11:29:23

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

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132