LINUX.ORG.RU

[Pacman] Вопрос по зависимостям

 


0

1

Предположим: во время обновления пакета обнаруживается, что у него изменился список зависимостей. Будут ли устанавливаться новые зависимости и удаляться старые в соответствии с новым списком?

★★★★★

  1. Предложит установить новые, и установит их,
  2. Старые не удаляются (по крайней мере по умолчанию), но помечаются как сироты. Их список можно посмотреть
    pacman -Qdt
gman
()
Ответ на: комментарий от gman

А есть какая-нибудь команда наподобие apt-get autoremove в Debian, которая удаляет эти пакеты-сироты?

eugeno ★★★★★
() автор топика
Ответ на: комментарий от gman

А ещё лучше, если порядок удаления таких пакетов можно прописать в конфиге пакмана. Вот только возможно ли это?

eugeno ★★★★★
() автор топика
Ответ на: комментарий от eugeno

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

pacman -Qdt
например так
pacman -Rsn $(pacman -Qdtq)
Но лучше удалить их вручную. Большой список образовался?

gman
()
Ответ на: комментарий от gman

Большой список образовался?

В том-то и дело, что пока ничего не образовалось, я ещё только подумываю поставить арч. В ходе обдумывания возник такой вопрос. Просто хочется, чтобы система не обрастала всяким хламом, а всегда была такой, как будто её только что установили. В дебиане (stable) таких вопросов не возникает по понятным причинам:)

eugeno ★★★★★
() автор топика
Ответ на: комментарий от gman

И вообще, зачастую pacman после обновления выводит список осиротевших после обновления пакетов.

Зачастую? O_o А почему не всегда?

eugeno ★★★★★
() автор топика
Ответ на: комментарий от Axon

Как ни странно, многие пакеты, помеченные как сироты, вполне себе работают...

// P.S. А как удалить из пакмановского кеша старые версии пакетов?

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

> // P.S. А как удалить из пакмановского кеша старые версии пакетов?

Осиль уже man pacman, он же совсем небольшой. Там это есть.

ATIpro ★★
()
Ответ на: комментарий от Eddy_Em

Как ни странно, многие пакеты, помеченные как сироты, вполне себе работают...

А чего в этом странного? Сирота - это пакет, установленный, как зависимость, от которого теперь ничего не зависит. Конечно, он работает.

А как удалить из пакмановского кеша старые версии пакетов?

sudo rm -v /var/cache/pacman/pkg/*

Axon ★★★★★
()
Ответ на: комментарий от ATIpro

ЕМНИП, выводит такие сообщения yaourt, а pacman нет.

Кстати, может быть. Напрямую пакманом никогда не пользуюсь.

Axon ★★★★★
()
Ответ на: комментарий от Axon

sudo rm -v /var/cache/pacman/pkg/*

Неправильный совет. Так удалится все. А надо только устаревшие пакеты (например, лежат у меня kernel2.6.38, kernel3.0.0 и kernel3.0.6 - надо удалить первые два, а последний оставить).

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от gman

0о как нет?

neko@gdetotut ~ $ pacman -Qdt
local/ace 6.0.1-1
extra/archlinux-artwork 1.6-2
local/automake1.10 1.10.3-1 (base-devel)
extra/automoc4 0.9.88-2
core/bin86 0.16.18-1
extra/boost 1.47.0-2
extra/cmake 2.8.6-1
core/ed 1.5-2
extra/fontforge 20110222-2
local/gen-init-cpio 2.6.36-1
extra/git 1.7.7-1
extra/gobject-introspection 1.30.0-1
extra/gtksourceview2 2.10.5-1
extra/gutenprint 5.2.7-2
extra/imake 1.0.3-2
extra/intltool 0.41.1-2
extra/kdegraphics-ksaneplugin 4.7.2-1
extra/kdegraphics-mobipocket 4.7.2-1
extra/kdegraphics-strigi-analyzer 4.7.2-1
extra/kdegraphics-svgpart 4.7.2-1
extra/kdegraphics-thumbnailers 4.7.2-1
extra/kdesdk-scripts 4.7.2-1 (kde kdesdk)
extra/libgraphite 2.3.1-2
extra/libgtkhtml 2.11.1-3
extra/libwebkit 1.6.1-1
extra/lynx 2.8.7-4
extra/mercurial 1.9.3-1
extra/mpg123 1.13.4-1
extra/perl-fcgi 0.73-1
local/perl-io-all 0.410.0-1
community/prelink 20110622-1
extra/python2-distribute 0.6.21-1
community/qconf 1.4-2
extra/raptor1 1.4.21-3
extra/rpmextract 1.0-4
extra/sdl_gfx 2.0.22-1
extra/subversion 1.6.17-6
==> Do you want to remove these packages (with -Rcs options) ?  [y/N]
==> -----------------------------------------------------------------
==> 

snoopcat ★★★★★
()
Ответ на: комментарий от Axon

> sudo rm -v /var/cache/pacman/pkg/*

Тоже почитай man pacman на досуге. Делается все проще. pacman -Sc чистит от неустановленных пакетов, а pacman -Scc удаляет все из кэша.

ATIpro ★★
()
Ответ на: комментарий от ATIpro

pacman -Sc чистит от неустановленных пакетов

Это не то, что я хотел: так из кеша будут удаляться все неустановленные пакеты. А надо удалить лишь старые версии пакетов. Пусть даже не установленных.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

Ну, не такая уж и нетривиальная.

for i in $(ls /var/cache/pacman/pkg/ | grep -o '^\([a-z,0-9,_]\+-\)\+' | uniq -c | grep -v '      1' | sed 's/^ \+[0-9] //' | sed 's/-$//'); do rm -v $(ls /var/cache/pacman/pkg/$i* | sort -r | sed '1d'); done
P.S. Осторожно! Плотность быдлокода на одну строку на баше превышает критическую, возможно образование чёрной дыры!

Axon ★★★★★
()
Ответ на: комментарий от Eddy_Em

Да там ничего страшного. Просто я скрипты писать не умею, делал как мог. :-) В скобках получаем список пакетов, которых в кэше не по одному, потом для каждого получаем список файлов в кэше, сортируем по убыванию, удаляем из списка первую строчку, остальному делаем rm. %)

Axon ★★★★★
()
Ответ на: комментарий от Axon

сортируем по убыванию

Вот здесь и может проблемка возникнуть. Версии могут нумероваться как 1.2.3, 1.2.4 и т.п., могут - как 07112011, 12122012 и т.п. - четкой структуры нет же.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

Там, где по датам, идёт сначала год, потом месяц, потом число, так что сортировка будет корректной. С ревизиями git тоже проблем быть не должно. А больше там типов нумерации я и не помню.

Axon ★★★★★
()
Ответ на: комментарий от Axon

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

Axon ★★★★★
()
Ответ на: комментарий от Eddy_Em

Вот недавно читал Арчевики и вспомнил этот тред

Preventing unwanted cache purges
By default, pacman -Sc removes package tarballs from the cache that correspond to packages that are not installed on the machine the command was issued on. Because pacman cannot predict what packages are installed on all machines that share the cache, it will end up deleting files that should not be.
To clean up the cache so that only outdated tarballs are deleted, add this entry in the [options] section of /etc/pacman.conf:
CleanMethod = KeepCurrent

ATIpro ★★
()
Ответ на: комментарий от ATIpro

О, спасибо. Хоть и читал я мануалы, но как-то очень плохо.

Eddy_Em ☆☆☆☆☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.