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


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


1578
2017-12-17 02:08


происхождения


Это уже ответили Вот, - Simon Quigley
Вау, пройдя ответы, похоже, существует так много способов сделать это: / - Madivad
Как выполнить массовую установку в новой системе из такого текстового файла? - Elysium
@Madivad, которые эти менеджеры пакетов когда-то предполагали сделать жизнь проще ... - René Nyffenegger
Аналогичный вопрос в unix.stackexchange.com "Список пакетов по дате установки" - JamesThomasMoon1979


ответы:


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 или любые другие варианты, необходимые здесь)


1730
2017-12-17 03:02



Затем, при установке на новый компьютер, выполните cat ~/Desktop/packages > sudo dpkg --set-selections && sudo apt-get dselect upgrade  источник - koanhead
Синтаксис для dpkg, возможно, немного изменился с 2006 года, потому что эта команда не работает для меня, @koanhead. sudo dpkg --set-selections < ~/Desktop/packages && sudo apt-get -u dselect-upgrade делает трюк. - James
Обратите внимание, что это не будет отслеживать, какие пакеты были явно установлены пользователем и которые были установлены как зависимости. Это означает, что если вы используете этот метод для воссоздания вашей установки на другом компьютере, apt не сможет удалить ненужные зависимости при удалении данного пакета. - intuited
Печально и удивительно, что комментарий @intuited не лучше понятен сообществу. Могут ли более «высоко оцененные» участники перестать думать больше, прежде чем давать совет, что просто перезагрузка старых пакетов на новой версии ubuntu не является хорошей идеей (?). Со всеми параметрами dpkg я до сих пор не вижу одного, который вытаскивает «явно» установленные пакеты пользователем, чтобы список THAT мог быть перезагружен и разрешен для установки его зависимостей; Я хотел бы узнать это - пожалуйста, поделитесь этой информацией. Тем временем сделайте список пакетов, которые вам действительно нужны, при повторной установке и запуске - Ricalsin
Мы все знаем, что Linux отличает людей без фотографической памяти, но серьезно, что было бы неправильно с apt list installed, Когда-нибудь нам следует перестать систематически отказываться от принципа «сохранить простые вещи».


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

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


380
2017-08-28 21:35



Это должен быть правильный ответ. Зачем нужны списки? - Stavros Korokithakis
Эта должен быть ответом, но используя уместность немного ненадежна из-за Multiarch В данный момент (исправления в пути), к сожалению. Тем не менее +1 для указания только на перечисление явно установленных пакетов и способ сделать это (несмотря на то, что он не будет работать в 11.10+ в настоящее время). - gertvdijk
@intuited «Fix Released» для Precise (некоторое время назад). :) - gertvdijk
В этом списке перечислены все пакеты, а не только установленные вручную пакеты на Ubuntu 13.10. - Eamon Nerbonne
на Ubuntu-15.10, необходимо сначала установить aptitude например: sudo apt-get install aptitude - Mark Mikofski


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

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

179
2018-05-16 18:26



Отличный совет о восстановлении на другой машине. +1. - Drew Noakes
Миграция между двумя разными машинами ubuntu 12.04, этот подход нарушил мою систему. это заняло некоторое время, пока я не понял, что так или иначе ubuntu-desktop был удален - возможно, из-за одной из команд dpkg. будьте осторожны, мне потребовались часы, чтобы восстановить повреждение! - Karl Frisk
И иногда система обновляет приложение, которое вы специально хотите, чтобы система не прикасалась к нему когда-либо, выполните пожар в конце команд sudo apt-mark hold name-your-package  , Это предотвратит обновление apt-get до текущей версии, которая является по умолчанию для процесса обновления. - Faron


Чтобы перечислить все пакеты намеренно установленный (не как зависимости) с помощью команд 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
...

174
2018-02-02 10:39



Или (с помощью zgrep и удаления сообщений об обновлении): zgrep -hE '^(Start-Date:|Commandline:)' $(ls -tr /var/log/apt/history.log*.gz ) | egrep -v 'aptdaemon|upgrade' | egrep -B1 '^Commandline:' - belacqua
Означает ли этот подход пакеты, установленные с dpkg?? - drevicko
Хотя приведенные выше простые ответы подходят для обычного пользователя. Этот метод, безусловно, лучше всего подходит для отслеживания всех настроек, сделанных для машины, поскольку он также показывает, что было удалено или добавлено из базового изображения, поскольку оно перечисляет их в последовательности, в которой оно было выполнено, и помогает вам помнить, что правильная последовательность, чтобы добавить их обратно в другую систему. - AllGamer
@drevicko вы правы, он не перечисляет пакеты, которые установлены с dpkg - Steve Buzonas
Это очень удобно для поддержания организованности - мой мозг предпочитает это таким образом по любой причине .. - JeremyFelix


apt-mark showmanual

man-страницы:

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

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

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

apt-mark showmanual >list-installed.txt

60
2017-07-10 13:43



На Debian «apt-mark showmanual» не работал на «сжатии», но работал над «хриплым», - Wadih M.
Как и большинство других ответов, apt-mark showmanual на самом деле. В нем также перечислены тонны автоматически установленных пакетов, возможно, часть базовой установки. - mivk
Ну, вопрос был в установленных пакетах, и это дает все установленные пакеты за вычетом автоматически установленных зависимостей. Он включает исходные пакеты как часть начальной установки. Я думаю, вы можете запустить это на новой установке, чтобы получить список установок по умолчанию, а затем вычесть это из этого, чтобы увидеть разницу. - Tim Tisdall


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

38
2018-05-16 18:40



Typying # for pkg in `cat installed-pkgs`; do apt-get install -y $pkg; done во второй системе я сделал это так, чтобы он установил пакеты. - xyz
@julianromera: apt-get install -y $(< installed-pkgs) сделает так, чтобы apt-get запускался только один раз и сразу заботился обо всех зависимостях. - jamadagni
@julianromera ... исправьте меня, если я ошибаюсь, но для создания приложения с зависимостями перед выполнением установки обычно будет sudo apt-get build-dep name-package; sudo apt-get install name-package;  ? - Faron


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

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

или

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

или

dpkg --get-selections > 1.txt

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


36
2017-12-17 03:35





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

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


33
2017-12-17 04:46





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


32
2018-04-12 12:26



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