Как Вы отслеживаете, какие пакеты были установлены на Ubuntu (Linux)?

(Этот вопрос очень похож на 10 458. Было предложено, чтобы Fedora и Ubuntu/Debian достаточно отличались для гарантирования различных ответов.)

Поскольку я использую любую установку Ubuntu, я постепенно устанавливаю много пакетов свыше базовой установки. Если я переустанавливаю, или если я должен установить новую машину, я обычно хочу переустановить те определенные пакеты, и я хочу сделать это быстро для возвращения для работы с минимумом стычки. Насколько я видел все диспетчеры пакетов (apt-get, aptitude и synaptic) может сказать мне, какие пакеты установлены, и у них всех есть журналы (хотя различные для каждого инструмента, который является стычкой). Но ни один из них не может сказать мне, какие пакеты я установил, в противоположность их зависимостям или системным обновлениям. Даже журналы хитры в этом, я не совсем уверен, что я должен извлекать от них, или как интегрировать их (в случае различных способных инструментов семейства). Это означает, что каждый раз я переустанавливаю или даже просто копирую, я не уверен, как воссоздать тот список.

Я не обязательно ожидаю, что любой из инструментов сделает это для меня, но если они не делают я ищу обходные решения. Даже шаблоны к grep для, хорошие эмпирические правила или четкое представление о том, что точно регистрируется, были бы полезны. Не может быть "лучшего ответа" здесь, но хорошие были бы очень полезны.


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

38
задан 20.03.2017, 12:16

7 ответов

На базирующейся машине любого Debian это - один распространенный способ копировать набор пакета. На старой машине:

dpkg --get-selections "*" > my_favorite_packages

Скопируйте файл my_favorite_packages к новой машине (карта флэш-памяти является хорошим вариантом, но scp также хорошо работает). Затем выполните эту последовательность (с полномочиями пользователя root):

apt-get update
dpkg --set-selections < my_favorite_packages
apt-get -u dselect-upgrade

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

До журналов, apt-get сохраняет журнал в /var/log/apt/history.log (благодаря Tshepang для обновления этого в комментарии); dpkg делает (в /var/log/dpkg.log), но это заметно трудно проанализировать и может только быть считано с полномочиями пользователя root; aptitude имеет один в /var/log/aptitude и можно пролистать его с полномочиями обычного пользователя.

Насколько я могу сказать, Вы правы, что ни один из этих журналов не отслеживает конкретно, что Вы установили в противоположность автоустановленным зависимостям. Можно получить ту информацию, однако, от aptitude поиск. Ищут все установленные пакеты, которые были также установлены автоматически:

aptitude search '~i ~M'

Если Вы хотите только тех, Вы установили (не автозависимости), инвертируйте ~M:

aptitude search '~i !~M'

Если Вы хотите, который отформатировал так, чтобы у Вас были только названия пакетов и слова "установка", aptitude может сделать это также. Это дает Вам список, готовый питаться к dpkg --get-selections:

aptitude search '~i !~M' -F "%p install"

(У меня ничего нет на Redhat или основанных на Redhat системах.Прошу прощения. Действительно нет никакого ответа для Linux по сути, так как управление пакетом является большой частью того, что делает различные дистрибутивы отличающимися.)

31
ответ дан 07.12.2019, 08:50

Использовать dpkg -l '*' > jaunty.original к remeber все установленные пакеты в недавно установленной системе.

После установки всех дополнительных пакетов, делают dpkg -l '*' > mysystem.2009017.

Дополнительные пакеты являются просто различием: diff jaunty.original mysystem.2009017

7
ответ дан 07.12.2019, 08:50
  • 1
    Основная идея сильна: используйте командную строку, чтобы вывести список в настоящее время устанавливаемых приложений и затем использовать командную строку для установки тех пакетов на новой машине. Можно стать довольно творческими и конкретными с подходом. – pcapademic 17.07.2009, 02:13
  • 2
    я предпочитаю dpkg - получать-выборы – CesarB 17.07.2009, 14:19

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

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

Я объясняю, как сделать все это в двух сообщениях в моем блоге: Чистка GNU/Linux Debian и Чистка GNU/Linux Debian (или Ubuntu), повторение. Короче говоря, ответ, который Вы ищете:

aptitude search ~i | grep -v "i A"

В прошлый раз я работал с этим, если Вы использовали склонный - добираются, затем это не работало. Вот почему я всегда рекомендую способность и насколько я знаю, Debian удерживает от использования склонный - добираются в пользу способности.

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

3
ответ дан 07.12.2019, 08:50
  • 1
    я думаю, что можно получить ту информацию без необходимости grep: aptitude search '~i !~M' должен добиться цели. – Telemachus 17.07.2009, 13:57
  • 2
    Кроме того, apt-get не удерживается от использования. Debian рекомендует aptitude для управления пакетом на командной строке, но это находится на далеком расстоянии от осуждения apt-get. – Telemachus 17.07.2009, 14:17

На debian способных выставочных версиях показывает версии установленных пакетов.

2
ответ дан 07.12.2019, 08:50

В способных системах смотрят на /var/log/apt/term.log. Для меня существует довольно свободный путь для рисования, где установка закончилась и где мои установки начались.

1
ответ дан 07.12.2019, 08:50

Я смещаюсь, и решение, которое я представляю, не всегда возможно, но я устал от этой ситуации. Результат состоит в том, что я ничего больше не устанавливаю с инструментами обновления/диспетчера пакетов.

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

Когда я перемещаюсь в новую систему или переустанавливаю, я просто копирую make-файл (плюс некоторый материал поддержки), работаю, делают мир и возвращаются на следующий день.

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

0
ответ дан 07.12.2019, 08:50

От man aptitude-create-state-bundle:

aptitude-create-state-bundle производит сжатый архив, хранящий файлы, которые требуются, чтобы копировать текущее состояние архива пакета.

Это сохранит ту же информацию это aptitude имеет, на котором были вручную установлены пакеты.

Это предназначено, чтобы использоваться с aptitude-run-state-bundle:

aptitude-run-state-bundle распаковывает данный пакет состояния способности, созданный aptitude-create-state-bundle (1) к временному каталогу, вызывает на него с предоставленным, и удаляет временный каталог впоследствии.

1
ответ дан 07.12.2019, 08:50

Теги

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