LinuxForum.Fans
Тема

Управление пакетами в Yast

Автор: NioriX 54 сообщений 15158 просмотров
#12290

Здравствуйте!
Задумался тут о том, как можно организовать управление пакетами так, что бы со временем система не захламилась. Простой пример: хотим скомпилировать программу, для этого ставим gcc, он в свою очередь тянеть еще несколько пакетов. После компилирования gcc нам не нужен, мы его удаляем, а вот пакеты которые gcc подтянул за собой остаются... Как можно это поправить?

#12292

теоретически можно попробовать найти пакеты от которых никто не зависит.

#12293

Loky написал:
теоретически можно попробовать найти пакеты от которых никто не зависит.
ну почему же только теоретически можно и практически )
#12294

я таким не занимался, поэтому знаю только в теории :)

#12296

поищу где то в рассылке было )

#12297

Один способ есть, перед установкой экспортировать список установленных пакетов, а после установке импортировать его, тем самым удалив все пакеты которые устанавливались после экспорта, но это несколько геморно...

теоретически можно попробовать найти пакеты от которых никто не зависит.

Можно подробнее?

#12298

NioriX написал:
Можно подробнее?
по моему как-то через rpm поищу и выложу если никто раньше не запостит
#12369

писал в своё время скрипт... до конца не додумал дома мб посмотрю найду=)
но если честно меня это проблема тоже всегда заботила)

#12673

Хакеры.. все решается коротеньким скриптом в пару строчек :mad:

#12675

hiBeid, если знаете ,напишите :)

#12677

Позор!
Кактатаг: составили список уже установленных пакетов-- установили то что хотели-- составили снова-- diff`ом вытащили разницу-- записали в лог с каким-то id-- потом при удалении посмотрели лог... скрипт совсем несложный выйдет.

#12683
hiBeid написал:
Позор!

Кому?
Если ВЫ такой умный,напишите скрипт.К нему подробную инструкцию.Кому это нужно Вам
скажут спасибо

#12693

Поискал, нашел, но не знаю подойдет ли вам ), не уверен используется ли в suse apt.

1. При удалении пакетов использовать

text
apt-get remove -D "имя пакета"

в таком случае стараются удалиться и связанные пакеты.

2. Чистка неиспользуемых либ.

В общем я делал с помощью apt и rpm.

Сначала устанавливаем пакет apt-scripts

далее

text
apt-cache list-nodeps | egrep ^lib | xargs rpm -e

Повторять до очистки списка.

#12694
renegat написал:
[quote=hiBeid]Позор!

Если ВЫ такой умный,напишите скрипт.[/quote]

Ну просто детский сад.
Видите ли, у скриптов есть такое свойство- они индивидуальны. Т.е. написать инструкцию и подправить скрипт так, чтобы он запускался у каждого, добавить разые проверки и пр. мне в 2 раза дольше возиться, чем просто_написать. Учите шелл, амиго.

#12753

hiBeid, очень прошу Вас вести себя более вежливо. Данная конференция служит для обмена опытом и помощи.

#12785

2hiBeid ну вообщем то если вы знаете shell то можно сделать набросок
+
а если у меня заранее нет списка установленных пакетов?

вообщем без списка установленных наверное это ваще нереально))
ну скажем выглядит это примерно так:
1.

text
rpm -qR gcc-4.4-4.2.i586|grep -v rpm

cpp
gcc44

2. CPP:

text
rpm -q --whatrequires cpp|grep -v gcc-4.4-4.2.i586

xorg-x11-7.4-35.3.i586

3. gcc44:

text
rpm -q --whatrequires gcc44|grep -v gcc-4.4-4.2.i586

gcc44-c++-4.4.1_20090817-2.3.4.i586

4.

text
rpm -qR gcc44-c++-4.4.1_20090817-2.3.4.i586|grep -v rpm

gcc44 = 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

тут уже вопрос на сколько мы далеко хотим зайти что бы стереть пакет...
ну эт так набросок))

#12787
tmp13 написал:

а если у меня заранее нет списка установленных пакетов?

/var/log/zypp/history не?

#12811

точно!))
ну тогда ваще фигня остаётся=)
чуть освобожусь напишу)

#12844

tmp13
что значит нет?? если бы его не было, то невозможен был бы менеджмент пакетов :)

Да отвлекитесь вы от zypper`а с ястом, возьмем самую "низкоуровневую" утилиту управления- rpm.
Перед каждой установкой генериться список
rpm -qa > tempfile1
и после тоже
rpm -qa > tempfile2
Потом
diff tempfile1 tempfile2 > tempdiff
Далее добавляем идентификатор конкретной операции, можно запросить у юзера, можно как-то автоматически и пишем в лог.
Когда собираемся удалять, смотрим лог, или как-то автоматизируем этот процесс.
Вот собсно вам и набросок.

UPD
Двойной запрос установленных пакетов не обязателен, можем при повторном вызове использовать tempfile2 как tempfile1

#12869

гммм

Далее добавляем идентификатор конкретной операции, можно запросить у юзера, можно как-то автоматически и пишем в лог.

не очень понял... я бы предложил
Перед установкой
rpm -qa > tempfile1
После:
rpm -qa > tempfile2
Потом
echo "----------------`date`------------------"
diff tempfile1 tempfile2 >> tempdiff
echo "----------------END------------------"
соответственно при удалении ориентируемся на список между "-----------------" заодно проверяя
rpm -q --whatrequires этого списка что больше ни кто не нуждается в этих пакетах.

ну и при удалении соответственно удаляем из нужного места эти пакеты.
P.S сто пудов что то я не так написал... пока правда не понял что)))

Войдите или зарегистрируйтесь, чтобы ответить.