Часто приходится ставить софт "на посмотреть". Т.е. поставил, один-два раза запустил и удалил. Вроде бы ничего страшного - 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 имя_пакета и забыли о нём.
-
Ммм, разве 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}
[...] |
-
-
Не знаю. Я не использую aptitude. :)
По моим ощущениям, aptitude работает чуть медленнее и немного иначе работает с зависимостями в спорных ситуациях. Но на шоколадку не поспорю, потому как aptitude пробовал несколько раз всего. Предпочитаю apt-get, apt-cache и apt-file для любой работы с пакетами.
-
-
тестировал в этом топике разницы медлу апт и аптитуд нет
-
-
Ага. Вот и получается по тому топику, что скрипт-то и не велосипед. :)
-
-
Да пожалуй... в случае с метапакетами (такими как xubuntu-desktop, ubuntu-desktop) фишка автоудаления зависимостей не сработает :)
Метапакеты, в принципе, так и описываются, что обычно их можно безопасно удалить и их удаление не ведет за собой удаление зависимостей.
Возьмем скриптик на вооружение))
-
тестировал в этом топике разницы медлу апт и аптитуд нет
-
-
Ну в принципе да, aptitude же всего лишь удобная и мнофункциональная надстройка над apt, вобравшая в себя функционал нескольких утилит APT. И если в случае использования aptitude, она сама сделает autoremove для зависимостей, то в случае использования чистого apt, придется вызывать apt-get autoremove отдельно.
Ну а пример с xubuntu-desktop, как я уже написал чуть выше не совсем корректен.
-
А еще apt-get и aptitude умеют тагировать пакеты.
Можно было и через тагирование порешать задачу.
-
-
Потрясающе)) Спасибо за открытые глаза.
Коротко по теме для заинтересовавшихся (как я).
-
-
В посте по ссылке есть ссылки на пересборку deb-пакетов. Если при таком действии целью является ТОЛЬКО оптимизация под собственное железо - стоит поглядеть в сторону apt-build.
-
Откройте для себя deborphan
man в помощь
-
-
Открывал уже раньше.
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 и сырцы ядра, нужные для работы. В общем, для создания какой-нибудь минималистической системы - это самое оно. Для чистки десктопного компа - эта утилита практически бесполезна.
|
|
|
Последние посты
|
|
Последние комментарии
|
|
Изменения
|
|
Черновики (все)
|
|
Избранное (всё)
|
|
|