vinc |
|
Темы:
12
Сообщения:
180
Участник с: 13 июня 2015
|
Собственно не проблема, просто вопрос для повышения грамотности. Заметил кольцевую ссылку в дереве пакетов, т.е пакет через цепочку других пакетов замыкается сам на себя. Чтобы разобраться, посмотрел подробности: Т.е. phonon-qt5 требуется для phonon-qt5-vlc, и при этом он зависит от phonon-qt5-backend.НО пакета phonon-qt5-backend в системе нет Провайдером для него выступает phonon-qt5-vlc: Собственно, что получается?Один и тот же пакет выступает и как клиент и как сервер для одного и того же пакета? Т.е. phonon-qt5-vlc шлет запрос в phonon-qt5, а тот вполне может перенаправить запрос якобы в phonon-qt5-backend, а на деле в тот же phonon-qt5-vlc. Это нормальная ситуация? А как пакетный менеджер ведет себя при каскадных операциях? У себя обнаружил шесть таких замыканий. Например, посмотрите вот эти пары, если установлены пакеты: mesa - libglvnd freetype2 <-> harfbuzz usbmuxd <-> libimobiledevice
|
vasek |
|
Темы:
48
Сообщения:
11320
Участник с: 17 февраля 2013
|
Нет никакой pactree -d1 usbmuxd usbmuxd └─libimobiledevice Видим всего одна зависимость от пакета libimobiledevice. Смотрим зависимость этого пакета pacman -Qi libimobiledevice | grep Зависит Зависит от : libusbmuxd usbmuxd gnutls И это же показывает pactree -d2 usbmuxd (в этом выводе будет раскрыта зависимость libimobiledevice, точнее всех пакетов 1-го уровня и т.д.) pactree -d2 usbmuxd usbmuxd └─libimobiledevice ├─libusbmuxd ├─usbmuxd └─gnutls usbmuxd даже находится на другом уровне, точнее относится к libimobiledevice. Если понимать EDIT 1 - если посмотреть причину установки usbmuxd в выводе pacman -Qi usbmuxd, то увидим - "Установлен как зависимость другого пакета"
Ошибки не исчезают с опытом - они просто умнеют
|
vinc |
|
Темы:
12
Сообщения:
180
Участник с: 13 июня 2015
|
vasekВы прямо посте приводите пример циклической зависимости и утверждаете, что ее нет;)) Из usbmuxd мы идем в libimobiledevice и потом опять в usbmuxd.Мы выходим из одного пакета, идем по зависимостям и попадаем в тот же пакет. Это и есть то, что теории графов называют циклом. Причем здесь количество уровней между ними? И мне вот интересно, как пакетный менеджер разруливает эту ситуацию (а он ее, безусловно, разруливает). Update. Термины: кольцо или цикл, или петля не важны, главное суть. Поправил заголовок. |
vasek |
|
Темы:
48
Сообщения:
11320
Участник с: 17 февраля 2013
|
Так запрограммирован pactree - показывает пакеты, которые зависят от данного пакета. Важен уровень 1, а дальше pactree расписывает зависимости пакетов находящихся на 1-ом уровне и так далее. А вот если указать pactree пакет, но этот пакет установлен как зависмость другого пакета (а не явно), то само собой в одном из уровней этот пакет и всплывет. Вроде все понятно, либо я плохо объясняю
Ошибки не исчезают с опытом - они просто умнеют
|
vasek |
|
Темы:
48
Сообщения:
11320
Участник с: 17 февраля 2013
|
У меня есть свой скрипт, который отличается от pactree - он учитывает только явно установленные пакеты. Привожу его вывод ~/pct.sh Всего пакетов в pkglist: 242 Какой пакет ищем? (какие пакеты явно зависят от данного): usbmuxd gvfs-afc Обработано пакетов: 242 Выявлено искомых пакетов: 1 Проверяем - pacman -Qi gvfs-afc Зависит от : gvfs=1.36.2 libimobiledevice usbmuxd Причина установки : Явно установлен
Ошибки не исчезают с опытом - они просто умнеют
|
sirocco |
|
Темы:
29
Сообщения:
2501
Участник с: 25 июля 2007
|
определение циклических зависимостей
|
vinc |
|
Темы:
12
Сообщения:
180
Участник с: 13 июня 2015
|
Хорошо бы какую-нибудь статейку ближе к первоисточнику найти. В самих циклических зависимостях проблемы особой нет, просто тем, кто пишет скрипты по дереву зависимостей, нужно учитывать, что они могут быть. Но вот зачем в реальности это нужно, как-то я не понимаю. Допустим, пишу я какую-то библиотеку вызываю функции из другой библиотеки (которая теперь будет у меня в зависимостях), и при этом я должен быть готов к тому, что из этой же библиотеки ко мне прилетят запросы на мои функции? |
vinc |
|
Темы:
12
Сообщения:
180
Участник с: 13 июня 2015
|
siroccoДа, вот про это я и говорил, когда упоминал каскадные операции пакетного менеджера. Вот в таких случаях циклические зависимости и должны проявляться (хотя лично я с проблемами не сталкивался). |
vasek |
|
Темы:
48
Сообщения:
11320
Участник с: 17 февраля 2013
|
Имхо я считаю - что разработчик заложил, то и получили. А он в pactree заложил полную раскладку зависимостей пакетов по уровням - на уровне n+1 указываются зависимости всех пакетов, приведенных на уровне n. И разумеется будут случаи с неявно установленными пакетами, которые имеют в зависимостях (напрямую или через другие зависимые пакеты) требуемый (искомый) пакет, который и выскочит на каком-нибудь уровне. По идее, конечно, можно такие пакеты вычислить и учитывать их при последующей обработке, чтобы исключить проблемы. Но так ли это важно и нужно? Не знаю. Каждый разработчик решает по своему. UPD - лично я ни разу не попадал в такую ситуацию. А если и возникнет такая ситуация, то разобраться с ней, думаю, не проблема.
Ошибки не исчезают с опытом - они просто умнеют
|
vinc |
|
Темы:
12
Сообщения:
180
Участник с: 13 июня 2015
|
Как я понимаю, именно для того, чтобы разрубить циклическую зависимость, и используется опция 'c' в операции удаления: pacman -Rc <пакет>. Если в обычной ситуации хватает рекурсивного удаления с сохранением нужных зависимостей pacman -Rs, то циклическая зависимость не позволит это сделать. И тогда - только грубое снесение всего поддерева зависимостей для заданного пакета. |