время установки программ

sergey6661313
а затем выводить список пакетов установленных в указанный промежуток времени?
sergey6661313
что-ж буду писать скрипт... наверное... Кто нибудь скинте годные сслочки на примеры скриптов ... нужно же ещё вычленить не только те которые installed но и те которые removed...
Задача вроде решается в пару строчек. К примеру:
grep '2014-06-02 09:[1-3]' /var/log/pacman.log |awk '/removed|installed/ {print $4 " " $5}'
здесь выводим все пакеты которые были установленны или удалены в промежуток 2014-06-02 09:10 и 2014-06-02 09:39 в формате:
installed [пакет]
removed [пакет]

или можно даже так:
grep '2014-06-02 09:[1-3]' /var/log/pacman.log |awk '/removed|installed/ {print $4 " " $5}' |uniq -f1 -u |awk '{print $2}'
выведет только пакеты которые уникальны в данный промежуток времени.
в нашем случае когда проводились эксперименты "с установкой различных wm/de со множеством различных пакетов" то выведутся пакеты которые были только установленны, а вот пакеты которые были установленны и потом удалены выводится не будут.
Конечно есть много исключений, например, если пакет сначала удалили а потом поставили то не выведется что не есть хорошо, или когда просто удалили пакет и тогда он тоже выведется. Но если учитывать что в проводимом "эксперименте" мы только устанавливали пакеты и иногда удаляли их то приведённый выше пример вполне подходит для решения поставленной задачи.
Надо еще фильтр добавить с соответствующим условием, а то у меня так:
[~]» grep '2014-06-01' /var/log/pacman.log |awk '/removed|installed/ {print $4 " " $5}' |uniq -f1 -u |awk '{print $2}'
/etc/pacman.d/mirrorlist
vim-runtime
vim
GitHub, ArchWiki, AUR
grep '2014-06-02 09:[1-3]' /var/log/pacman.log |awk '$4~/installed|removed/ {print $4 " " $5}' |uniq -f1 -u |awk '$1 == "installed" {print $2}'
немного поправил
исправляет проблему на которую указал Kycok, а также плюс ко всему не будет выводить уникальные пакеты в данный промежуток времени если они только удалялись
А при помощи "pacman -R" нельзя ли? Конечно в случае если помнишь или вытянешь из pacman.log список групп и пакетов.
использование:  pacman {-R --remove} [параметры] <пакет(ы)>
параметры:
-b, --dbpath <путь> указать альтернативное расположение базы данных
-c, --cascade удалить пакет и все зависящие от него пакеты
  -d, --nodeps         пропустить проверку версий (-dd пропускает все проверки)
  -n, --nosave         удалить конфигурационный файл
  -p, --print          вывести список целей вместо выполнения операций
-r, --root <путь> указать альтернативный корневой каталог
  -s, --recursive      удалять ненужные зависимости
                       (-ss включая явно установленные)
  -u, --unneeded       удалить ненужные пакеты
-v, --verbose выводить больше информации
--arch <arch> установить альтернативную архитектуру
--cachedir <каталог> указать альтернативное расположение кэша
--color <когда> цветные сообщения
--config <путь> использовать альтернативный конфигурационный файл
      --dbonly         изменить только записи в базе данных, не файлы пакетов
--debug показывать отладочные сообщения
      --gpgdir <path>  установить альтернативный домашний каталог для GnuPG
--logfile <путь> использовать альтернативный файл журнала
--noconfirm не спрашивать подтверждения
--noprogressbar не показывать индикатор выполнения при загрузке
--noscriptlet не запускать установочные скрипты, если они есть
--print-format <строка>
укажите формат вывода целей
Предлагаю, на любителя, еще один упрощенный вариант
Вообще такой поиск требуется очень и очень редко. Но если уж так необходим можно организовать, например, по такой схеме, в течение месяца /ГГГГ-ММ/
installed - $ sed '/2014-05/!d' /var/log/pacman.log |awk '/installed/'
removed - $ sed '/2014-05/!d' /var/log/pacman.log |awk '/removed/'
installed+removed - $ sed '/2014-05/!d' /var/log/pacman.log |awk '/removed|installed/'
В течение года (/ГГГГ/) или суток (/ГГГГ-ММ-ДД/), наверное, не так актуально.
При желании можно в файл (а также для дальнейшей фильтрации) например,
$ sed '/2014-05/!d' /var/log/pacman.log |awk '/installed/' > /путь/имя_файла
Кто желает фильтрацию (кому не нравится наличие варнингов), можно отфильтровать вторым заходом
$ sed '/warning/d' /путь/имя_файла
или вывод в файл $ sed '/warning/d' /путь/имя_файла > /путь/имя_файла
При желании можно изменять по своему, так как все наглядно
Ошибки не исчезают с опытом - они просто умнеют
binaryshadow
А при помощи "pacman -R" нельзя ли? Конечно в случае если помнишь или вытянешь из pacman.log список групп и пакетов.
в том то и дело что вся соль задачи как раз найти пакеты которые были установленны в некий промежуток времени и при этом надо учитывать что часть из них была уже удалена. Если добавить ещё и pacman -R то выйдет:
sudo pacman -Rns $(grep '2014-06-02 1[4-6]' /var/log/pacman.log |awk '$4~/installed|removed/ {print $4 " " $5}' |uniq -f1 -u |awk '$1 == "installed" {print $2}')
red, это самое то, настоящий юникс-хей. Я бы полез руками пакеты копировать из pacman.log =)
В программе PacmanXG (нашего форумчанина minoshi) можно посмотреть лог пакамана, разбитый по датам
www.linux32.ru - новости и статьи о Linux
 
Зарегистрироваться или войдите чтобы оставить сообщение.