Как получить список установленных пакетов без зависимостей?

Software Center каким-то образом показывает довольно короткий список установленных пакетов. Как это получить в текстовом файле?

Я попытался:

> dpkg --get-selections|wc -l
3265

> aptitude search '~i!~M'|wc -l
1181

> dpkg -l | grep ^ii | sed 's_  _\t_g' | cut -f 2|wc -l
3076

> dpkg --get-selections | grep -v deinstall|wc -l
3076

> apt-mark showmanual|wc -l
1181

Я знаю, что я установил несколько десятков пакетов, а не тысячи. Мне нужно в списке точно пакеты, которые я бы выбрал без зависимостей, чтобы просмотреть его.

UPDATE

Большое спасибо @kos, я получил, наконец, список с этой командой:

> zcat /var/log/apt/history.log.*.gz | cat - /var/log/apt/history.log | grep -Po '^Commandline: apt-get install \K.*' | tr ' ' '\n' | grep -v '\-\-reinstall'|grep -v '\-\-force-yes'|grep -v '\-y'|grep -v '\-f'|sort|uniq wc -l
103
1
задан 1 October 2015 в 16:39

2 ответа

apt-mark showmanual

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

Чтобы написать вывод в файл:

apt-mark showmanual > somefile

На самом деле существует много других способов, таких как использование этой команды

comm -23 <(apt-mark showmanual | sort -u) <(gzip -dc /var/log/installer/initial-status.gz | sed -n 's/^Package: //p' | sort -u) 

Хотя я абсолютно не знаю, как это работает;)

Для просмотра пакетов, установленных по дате:

Пакеты, установленные по дате использования cat /var/log/dpkg.log | grep "\ install\ > somefile" Пакеты, установленные с использованием dpkg, используют ls -l /var/log/dpkg* > somefile - это, вероятно, то, что вы ищете .

Для просмотра пакетов, установленных с помощью dpkg:

Этот файл содержит приведенную выше информацию: /var/log/dpkg.log

5
ответ дан 23 May 2018 в 17:02
  • 1
    Сомневаюсь, что я выбрал 1181 пакет. `` `& gt; apt-mark showmanual | wc -l 1181 `` ` – zuba 1 October 2015 в 13:59
  • 2
    @zuba Причина в том, что все пакеты, которые были установлены во время установки Ubuntu, также отмечены вручную. – Nephente 1 October 2015 в 14:04
  • 3
    Я понял. Как выбрать пакеты, которые я выбрал вручную после установки. Могу ли я, например? выбрать пакеты с датами установки, отфильтровать их с датами после даты установки? – zuba 1 October 2015 в 14:06
  • 4
    @zuba Теперь я добавил, как просматривать пакеты, установленные по дате – DevRobot 1 October 2015 в 14:19
  • 5
    @DevRobot. Не могли бы вы предоставить ссылку на то, где вы нашли эту команду? Это действительно здорово. Я понятия не имел, о initial-status.gz :-) – Nephente 1 October 2015 в 14:19

Это на самом деле сложнее, чем кажется, и есть довольно много похожих вопросов в Ask Ubuntu.

Я обнаружил, что, глядя в /var/log/apt/history.log и более старые версии gzipped этого журнала, любая вещь, установленная командой apt-get install, указана как установленная этой командой.

Итак:

grep "apt-get install" /var/log/apt/history.log

Покажет вам все из них за период, который охватывает текущий журнал истории событий. Вам понадобится gunzip ваши старые журналы и grep, чтобы собрать всю вашу информацию вместе. Команды grep могут быть перенаправлены в текстовый файл, чтобы дать вам хороший список.

Это, вероятно, полезно только для вашего случая, если Software Center использует apt-get install при установке. Я знаю, что Software Center является интерфейсом для apt, но не уверен, что он явно использует эту команду.

1
ответ дан 23 May 2018 в 17:02

Другие вопросы по тегам:

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