Я установил простую Ubuntu 10.10 на свой компьютер и установил некоторые программы через apt-get. На прошлой неделе мне удалось все сломать и я начал с нуля, и мне нужно переустановить программное обеспечение. Есть ли способ создать список со всеми пакетами, которые я установил вручную?
Так что бы мне выдался список вроде texlive, ...
и нет texlive, texlive-dep1, textlive-dep2, ...
и все стандартные пакеты удалены?
Если бы я мог как-то выяснить, какие программы из обычной установки я удалил, это тоже было бы здорово!
Обновление 2015-05-23: теперь я использую Ansible в качестве управления конфигурацией в моих системах. Там я указываю пакеты для установки. Это служит цели, устанавливая все программы на новую систему, даже лучше. Таким образом, этот вопрос может быть входом в управление легкой конфигурацией.
something
и неsomething-common
так хорошо.Этот поток от superuser.com дает это решение:
источник
apt-get
, а также их зависимости. Так, например, если вы установилиaptitude
, то это также будет списокapt-xapian-index aptitude-common libboost-iostreams1.54.0 libclass-accessor-perl libcwidget3 libept1.4.12 libio-string-perl libparse-debianchangelog-perl libsigc++-2.0-0c2a libsub-name-perl libtimedate-perl libxapian22 python-chardet python-debian python-six python-xapian
Если ваши журналы apt находятся в / var / log / apt, что-то вроде этого должно работать:
Или, если вы хотите избавиться от некоторых повторяющихся нежелательных сообщений в выводе:
источник
Вы можете использовать apt-mark , но я рекомендую debfoster :
Это проверит все установленные пакеты и выяснит, какие из них поддерживают остальные:
Когда вы отвечаете «y» на каждый вопрос (просто нажмите Enter для быстрого перемещения), debfoster соберет список пакетов и построчно запишет их в файл. По умолчанию это в
/var/lib/debfoster/keepers
. Это выглядит так:Я настраиваю debfoster via,
/etc/debfoster.conf
чтобы разместить этот список/etc/debfoster-keepers
и отслеживать файл с помощью etckeeper, чтобы хранить историю и резервные копии. Ответ здесь показано , как установить список пакетов из новой строки с разделителями текстовый файл:Обратите внимание на ограничение: у очищенных пакетов перед ними стоит знак «-». Таким образом, вы хотите удалить эти строки перед вызовом apt-mark.
Хотя на сайте debfoster написано, что debfoster устарел в пользу aptitude, я предпочитаю быструю и простую настройку debfoster. Он помещает вас в середину вашей базы данных пакетов и позволяет вам очистить вещи, делая автоматические и ручные пакеты более очевидными.
Введите "h" в приглашении debfoster, чтобы объяснить ваши варианты. Тип "?" чтобы увидеть описание пакета. Как к здесь может быть полезным.
источник
Дает все установленные вручную пакеты (не системные пакеты, не зависимости). Для примеров это показывает,
build-essential
но нетgcc
.источник
Для тех, кто предпочитает использовать инструменты apt- *, есть утилита apt-mark, которая позволяет запрашивать и изменять ручное / автоматическое состояние.
Вы также можете указать шаблон для пакетов, которые вас интересуют:
источник
Я наконец получил это сейчас:
источник
/var/log/apt/history.log(.N.gz)
хотя.zgrep
вместоgunzip
или поzcat
трубопроводуgrep
. Я верю, что это скрипт-обертка, который поставляется с gzip. Он также принимает несжатые файлы, так что вы можете упростить свой сценарий доzgrep -E '(\[INSTALLIEREN\]|\[INSTALL\])' /var/log/aptitude* | awk '{ print $2 }'
Я могу вытащить все, открыв файлы журнала в / var / log / apt /
Затем я захожу и вручную отфильтрую пакеты установки apt-get. Там может быть способ сделать это программно, но я не знаю об этом.
источник
Таким образом, вы видите список команд, выполненных в прошлом.
Удалите код grep, если вам нужна дополнительная информация:
если журнал сжимается (т.е. заканчивается на gz)
Застегнуть его снова по окончании можно:
источник
zcat
? Это так же просто, какzcat filename.gz
. Можно просто использовать его на сжатые файлы GZIP вместоcat
. Такжеgrep
можно заменитьzgrep
, напримерzgrep Commandline history.log.1.gz
.(grep "Commandline" history.log ; zgrep "Commandline" history.log.*.gz ) | grep " install " | grep -v -- "--yes" | sed -r "s/^.*install //"
. У него есть недостатки, поскольку удаленные пакеты также перечислены, а если пакет был установлен более одного раза, он будет указан несколько раз.Я не видел, чтобы какие-то решения здесь работали для меня, я установил довольно много пакетов deb с dpkg, и некоторые из элементов, которые я особенно искал, отсутствовали.
Довольно длинная строка, но удобная для копирования и вставки:
Приведенная выше команда сохраняет список пакетов в файл в текущем рабочем каталоге с именем
my-packages
.объяснение
Сначала я создал список пакетов, которые составили базовую линию пакетов, выбранных во время установки.
Далее следует длинный список установленных предметов в целом.
Затем я сравнил два файла
initial
иinstalled
перечислил только элементы, уникальные для установленных.Оттуда я хотел отфильтровать зависимости, здесь этот метод может пропустить некоторые желаемые пакеты, он не знает о зависимостях, которые также явно установлены.
Я написал быструю функцию bash, чтобы сократить эти шаги при обработке этих элементов.
После этого я передавал каждую строку из моего файла
custom
в эту функцию с помощьюxargs
.Получив длинный список всех возможных зависимостей (не уверен в каждом возможном утверждении), я снова получил строки, уникальные для одного файла.
И мой законченный список пакетов теперь находится в файле с именем,
manual
доступным для просмотра.источник
Кто-то связался с https://unix.stackexchange.com/questions/3595/ubuntu-list-explicitly-installed-packages/3624#3624, у которого есть хорошее решение, но оно не работает правильно как вывод из aptitude изменилось Вот обновленная версия, основанная на сравнении установленных в настоящее время пакетов по сравнению с 12.04 LTS. Вам нужно будет
aptitude
установить, это единственное требование.Чтобы разбить вышеупомянутую команду на части, этот бит выводит один пакет на строку из всего, что установлено в системе
И это загружает список пакетов по умолчанию и обрезает избыточную информацию.
и
comm
сравнивает два файла и выводит пакеты, которых нет в списке по умолчанию.источник
Используйте файл манифеста распространения в качестве базового набора пакетов. Сортируйте результаты, установленные вручную, по группам пакетов по архитектуре и разделам, чтобы было легче сосредоточиться на группах пакетов (возможно, вам не нужны некоторые разделы).
https://gist.github.com/darrenleeweber/8cc570ff402f19af7fa4
источник
apt-get install -y
имела префикс, а файл представлял собой скрипт bash. Тогда все файлы пакета могут быть включены в цикл предоставления резервных данных.источник
Я не нашел подходящего для меня, поэтому написал сценарий. Путем анализа содержимого /var/log/apt/history.log* и / var / log / aptitude, а затем сортировки по дате и времени, в результате получается два списка: один устанавливается вручную, другой устанавливается, но удаляется. Скрипт с проверкой «apt list». небольшое отклонение, потому что при использовании dpkg установлен и изменен источник PPA.
Я положил здесь, https://github.com/eexpress/eexp-bin/blob/master/self-installed-pkg.pl .
если кому-то нужно проверить его, возможно, потребуется изменить какой-то код, так как мои файлы журнала смешаны на китайском и английском языках (особенно в формате даты-времени RFC2822), мне нужно разобраться с этим.
источник
Я думаю, что вы хотите использовать
/var/log/apt/history.log
и его друзей, чтобы дать изменения, которые были сделаны:(Изменено из источника )
Даст вам все пакеты, которые были установлены в командной строке с использованием варианта
apt-get install
.Он получает сжатые файлы в старых файлах,
history.log
добавляет их вместе с текущимиhistory.log
и проходит через grep, извлекает строки с помощью apt [-get] install [и / или переустановить] и показывает оставшуюся часть строки (флаг -o), которая равна название пакета (ов).Для этого понадобится немного моддинга (например, с помощью
sed
), если вы хотите, чтобы в отдельных строках были только имена пакетов; упражнение для читателя!Стоит отметить, что менеджер синаптических пакетов (
gksu synaptic
илиkdesudo synaptic
) в разделе «статус» имеет список «установленных (вручную)». Если вы отметите весь список для удаления [не применяйте его !!], вы сможете сохранить помеченные изменения и таким образом получить список пакетов. Предостережение: это заблокированоsynaptic
для меня (предположительно вычисление удаления зависимостей).источник