Выводим список установленных пакетов в Linux по дате
Sep 20, 2018 07:02 · 536 words · 3 minute read tips ubuntu debian centos
Порой необходимо узнать когда тот или иной пакет был установлен в операционной системе (например, в целях аудита). В данной статье рассмотрим как вывести список установленных пакетов в Linux, отсортированный по дате установки — давайте разберемся!
Как всем известно, в разных дистрибутивах Linux используются различные пакетные менеджеры, поэтому, в зависимости от операционной системы, команды будут отличаться.
Например, если вы используете дистрибутив Debian (и производные — Ubuntu, Kubuntu, Xubuntu и т.д.), то для вывода списка установленных пакетов достаточно запустить команду:
grep -i "installed" /var/log/dpkg.log
Как можно догадаться, данная команда выведет список пакетов, если их установка зафиксирована в файле /var/log/dpkg.log . Так как в Linux используется ротация логов с целью экономии места на диске, старые установочные логи хранятся в архивах. Если нужно узнать список вообще всех установленных пакетов в хронологическом порядке, то стоит воспользоваться командой:
zcat /var/log/dpkg.log.* | grep -i "installed"
Результат выполнения команды будет примерно следующим:
. 2018-09-12 09:41:34 status installed libcryptsetup12:amd64 2:2.0.2-1ubuntu1.1 2018-09-12 09:41:34 status installed libc-bin:amd64 2.27-3ubuntu1 2018-09-12 09:42:02 status installed man-db:amd64 2.8.3-2 2018-09-12 09:42:02 status installed initramfs-tools-bin:amd64 0.130ubuntu3.3 2018-09-12 09:42:08 status installed google-cloud-sdk:all 216.0.0-0 2018-09-12 09:42:08 status installed initramfs-tools-core:all 0.130ubuntu3.3 2018-09-12 09:42:08 status installed initramfs-tools:all 0.130ubuntu3.3 2018-09-12 09:42:21 status installed initramfs-tools:all 0.130ubuntu3.3
Команда zcat читает содержимое заархивированных файлов, после чего вывод перенаправляется на обработку команде grep . Если нужно найти время установки конкретного пакета, название (или хотя бы часть) которого вы знаете, можно сделать так:
zcat /var/log/dpkg.log.* | grep -i "installed" | grep "google-cloud" 2018-09-12 09:42:08 status installed google-cloud-sdk:all 216.0.0-0
В качестве альтернативы еще можно использовать команду zgrep , например:
zgrep "installed" /var/log/dpkg.log*
Вывод команды будет несколько отличаться:
. /var/log/dpkg.log.9.gz:2018-01-15 08:35:54 status installed man-db:amd64 2.7.6.1-2 /var/log/dpkg.log.9.gz:2018-01-15 08:35:54 status installed libpython2.7-stdlib:amd64 2.7.14-2ubuntu2 /var/log/dpkg.log.9.gz:2018-01-15 08:35:55 status installed python2.7:amd64 2.7.14-2ubuntu2 /var/log/dpkg.log.9.gz:2018-01-15 08:35:55 status installed libpython-stdlib:amd64 2.7.14-2ubuntu1 /var/log/dpkg.log.9.gz:2018-01-15 08:36:00 status installed google-cloud-sdk:all 184.0.0-0 /var/log/dpkg.log.9.gz:2018-01-15 08:36:00 status installed python:amd64 2.7.14-2ubuntu1 /var/log/dpkg.log.9.gz:2018-01-15 08:36:00 status installed python-crcmod:amd64 1.7-2build4
Как видим, в данном примере в начале строки также присутствует имя файла, в котором нашлась соответствующая запись.
Для RPM-based дистрибутивов (RedHat, CentOS, Scientific Linux, Fedora, SUSE) вывести список установленных пакетов по дате можно с помощью следующей команды:
rpm -qa --last
Команда покажет примерно следующий результат:
. libxml2-2.9.1-6.el7_2.3.x86_64 Sat 09 Dec 2017 10:15:00 AM EAT findutils-4.5.11-5.el7.x86_64 Sat 09 Dec 2017 10:15:00 AM EAT libgpg-error-1.12-3.el7.x86_64 Sat 09 Dec 2017 10:14:59 AM EAT libffi-3.0.13-18.el7.x86_64 Sat 09 Dec 2017 10:14:59 AM EAT libcap-ng-0.7.5-4.el7.x86_64 Sat 09 Dec 2017 10:14:59 AM EAT libattr-2.4.46-12.el7.x86_64 Sat 09 Dec 2017 10:14:59 AM EAT libacl-2.2.51-12.el7.x86_64 Sat 09 Dec 2017 10:14:59 AM EAT dbus-libs-1.6.12-17.el7.x86_64 Sat 09 Dec 2017 10:14:59 AM EAT sed-4.2.2-5.el7.x86_64 Sat 09 Dec 2017 10:14:58 AM EAT
Для поиска даты установки конкретного пакета, достаточно добавить его название в качестве параметра к команде выше, например:
rpm -qa --last postfix3 postfix3-3.2.0-1.gf.el7.x86_64 Thu 25 May 2017 01:04:35 AM EAT
В дистрибутивах Arch Linux (в том числе Antergos, Manjaro, Apricity, Ninja OS) для решения нашей задачи можно воспользоваться утилитой expac . Для получения информации в понятном формате, вызывать данную утилиту необходимо с использованием параметра:
expac --timefmt='%F %T' '%l %n'
Можно дополнить данный вызов сортировкой и дополнительными фильтрами — все зависит только от ваших требований. Например, так можно вывести 5 последних установленных пакетов в системе:
expac --timefmt='%F %T' '%l %n' | sort -n | tail -n 5 2018-01-15 14:41:15 webkitgtk 2018-01-16 09:18:26 babl 2018-01-16 09:18:26 gegl02 2018-01-16 09:18:26 lcms 2018-01-16 09:18:26 libspiro
Read more
© Copyright 2023 Yevhen Lebid
Как получить и скопировать список установленных пакетов на Ubuntu / Debian Linux сервере
Приобретая новый виртуальный сервер у RUVDS на Ubuntu / Debian вы можете получить список всех установленных пакетов на вашем виртуальном сервере. Также в данной статье мы рассмотрим, как скопировать и перенести установленные пакеты с одного виртуального сервера на другой.
Чтобы получить список всех установленных пакетов на Ubuntu или Debian, используйте DPKG и другие команды.
Введите следующую команду:
dpkg-query -l
Чтобы увидеть только список пакетов, попробуйте:
dpkg-query -f '$\n' -W
Чтобы получить список установленных пакетов, введите команду:
dpkg --get-selections | grep -v deinstall
apt list --installed
или можно просто найти все пакеты на основе PHP:
apt list --installed | grep php
Как сохранить список в текстовый файл
Команда выглядит следующим образом для server1:
dpkg --get-selections | grep -v deinstall > mylist.txt
Теперь скопируйте mylist.txt на server2 с вашим адресом, например 100.100.100.100:
scp mylist.txt 100.100.100.100:~/
The authenticity of host 100.100.100.100 (100.100.100.100)' can't be established.
ECDSA key fingerprint is SHA256:r+WgiifO
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '100.100.100.100' (ECDSA) to the list of known hosts.
Как установить скопированные пакеты на server2
На втором сервере server2 для восстановления установок из mylist.txt, выполните следующую команду:
dpkg --clear-selections
sudo dpkg --set-selections < mylist.txt
sudo apt-get install -y $(< mylist.txt)
Наконец, выполните следующую команду, чтобы удалить ненужные пакеты:
sudo apt-get autoremove
Вышеприведенные команды должны восстановить пакеты из резервных копий или другого сервера.
Если данных на втором сервере нет, нужно их скопировать и после этого восстановить. Этот вариант заключается в использовании команды aptitude следующим образом:
### Создаем список программ в директории на первом сервере /tmp/packages.txt ###
dpkg --get-selections > /tmp/packages.txt
### Копируем файл на второй сервер с адресом 100.100.100.100 ###
scp /tmp/packages.txt 100.100.100.100:/tmp/
### Теперь вы можете установить пакеты на втором сервере используя команду apt-get/synaptic ###
1. Соединяемся с первым сервером
ssh root@100.100.100.101
2. Устанавливаем aptitude:
sudo aptitude
3. Восстанавливаем данные
aptitude install $(cat /tmp/packages.txt | awk '')
Как посмотреть пакеты Linux
В операционной системе Linux пакеты - специальные архивы, которые содержат программное обеспечение и информацию о его установке и настройке. Каждый пакет представляет собой набор файлов, связанных с конкретной программой или библиотекой.
Что такое пакеты
Пакеты в Linux используются для управления установкой, удалением и обновлением программного обеспечения. Когда вы устанавливаете программу, пакет-менеджер загружает соответствующий пакет из репозитория, распаковывает его и копирует файлы на ваш компьютер, а также выполняет необходимые настройки.
Они имеют расширение .rpm (для дистрибутивов, основанных на Red Hat, таких как Fedora и CentOS) или .deb (для дистрибутивов, основанных на Debian, таких как Ubuntu и Linux Mint). Существует множество различных пакет-менеджеров, например, apt, yum, pacman, каждый из которых использует свой собственный формат пакетов.
Для чего нужны
Пакеты позволяют легко управлять установкой, обновлением и удалением программ на вашей системе. В Linux существует несколько форматов пакетов, таких как RPM (Red Hat Package Manager), DEB (Debian Package), TGZ (tarball) и другие.
Они также содержат метаданные, такие как имя, версия и описание программы, а также информацию об авторе и лицензии. Эти метаданные позволяют управлять зависимостями и обновлениями программного обеспечения.
Пакеты в Linux могут быть установлены из официальных репозиториев дистрибутива Linux или из сторонних источников. Кроме того, вы можете создавать свои собственные пакеты для установки на других системах Linux.
Просмотр пакетов в разных дистрибутивах
В большинстве дистрибутивов Linux можно посмотреть список установленных пакетов с помощью специальной команды в терминале.
Debian и Ubuntu
В Debian и Ubuntu можно воспользоваться командой dpkg-query:
Эта команда выведет полный список установленных пакетов в формате "пакет, версия, описание".
Fedora, CentOS
В Fedora, CentOS и других дистрибутивах, использующих утилиту управления пакетами yum или dnf, можно воспользоваться командой:
yum list installed
Как вариант
dnf list installed
Эти команды выведут список установленных пакетов с их версиями и описанием.
Arch Linux
В Arch Linux и его производных можно воспользоваться командой:
Эта команда выведет список всех установленных пакетов.
OpenSUSE
В OpenSUSE можно воспользоваться командой:
zypper search -installed-only
Выведет список всех установленных пакетов.
Slackware
В Slackware можно воспользоваться командой:
Теперь вы знаете, как посмотреть список пакетов в каждом из дистрибутивов.
Думаю, тема достаточно актуальна для начинающих пользователей Linux систем. Каждый начинающий Линуксоид рано или поздно сталкивался с вопросом — каки где посмотреть список установленных программ и пакетов в Linux(Ubuntu) , FreeBSD , OpenBSD ?
Исторически сложилось так, что в некоторых Осях( Linux(Ubuntu), FreeBSD, OpenBSD ) эти команды немного отличаются. Поэтому я приведу примеры для всех систем.
Все нижеприведенные команды выполняются в консоли.
Red Hat/Fedora Core/CentOS Linux
В Red Hat/Fedora Core/CentOS Linux- подобных нужно набрать следующую команду чтобы получить список установленных программ
# rpm -qa | less
Debian Linux
# dpkg --get-selections
Ubuntu Linux
# sudo dpkg --get-selections
# pkg_info | less # pkg_info apache
Используем команду pkg_version чтобы показать общий список версий всех установленных пакетов в FreeBSD:
# pkg_version | less # pkg_version | grep 'lsof'
В OpenBSD команда use pkg_info так же ведет себя как и в FreeBSD и покажет список установленных пакетов:
# pkg_info | less # pkg_info apache