Добавить в FacebookДобавить в Google BookmarksДобавить в TwitterДобавить в OdnoklassnikiДобавить в Vkcom

Сегодня мне необходимо было откатиться на deb-пакет более старой версии, чем та, которую я установил. В процессе борьбы с непослушным deb-пакетом, а его невозможно было удалить ни одной программой (aptitude, apt-get, dpkg), я обнаружил что начинаю забывать опции работы с этими программами. Посему я решил написать себе краткую шпаргалку, которую я буду дописывать по мере надобности,  дабы пользоваться ей в дальнейшем. Далее я буду переходить от программ более высокого уровня к более низкому.

 

Aptitude.

Установить в новой системе ее можно набрав apt-get install aptitude.

Обновление пакетов: 

aptitude update // получить информацию о новых пакетах

aptitude upgrade // обновление пакетов 

aptitude safe-upgrade // обновление пакетов, которые можно обновить не удаляя существующие.

aptitude dist-upgrade // полное обновление дистрибутива

посмотреть какие пакеты будут обновлены без их установки можно набрав aptitude search ?upgradable

Установка пакетов:

aptitude install

Удаление пакетов:

aptitude remove // удаление пакета

aptitude purge // удаление пакета вместе с конфигами (полное)

aptitude purge ~c // удалить конфиги оставшиеся после удаленных пакетов

Переустановка пакета:

aptutude reinstall полное_название_пакета

Поиск пакетов:

aptitude search keyword (любое слово из названия пакета) // поиск пакета

aptitude search "^name$" // поиск пакета по точному названию

aptitude search "?description("keyword")" // поиск пакета по описанию

aptitude search ~i (i-install b-broken p-packet) // поиск пакетов по состоянию (можно искать, например, битые пакеты)

Информация:

aptitude changelog название пакета // узнать что изменилось в новом пакете

Очистка кеша пакетов:

aptitude autoclean // удаление пакетов  неактуальных версий

aptitude clean // очистка кеша пакетов

переустановка неработающего пакета или откат до более ранней версии

aptitude version package_name //Поиск версий пакета. Так можно найти предыдущую версию пакета

aptitude install package_name=version // установка пакета необходимой версии (установка предыдущей версии иногда помогает когда самый новый пакет не работает)

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

Apt-get.

Обновление:

apt-get update // получить информацию о новых пакетах

apt-get upgrade // обновление пакетов

apt-get dist-upgrade // обновление дистрибутива

Установка:

apt-get install 

apt-get install --reinstall // переустановка пакета

Удаление:

apt-get remove

Просмотр списка файлов в пакете:

Установить apt-file (apt-get install apt-file)

Обновить apt-file update

Просмотр apt-file list название_пакета

Поиск пакета с определенным файлом apt-file search название_файла

apt-cache policy название_пакета - Посмотреть в каком репозитории находится пакет

Очистка кеша:

apt-get clean

Dpkg.

Установка:

dpkg -i /path/to/package.deb // установить, например, скачанный пакет 

Удаление:

dpkg -r name_package// удалить пакет (нужно название пакета без .deb)

Переконфигурация:

dpkg-reconfigure name_packet // переконфигурировать пакет, например, dpkg-reconfigure locales

Посмотреть список файлов в пакете если пакет установлен:

dpkg -L name_package

Посмотреть список файлов в пакете если пакет не установлен:

dpkg -c /path/to/name_package

посмотреть какому пакету принадлежит файл

dpkg -S название_файла

А теперь немного о структуре всего этого хозяйства.

Например, Вы подключили какой-нибудь репозиторий. В нем находились новые версии пакетов. Естественно система предложила Вам их обновить и Вы это сделали. После обновления начались сбои. И вот вам нужно откатить Ubuntu или Debian в состояние до обновления. Черт! Да там обновилось несколько десятков пакетов. И первое что придет на ум - переустановка системы. А вот я так не делаю. 

Как узнать какие пакеты обновились? Запросто. Посмотреть файл /var/log/apt/history.log. Приведу пример обновления:

Start-Date: 2016-02-18 21:35:16
Upgrade: libegl1-mesa:amd64 (10.3.0-0ubuntu2intel1, 11.0.4-1intel1), libegl1-mesa-drivers:amd64 (10.3.0-0ubuntu2intel1, 11.0.4-1intel1), libdrm-intel1:amd64 (2.4.64-1~ubuntu14.04.1, 2.4.65-3), libdrm-intel1:i386 (2.4.64-1~ubuntu14.04.1, 2.4.65-3), i965-va-driver:amd64 (1.4.0-0intel1, 1.6.2-1), libdrm-radeon1:amd64 (2.4.64-1~ubuntu14.04.1, 2.4.65-3), libdrm-radeon1:i386 (2.4.64-1~ubuntu14.04.1, 2.4.65-3), libglapi-mesa:amd64 (10.3.0-0ubuntu2intel1, 11.0.4-1intel1), libglapi-mesa:i386 (10.3.0-0ubuntu2intel1, 11.0.4-1intel1), libva1:amd64 (1.4.0-0intel1, 1.6.2-1), libcairo-gobject2:amd64 (1.13.0~20140204-0ubuntu1.1, 1.14.4-1), libcairo2:amd64 (1.13.0~20140204-0ubuntu1.1, 1.14.4-1), libgles2-mesa:amd64 (10.3.0-0ubuntu2intel1, 11.0.4-1intel1), libgl1-mesa-glx:amd64 (10.3.0-0ubuntu2intel1, 11.0.4-1intel1), libgl1-mesa-glx:i386 (10.3.0-0ubuntu2intel1, 11.0.4-1intel1), va-driver-all:amd64 (1.4.0-0intel1, 1.6.2-1), libdrm-nouveau2:amd64 (2.4.64-1~ubuntu14.04.1, 2.4.65-3), libdrm-nouveau2:i386 (2.4.64-1~ubuntu14.04.1, 2.4.65-3), libwayland-egl1-mesa:amd64 (10.3.0-0ubuntu2intel1, 11.0.4-1intel1), libgbm1:amd64 (10.3.0-0ubuntu2intel1, 11.0.4-1intel1), libva-x11-1:amd64 (1.4.0-0intel1, 1.6.2-1), libdrm2:amd64 (2.4.64-1~ubuntu14.04.1, 2.4.65-3), libdrm2:i386 (2.4.64-1~ubuntu14.04.1, 2.4.65-3)
End-Date: 2016-02-18 21:35:43

Тут абсолютно точно видно какие пакеты обновлялись, с каких и на какие версии.

Далее, первое что приходит на ум,  можно попробовать отключить тот злополучный репозиторий и попытаться переставить пакеты (aptitude reinstall). Не получится. Менеджер напишет что установлены самые новейшие версии. Тогда удалить только эти пакеты и потом заново установить. Не получится. Удаление пакетов паровозом потянет удаление связанных пакетов. Проще уж переустановить систему. Хотя можно удалить и пакеты с зависимостями а потом взять из этого лога список удаленных пакетов, убрать версии и вставить список в команду aptitude install. В данной ситуации есть еще один хирургический метод. Он довольно рискован, кропотлив и требует максимальной внимательности при работе. Каждый из этих пакетов придется удалить вручную.  

Переходим cd /var/lib/dpkg и видим там 4 файла: status, status-old, statoverride, statoverride-old. Нужно последовательно открыть редактором эти 4 файла и удалить записи, касающиеся пакетов. Например открываем файл status редактором nano, nano status. Жмем F6 и в строку поиска вводим, например, i965-va-driver и жмем enter.

Видим следующее:

Package: i965-va-driver
Status: install ok installed
Priority: optional
Section: libs
Installed-Size: 1531
Maintainer: Ubuntu Developers
Architecture: amd64
Multi-Arch: same
Source: intel-vaapi-driver
Version: 1.3.0-1ubuntu1
Replaces: libva-intel-vaapi-driver
Provides: libva-intel-vaapi-driver
Depends: libc6 (>= 2.14), libdrm-intel1 (>= 2.4.38), libdrm2 (>= 2.3.1)
Pre-Depends: multiarch-support
Breaks: libva-intel-vaapi-driver (<< br="" /> Description: VAAPI driver for Intel G45 & HD Graphics family
The VA-API (Video Acceleration API) enables hardware accelerated video
decode/encode at various entry-points (VLD, IDCT, Motion Compensation
etc.) for the prevailing coding standards today (MPEG-2, MPEG-4
ASP/H.263, MPEG-4 AVC/H.264, and VC-1/VMW3). It provides an interface
to fully expose the video decode capabilities in today's GPUs.
.
Platform definitions:
CTG: Cantiga, Intel GMA 4500MHD (GM45)
ILK: Ironlake, Intel HD Graphics for 2010 Intel Core processor family
SNB: Sandybridge, Intel HD Graphics for 2011 Intel Core processor family
IVB: Ivybridge
.
This package contains the video decode & encode driver backend for the
Intel G45 chipsets and Intel HD Graphics for Intel Core processor
family.
Homepage: http://www.freedesktop.org/wiki/Software/vaapi
Original-Maintainer: Debian Multimedia Maintainers pkg-multimedia-maintainers(at)lists.alioth.debian
ubuntu-devel-discuss(at)lists.ubuntu

Вот этот блок информации нужно удалить полностью из всех четырех файлов. И после этого заново установить пакет (aptitude install  i965-va-driver). А никто и не говорил что будет легко. Но все-же, как по мне, это проще чем переустанавливать систему и делать кучу настроек. Хотя все зависит от того что нужно переустанавливать. Таким образом можно переустановить битый и не удаляющийся пакет. Если нужно удалить пакет полностью и это не получается стандартными средствами, нужно получить список файлов пакета, удалить их, и потом удалить записи о пакете. Естественно это нужно делать с умом, учитывая зависимости других пакетов от данного.

Ну вот собственно и все. Буду дополнять по надобности. Это все-же шпаргалка.

Желаю Вам удачи.

Автор: Darkeye.  

Еще интересное в сети.

  

 

Похожие материалы

Перейти к ленте статей

Добавить комментарий