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

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

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

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

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

aptitude search '~i!~M'

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


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

Package: grub-commonArchitecture: amd64Auto-Installed: 0Package: linux-headers-2.6.35-22-genericArchitecture: amd64Auto-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 k3bCommandline: apt-get install jhead...

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

(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:14Commandline: apt-get install gpartedStart-Date: 2012-09-23  15:02:51Commandline: apt-get install sysstat...

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

dpkg --get-selections > list.txt

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

dpkg --clear-selectionssudo 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 файл в вашей домашней папке или вы можете указать свой собственный путь.

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

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

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

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

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

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

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

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

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

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

Related.

Similar question at unix.stackexchange.com “List packages by installation date”