Видео смотреть бесплатно

Смотреть фильмы бесплатно

Официальный сайт pepsilight 24/7/365

Смотреть видео бесплатно

27.10.09 22:23 cppmm

Tips & tricksЗапись устанавливаемых зависимостей для пакета в Debian.

Часто приходится ставить софт "на посмотреть". Т.е. поставил, один-два раза запустил и удалил. Вроде бы ничего страшного - apt-get наш спаситель, но нередко бывает, что пакет при установке притягивает за собой толпы библиотек по зависимостям, и при удалении этого пакета все библиотеки остаются в системе. Часть из них, конечно, можно вычистить с помощью apt-get autoremove, но большая часть всё-таки остаётся. Я обычно в таких случаях записывал себе куда-нибудь список пакетов, устанавливаемых с нужным мне софтом и потом сносил его руками. Вот, решил этот процесс немного автоматизировать скриптом. Ничего особенного, просто небольшая экономия времени.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88

#!/bin/bash
#

INST_BASE=/var/cache/apt/Inst
INST_PROG=/usr/bin/apt-get

# Функция вывода ошибки в случае использования неправильных аргументов
f_argerror() {
    echo "depends_store.sh: Пропущен операнд."
    echo "Попробуйте \"depends_store.sh -h\" для получения более подробного описания."
}

# Функция записи данныхх о зависимостях с проверкой на наличие этих данных.
# Если данные имеются, вызывается функция их вывода.
f_install() {
  if [ -e ${INST_BASE}/${OPTARG} ]
  then
    echo "Данные о зависимостях для данного пакета уже присутсвуют."
    f_show
    exit 0
  fi
  ${INST_PROG} -s install ${OPTARG} | grep Inst | cut -d ' ' -f 2 > ${INST_BASE}/${OPTARG}
  echo `cat ${INST_BASE}/${OPTARG}`
}

# Функция удаления данных о зависимостях.
f_remove() {
  rm ${INST_BASE}/${OPTARG}
}

# Функция вывода данных о зависимостях.
f_show() {
  echo `cat ${INST_BASE}/${OPTARG}`
}

# Функция вывода списка пакетов, для которых есть записи о зависимостях.
f_list() {
  echo `ls ${INST_BASE}`
}

# Функция вывода справки.
f_help() {
echo "Использование: depends_store.sh КЛЮЧ [ПАКЕТ]"
echo "  -i ПАКЕТ      записать данные о зависимостях для пакета"
echo "  -r ПАКЕТ      удалить данные о зависимостях для пакета"
echo "  -s ПАКЕТ      показать данные о зависимостях для пакета"
echo "  -l              вывести список пакетов, для которых записаны данные о зависимостях"
echo "  -h              показать эту справку и выйти"
}

# Проверка на наличие аргументов коммандной строки.
if [ $# -eq "0" ]  
then
  f_argerror
fi

# Проверка на наличие директории для хранения данных о пакетах и создание таковой в случае отсутсвия.
if [ ! -e ${INST_BASE} ]
then
  mkdir -p ${INST_BASE}
fi

# Перебор параметров командной строки.
getopts ":i:r:s:lh" Option
case $Option in
  i)
    f_install
  ;;
  r)
    f_remove
  ;;
  s)
    f_show
  ;;
  l)
    f_list
  ;;
  h)
    f_help
  ;;
  *)
    f_argerror
  ;;
esac

exit 0
 


Скрипт до безобразия простой, так что всё должно быть понятно из комментариев. :) Получился такой себе небольшой костыль над apt-get.
Работать с ним просто.
Нашли нужный пакетик, сказали на него ./depends_store.sh -i и всё запомнилось в базе. Поработали с пакетом, сделали apt-get purge `./depends_store.sh -s имя_пакета` && ./depends_store.sh -r имя_пакета и забыли о нём.



zhentos 27.10.09 22:30 # +4
Ммм, разве aptitude не делает тоже самое без лишних телодвижений?

1
2
3
4
5
6
sudo aptitude install gnome-commander
[...]
The following NEW packages will be installed:
  exiv2{a} gnome-commander libexiv2-5{a}
0 packages upgraded, 3 newly installed, 0 to remove and 0 not upgraded.
[...]

И соответственно:
1
2
3
4
sudo aptitude remove gnome-commander
The following packages will be REMOVED:
  exiv2{u} gnome-commander{u} libexiv2-5{u}
[...]
cppmm 27.10.09 22:36 # +0
Не знаю. Я не использую aptitude. :)
По моим ощущениям, aptitude работает чуть медленнее и немного иначе работает с зависимостями в спорных ситуациях. Но на шоколадку не поспорю, потому как aptitude пробовал несколько раз всего. Предпочитаю apt-get, apt-cache и apt-file для любой работы с пакетами.
exelens 27.10.09 23:29 # +0
тестировал в этом топике разницы медлу апт и аптитуд нет
cppmm 27.10.09 23:40 # +0
Ага. Вот и получается по тому топику, что скрипт-то и не велосипед. :)
zhentos 27.10.09 23:58 # +0
Да пожалуй... в случае с метапакетами (такими как xubuntu-desktop, ubuntu-desktop) фишка автоудаления зависимостей не сработает :)

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

Возьмем скриптик на вооружение))
exelens 27.10.09 23:30 # +0
тестировал в этом топике разницы медлу апт и аптитуд нет
zhentos 28.10.09 00:08 # +0
Ну в принципе да, aptitude же всего лишь удобная и мнофункциональная надстройка над apt, вобравшая в себя функционал нескольких утилит APT. И если в случае использования aptitude, она сама сделает autoremove для зависимостей, то в случае использования чистого apt, придется вызывать apt-get autoremove отдельно.

Ну а пример с xubuntu-desktop, как я уже написал чуть выше не совсем корректен.
idler 27.10.09 23:59 # +1
А еще apt-get и aptitude умеют тагировать пакеты.
Можно было и через тагирование порешать задачу.
zhentos 28.10.09 00:18 # +0
Потрясающе)) Спасибо за открытые глаза.

Коротко по теме для заинтересовавшихся (как я).
idler 28.10.09 10:43 # +0
В посте по ссылке есть ссылки на пересборку deb-пакетов. Если при таком действии целью является ТОЛЬКО оптимизация под собственное железо - стоит поглядеть в сторону apt-build.
Shilov 28.10.09 16:33 # +0
Откройте для себя deborphan
man в помощь
cppmm 28.10.09 17:58 # +1
Открывал уже раньше.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
[root@linux ~]$ depends_store.sh -i gaim
pidgin-data gaim-data libgtkspell0 libavahi-glib1 libgadu3 libmeanwhile1 libsilc-1.1-2 libhesiod0 libzephyr3 libsasl2-modules libpurple0 pidgin gaim gstreamer0.10-alsa liboil0.3 libvisual-0.4-0 gstreamer0.10-plugins-base libdv4 libshout3 libsoup2.4-1 gstreamer0.10-plugins-good gstreamer0.10-x python-dbus libpurple-bin libvisual-0.4-plugins oss-compat
[root@linux ~]$ apt-get install gaim
Чтение списков пакетов... Готово
Построение дерева зависимостей      
Чтение информации о состоянии... Готово
Будут установлены следующие дополнительные пакеты:
  gaim-data gstreamer0.10-alsa gstreamer0.10-plugins-base gstreamer0.10-plugins-good gstreamer0.10-x libavahi-glib1 libdv4 libgadu3 libgtkspell0 libhesiod0 libmeanwhile1 liboil0.3 libpurple-bin
  libpurple0 libsasl2-modules libshout3 libsilc-1.1-2 libsoup2.4-1 libvisual-0.4-0 libvisual-0.4-plugins libzephyr3 oss-compat pidgin pidgin-data python-dbus
Предлагаемые пакеты:
  libdv-bin libsasl2-modules-otp libsasl2-modules-ldap libsasl2-modules-sql libsasl2-modules-gssapi-mit libsasl2-modules-gssapi-heimdal gnome-panel kicker docker evolution-data-server python-dbus-dbg
  python-dbus-doc
НОВЫЕ пакеты, которые будут установлены:
  gaim gaim-data gstreamer0.10-alsa gstreamer0.10-plugins-base gstreamer0.10-plugins-good gstreamer0.10-x libavahi-glib1 libdv4 libgadu3 libgtkspell0 libhesiod0 libmeanwhile1 liboil0.3 libpurple-bin
  libpurple0 libsasl2-modules libshout3 libsilc-1.1-2 libsoup2.4-1 libvisual-0.4-0 libvisual-0.4-plugins libzephyr3 oss-compat pidgin pidgin-data python-dbus
обновлено 0, установлено 26 новых пакетов, для удаления отмечено 0 пакетов, и 0 пакетов не обновлено.
Необходимо скачать 13,0MБ архивов.
После данной операции, объём занятого дискового пространства возрастёт на 37,9MB.
Хотите продолжить [Д/н]? y
[... Процесс установки ...]
[root@linux ~]$ apt-get purge gaim
Чтение списков пакетов... Готово
Построение дерева зависимостей      
Чтение информации о состоянии... Готово
Следующие пакеты устанавливались автоматически и больше не требуются:
  gstreamer0.10-alsa libpurple0 gstreamer0.10-x libsilc-1.1-2 pidgin-data gstreamer0.10-plugins-good libsoup2.4-1 libgadu3 gaim-data libhesiod0 oss-compat python-dbus libshout3 libdv4 libpurple-bin
  pidgin libmeanwhile1 libzephyr3 liboil0.3 libavahi-glib1 libgtkspell0 libvisual-0.4-0 gstreamer0.10-plugins-base libvisual-0.4-plugins
Для их удаления используйте 'apt-get autoremove'.
Пакеты, которые будут УДАЛЕНЫ:
  gaim*
обновлено 0, установлено 0 новых пакетов, для удаления отмечено 1 пакетов, и 0 пакетов не обновлено.
После данной операции, объём занятого дискового пространства уменьшится на 24,6kB.
Хотите продолжить [Д/н]? y
(Чтение базы данных... на данный момент установлено 94886 файлов и каталогов.)
Удаляется пакет gaim...
[root@linux ~]$ apt-get autoremove
Чтение списков пакетов... Готово
Построение дерева зависимостей      
Чтение информации о состоянии... Готово
Следующие пакеты устанавливались автоматически и больше не требуются:
  gstreamer0.10-alsa libpurple0 gstreamer0.10-x libsilc-1.1-2 pidgin-data gstreamer0.10-plugins-good libsoup2.4-1 libgadu3 gaim-data libhesiod0 oss-compat python-dbus libshout3 libdv4 libpurple-bin
  pidgin libmeanwhile1 libzephyr3 liboil0.3 libavahi-glib1 libgtkspell0 libvisual-0.4-0 gstreamer0.10-plugins-base libvisual-0.4-plugins
Пакеты, которые будут УДАЛЕНЫ:
  gaim-data gstreamer0.10-alsa gstreamer0.10-plugins-base gstreamer0.10-plugins-good gstreamer0.10-x libavahi-glib1 libdv4 libgadu3 libgtkspell0 libhesiod0 libmeanwhile1 liboil0.3 libpurple-bin
  libpurple0 libshout3 libsilc-1.1-2 libsoup2.4-1 libvisual-0.4-0 libvisual-0.4-plugins libzephyr3 oss-compat pidgin pidgin-data python-dbus
обновлено 0, установлено 0 новых пакетов, для удаления отмечено 24 пакетов, и 0 пакетов не обновлено.
После данной операции, объём занятого дискового пространства уменьшится на 37,5MB.
Хотите продолжить [Д/н]? y
(Чтение базы данных... на данный момент установлено 94879 файлов и каталогов.)
[... Процесс удаления ...]
[root@linux ~]$ deborphan
[root@linux ~]$ apt-get purge `depends_store.sh -s gaim`
Чтение списков пакетов... Готово
Построение дерева зависимостей      
Чтение информации о состоянии... Готово
Пакет pidgin-data не установлен, поэтому не может быть удалён
Пакет gaim-data не установлен, поэтому не может быть удалён
Пакет libgtkspell0 не установлен, поэтому не может быть удалён
Пакет libavahi-glib1 не установлен, поэтому не может быть удалён
Пакет libgadu3 не установлен, поэтому не может быть удалён
Пакет libmeanwhile1 не установлен, поэтому не может быть удалён
Пакет libsilc-1.1-2 не установлен, поэтому не может быть удалён
Пакет libhesiod0 не установлен, поэтому не может быть удалён
Пакет libzephyr3 не установлен, поэтому не может быть удалён
Пакет libpurple0 не установлен, поэтому не может быть удалён
Пакет pidgin не установлен, поэтому не может быть удалён
Пакет gaim не установлен, поэтому не может быть удалён
Пакет gstreamer0.10-alsa не установлен, поэтому не может быть удалён
Пакет liboil0.3 не установлен, поэтому не может быть удалён
Пакет libvisual-0.4-0 не установлен, поэтому не может быть удалён
Пакет gstreamer0.10-plugins-base не установлен, поэтому не может быть удалён
Пакет libdv4 не установлен, поэтому не может быть удалён
Пакет libshout3 не установлен, поэтому не может быть удалён
Пакет libsoup2.4-1 не установлен, поэтому не может быть удалён
Пакет gstreamer0.10-plugins-good не установлен, поэтому не может быть удалён
Пакет gstreamer0.10-x не установлен, поэтому не может быть удалён
Пакет python-dbus не установлен, поэтому не может быть удалён
Пакет libpurple-bin не установлен, поэтому не может быть удалён
Пакет libvisual-0.4-plugins не установлен, поэтому не может быть удалён
Пакет oss-compat не установлен, поэтому не может быть удалён
Пакеты, которые будут УДАЛЕНЫ:
  libsasl2-modules*
обновлено 0, установлено 0 новых пакетов, для удаления отмечено 1 пакетов, и 0 пакетов не обновлено.
После данной операции, объём занятого дискового пространства уменьшится на 397kB.
Хотите продолжить [Д/н]? y
(Чтение базы данных... на данный момент установлено 93737 файлов и каталогов.)
Удаляется пакет libsasl2-modules...

Как видите, один пакетик остался.
А использовать deborphan -a как-то боязно. Особенно после такого:
1
2
[root@linux ~]$ deborphan -a | grep deborphan
main/admin                deborphan

Ну и вообще, в deborphan -a достаточно много нужного мне софта показал, который не просто нужен, а очень нужен(xarchiver, tcpdump, virtualbox и т.д. - это то, что используется не то, что каждый день, а практически не вылючаясь). Так же он предложил снести половину заботливо подобранных мной плагинов к xfce4 и даже многое, связанное с локализацией дистра(language-env, manpages-ru, iceweasel-l10n-ru), а так же мой dm(slim), в принципе весь пакет manpages и сырцы ядра, нужные для работы. В общем, для создания какой-нибудь минималистической системы - это самое оно. Для чистки десктопного компа - эта утилита практически бесполезна.

Посты Комментарии
Последние посты
    Посты Комментарии
    Последние комментарии
      Посты Комментарии
      Изменения
        Посты Комментарии Изменения Черновики Избранное
        Черновики (все)
          Посты Комментарии Изменения Черновики Избранное
          Избранное (всё)
            Посты Комментарии Изменения Черновики Избранное
            Лучшие блоги (все 76)
            Топ пользователей Топ блогов
            Топ пользователей Топ блогов
            Элита (все 1607 из 128 городов)
            Топ пользователей Топ блогов

            Новенькие: svol, bas, alienrom, victor3d, bjaka_max
            welinux.ru

            Смотреть онлайн бесплатно

            Онлайн видео бесплатно


            Смотреть русское с разговорами видео

            Online video HD

            Видео скачать на телефон

            Русские фильмы бесплатно

            Full HD video online

            Смотреть видео онлайн

            Смотреть HD видео бесплатно

            School смотреть онлайн