Здравствуйте!
Задумался тут о том, как можно организовать управление пакетами так, что бы со временем система не захламилась. Простой пример: хотим скомпилировать программу, для этого ставим gcc, он в свою очередь тянеть еще несколько пакетов. После компилирования gcc нам не нужен, мы его удаляем, а вот пакеты которые gcc подтянул за собой остаются... Как можно это поправить?
Управление пакетами в Yast
теоретически можно попробовать найти пакеты от которых никто не зависит.
ну почему же только теоретически можно и практически )теоретически можно попробовать найти пакеты от которых никто не зависит.
я таким не занимался, поэтому знаю только в теории :)
поищу где то в рассылке было )
Один способ есть, перед установкой экспортировать список установленных пакетов, а после установке импортировать его, тем самым удалив все пакеты которые устанавливались после экспорта, но это несколько геморно...
теоретически можно попробовать найти пакеты от которых никто не зависит.
Можно подробнее?
по моему как-то через rpm поищу и выложу если никто раньше не запоститМожно подробнее?
писал в своё время скрипт... до конца не додумал дома мб посмотрю найду=)
но если честно меня это проблема тоже всегда заботила)
Хакеры.. все решается коротеньким скриптом в пару строчек :mad:
hiBeid, если знаете ,напишите :)
Позор!
Кактатаг: составили список уже установленных пакетов-- установили то что хотели-- составили снова-- diff`ом вытащили разницу-- записали в лог с каким-то id-- потом при удалении посмотрели лог... скрипт совсем несложный выйдет.
Позор!
Кому?
Если ВЫ такой умный,напишите скрипт.К нему подробную инструкцию.Кому это нужно Вам
скажут спасибо
Поискал, нашел, но не знаю подойдет ли вам ), не уверен используется ли в suse apt.
1. При удалении пакетов использовать
apt-get remove -D "имя пакета" в таком случае стараются удалиться и связанные пакеты.
2. Чистка неиспользуемых либ.
В общем я делал с помощью apt и rpm.
Сначала устанавливаем пакет apt-scripts
далее
apt-cache list-nodeps | egrep ^lib | xargs rpm -eПовторять до очистки списка.
[quote=hiBeid]Позор!
Если ВЫ такой умный,напишите скрипт.[/quote]
Ну просто детский сад.
Видите ли, у скриптов есть такое свойство- они индивидуальны. Т.е. написать инструкцию и подправить скрипт так, чтобы он запускался у каждого, добавить разые проверки и пр. мне в 2 раза дольше возиться, чем просто_написать. Учите шелл, амиго.
hiBeid, очень прошу Вас вести себя более вежливо. Данная конференция служит для обмена опытом и помощи.
2hiBeid ну вообщем то если вы знаете shell то можно сделать набросок
+
а если у меня заранее нет списка установленных пакетов?
вообщем без списка установленных наверное это ваще нереально))
ну скажем выглядит это примерно так:
1.
rpm -qR gcc-4.4-4.2.i586|grep -v rpmcpp
gcc44
2. CPP:
rpm -q --whatrequires cpp|grep -v gcc-4.4-4.2.i586xorg-x11-7.4-35.3.i586
3. gcc44:
rpm -q --whatrequires gcc44|grep -v gcc-4.4-4.2.i586gcc44-c++-4.4.1_20090817-2.3.4.i586
4.
rpm -qR gcc44-c++-4.4.1_20090817-2.3.4.i586|grep -v rpmgcc44 = 4.4.1_20090817-2.3.4
libstdc++44-devel = 4.4.1_20090817-2.3.4
libc.so.6
libc.so.6(GLIBC_2.0)
libc.so.6(GLIBC_2.1)
libc.so.6(GLIBC_2.2)
libc.so.6(GLIBC_2.3)
libc.so.6(GLIBC_2.7)
libcloog.so.0
libgmp.so.3
libgmpxx.so.4
libmpfr.so.1
libppl.so.7
libppl_c.so.2
тут уже вопрос на сколько мы далеко хотим зайти что бы стереть пакет...
ну эт так набросок))
а если у меня заранее нет списка установленных пакетов?
/var/log/zypp/history не?
точно!))
ну тогда ваще фигня остаётся=)
чуть освобожусь напишу)
tmp13
что значит нет?? если бы его не было, то невозможен был бы менеджмент пакетов :)
Да отвлекитесь вы от zypper`а с ястом, возьмем самую "низкоуровневую" утилиту управления- rpm.
Перед каждой установкой генериться список
rpm -qa > tempfile1
и после тоже
rpm -qa > tempfile2
Потом
diff tempfile1 tempfile2 > tempdiff
Далее добавляем идентификатор конкретной операции, можно запросить у юзера, можно как-то автоматически и пишем в лог.
Когда собираемся удалять, смотрим лог, или как-то автоматизируем этот процесс.
Вот собсно вам и набросок.
UPD
Двойной запрос установленных пакетов не обязателен, можем при повторном вызове использовать tempfile2 как tempfile1
гммм
Далее добавляем идентификатор конкретной операции, можно запросить у юзера, можно как-то автоматически и пишем в лог.
не очень понял... я бы предложил
Перед установкой
rpm -qa > tempfile1
После:
rpm -qa > tempfile2
Потом
echo "----------------`date`------------------"
diff tempfile1 tempfile2 >> tempdiff
echo "----------------END------------------"
соответственно при удалении ориентируемся на список между "-----------------" заодно проверяя
rpm -q --whatrequires этого списка что больше ни кто не нуждается в этих пакетах.
ну и при удалении соответственно удаляем из нужного места эти пакеты.
P.S сто пудов что то я не так написал... пока правда не понял что)))