(Этот вопрос очень похож на 10458. Было высказано предположение, что Fedora и Ubuntu / Debian достаточно разные, чтобы гарантировать разные ответы.)
Поскольку я использую любую установку Ubuntu, я постепенно устанавливаю несколько пакетов сверх базовой установки. Если я переустанавливаю или мне нужно установить новую машину, я обычно хочу переустановить эти конкретные пакеты, и я хочу сделать это быстро, чтобы вернуться к работе с минимумом хлопот. Насколько я видел все менеджеры пакетов ( apt-get
, aptitude
и synaptic
) может сказать мне , какие установлены пакеты, и все они имеют бревна (хотя и различных единиц для каждого инструмента, который является хлопот). Но никто из них не может сказать мне, какие пакеты у меня естьустановлен, в отличие от их зависимостей или системных обновлений. Даже журналы хитры в том, что я не совсем уверен, что мне следует из них извлекать или как их интегрировать (в случае различных инструментов семейства apt). Это означает, что каждый раз, когда я переустанавливаю или даже просто делаю резервную копию, я не уверен, как заново создать этот список.
Я не обязательно ожидаю, что какой-либо инструмент сделает это для меня, но если они этого не делают, я ищу обходные пути. Даже шаблоны для поиска, хорошие эмпирические правила или четкое представление о том, что именно регистрируется, были бы полезны. Здесь не может быть «лучшего ответа», но хорошие будут очень полезны.
Большинство ответов ниже дают некоторое приближение к тому, что я ищу, и в некоторой степени полезны. Выбранный - тот, который ближе всего подходит к достаточно автоматическому способу переустановки моих инструментов в новой системе, даже со всеми ее оговорками.
Ответы:
На любом компьютере с Debian это один из распространенных способов дублирования набора пакетов. На старой машине:
Скопируйте файл
my_favorite_packages
на новый компьютер (флэш-накопитель является хорошим вариантом, ноscp
также отлично работает). Затем запустите эту последовательность (с правами суперпользователя):Это не дает вам только те пакеты, которые вы установили. Он также получает их зависимости и т. Д. Кроме того, если хранилища между двумя компьютерами разные, все ставки отключены.
Что касается журналов,
apt-get
ведет журнал в/var/log/apt/history.log
(спасибо Tshepang за обновление этого в комментарии);dpkg
делает (в/var/log/dpkg.log
), но это, как известно, трудно анализировать и может быть прочитано только с привилегиями root;aptitude
имеет один на/var/log/aptitude
и вы можете просматривать его с правами обычного пользователя.Насколько я могу судить, вы правы, что ни один из этих журналов не отслеживает конкретно то, что вы установили, в отличие от автоматически устанавливаемых зависимостей. Вы можете получить эту информацию, однако, из
aptitude
поиска. Поиск всех установленных пакетов, которые также были установлены автоматически:Если вам нужны только те, которые вы установили (не авто-зависимости), отмените
~M
:Если вы хотите, чтобы он был отформатирован так, чтобы у вас были только имена пакетов и слово «установить»,
aptitude
можете сделать это тоже. Это дает вам список готовых к подачеdpkg --get-selections
:(У меня ничего нет в системах RedHat или RedHat. Извините. На самом деле нет единого ответа для Linux как такового, поскольку управление пакетами - это большая часть того, что делает разные дистрибутивы разными .)
источник
apt-get
,synaptic
иaptitude
(насколько я видел). Это с начала 2010 года.dpkg.log
Ubuntu 14.04 эти утверждения, похоже, не соответствуют действительности, так как любой пользователь, которого я могу получить, выбирает легко, не тривиально, но не слишком сложно.awk '$3 != "install" { next } ; { gsub(/:.+/, "", $4) ; print $4 }' /var/log/dpkg.log | sort | uniq
awk '$3 !~ /install|remove|purge/ { next } { gsub(/remove|purge/, "uninstall", $3) ; gsub(/:.+/, "", $4) ; a[$4]=$3 } END { for (p in a) { if (a[p] == "install") { print p } } }' /var/log/dpkg.log | sort -u
делает.Используйте,
dpkg -l '*' > jaunty.original
чтобы запомнить все установленные пакеты в только что установленной системе.После того, как вы установили все ваши дополнительные пакеты, сделайте
dpkg -l '*' > mysystem.2009017
.Дополнительные пакеты - только разница:
diff jaunty.original mysystem.2009017
источник
Способность на самом деле довольно хороша в этом. Aptitude знает, когда что-то было установлено вручную или по зависимости, и вы можете сказать ему, чтобы он удалил вещи, которые больше не нужны и были установлены только потому, что что-то еще зависело от этого, всегда поддерживая вашу систему как можно меньше.
Существует несколько пакетов, которые составляют установку Ubuntu, Ubuntu-Minimal, Ubuntu-Desktop, Ubuntu-Server и так далее. Если вы скажете Aptitude пометить их как установленные вручную и удалить все остальное, вы получите минимально возможное количество пакетов.
Я объясняю, как это сделать, в двух постах в моем блоге: Очистка Debian GNU / Linux и Очистка Debian GNU / Linux (или Ubuntu), повторение . Короче говоря, вы ищете ответ:
В прошлый раз, когда я работал с этим, если вы использовали apt-get, то это не сработало. Вот почему я всегда рекомендую aptitude, и насколько я знаю, Debian отвергает apt-get в пользу aptitude.
Я не знаю, как это сделать на Fedora, и вы, вероятно, должны отделиться, чем в другой вопрос. Fedora и Ubuntu являются разными операционными системами и должны рассматриваться как таковые (даже если они совместно используют свое ядро и некоторые другие вещи).
источник
grep
:aptitude search '~i !~M'
следует сделать свое дело.apt-get
не считается устаревшим. Debian рекомендуетaptitude
управлять пакетами из командной строки, но это далеко не устарелоapt-get
.На Debian apt-show-version показывает версии установленных пакетов.
источник
В системах на основе apt смотрите /var/log/apt/term.log. Для меня есть довольно четкая линия, чтобы нарисовать, где установка закончилась и где мои установки начались.
источник
От
man aptitude-create-state-bundle
:Это сохранит ту же информацию, что
aptitude
и данные о том, какие пакеты были установлены вручную.Он предназначен для использования с
aptitude-run-state-bundle
:источник
При простом использовании
dpkg
вы не знаете, был ли пакет установлен пользователем вручную или автоматически (как зависимость или во время первоначальной установки ОС). Если вы хотите сохранить эту информацию, вам нужно получить список только тех пакетов, которые фактически были установлены вручную.Для этого вы можете использовать любой из этих двух строк. Оба дают одинаковый результат на моей машине и более точны, чем все решения, предложенные до сих пор в этом вопросе. Они представляют собой комбинацию двух ответов (1) и (2) . Обратите внимание, что я первоначально разместил этот ответ здесь .
Использование
apt-mark
:Использование
aptitude
:Очень немногие пакеты по-прежнему попадают в трещины, хотя я подозреваю, что они на самом деле устанавливаются пользователем, либо сразу после установки через настройку языковой локализации, либо, например, через установщик кодеков Totem. Кроме того, версии заголовков linux также накапливаются, хотя я установил только не зависящий от версии метапакет. Примеры:
Как это работает
sed
удаляют оставшиеся пробелы в конце строки.Другие возможности не работают так же хорошо:
ubuntu-14.04-desktop-amd64.manifest
файла ( здесь для Ubuntu 14.04) вместо/var/log/installer/initial-status.gz
. Дополнительные пакеты отображаются как установленные вручную, хотя это не так.apt-mark showauto
вместо/var/log/installer/initial-status.gz
.apt-mark
например, не включает пакет xserver-xorg, в то время как другой файл включает.Оба перечисляют больше пакетов, чем приведенное выше решение.
источник
Я предвзят, и решение, которое я представляю, не всегда возможно, но я устал от этой ситуации. В результате я больше ничего не устанавливаю с помощью инструментов менеджера обновлений / пакетов.
Я выбрал довольно сложный путь (у меня были строгие требования к версиям). Я создал огромный make-файл, который загружает, компилирует и устанавливает в свой домашний каталог каждый пакет (программу, библиотеку и все, что мне нужно). Я развивал это постепенно, шаг за шагом. Makefile загружает и компилирует все, даже компиляторы.
Когда я перехожу на новую систему или переустанавливаю, я просто копирую make-файл (плюс некоторые вспомогательные материалы), запускаю make world и возвращаюсь на следующий день.
Для некоторых программ, которые я разрабатываю (поэтому у меня есть контроль), я использую инструмент, который я запрограммировал, каштановый менеджер пакетов . Вроде как .app папки на MacOSX. Все в пакете, поэтому я знаю, что установлено в любое время, и я знаю, что он самодостаточен и самодостаточен (за исключением системных библиотек)
источник