LINUX.ORG.RU

Переустановить два пакета при обновлении третьего

 , ,


0

1

Дистрибутив manjaro. Из AUR собраны librasterbar и qbittorrent, котрые зависят от boost (установлен из официального репозитория).

Каждый раз, когда обновляю boost, qbittorrent перестёт запускаться. Чтобы починить нужно пересобрать librasterbar и qbittorrent. Собственно, как сделать так, чтобы обновление буста автоматически переустанавливало эти два пакета?

Гугл выдаёт какие-то нерелевантые ссылки на обычную переустановку пакетов и биопроблемы с пакманом.

Знаю что есть alpm-hooks, но там при обновлении пакета есть только возможность запустить какой-нибудь скрипт, а идея запускать установку во время установки мне кажется обречённой на провал.

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



Последнее исправление: dsxl (всего исправлений: 2)

Как-то же dkms драйвера пересобираются каждый раз при смене ядра. И здесь можно аналогичное сделать, если не ошибаюсь.

greenman ★★★★★
()
Последнее исправление: greenman (всего исправлений: 1)

но там при обновлении пакета есть только возможность запустить какой-нибудь скрипт, а идея запускать установку во время установки мне кажется обречённой на провал.

Ставь в очередь. В чём проблема?

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

dkms драйвера пересобираются каждый раз при смене ядра

Разве за это отвечает не post_upgrade() хук в .install файле? У меня же буст из официальной репы и я ничего не могу в него добавить.

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

Ставь в очередь.

Хорошо, а как это сделать?

Гуглю «pacman queue package» и «pacman queue» - ничего релевантного. Или ты предлагаешь мне сделать собственную обвязку вокруг пакмана и реализовать очередь самостоятельно? Боюсь, это слишком трудоёмко.

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

Делать обвязку вокруг пакмана с самодельной очередью установки пакетов - это трудоёмко.

Я у тебя второй раз спрашиваю: как добавить пакеты в очередь установки? И где ты нашёл этот «PostHook»? ты говоришь про post_upgrade в .install файле буста? или про PostTransaction Action в alpm-hooks?

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

https://www.archlinux.org/pacman/alpm-hooks.5.html

Я, никогда в глаза не видев Arch, уже накидал и хук и скрипт, которым буду обновлять зависимые пакеты.

Но, тебе, видимо, не нужно решение, а хочется просто поныть. Удачи.

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

Ты, видимо, получил свои пять звёзд за балабольство. Про эти alpm-hooks я написал ещё в открывающем постинге.

alpm-hooks позхволяет запустить скрипт при обновлении пакета, но не позволяют добавить пакеты в текущую транзакцию.

Может быть ты знаешь какой-нибудь alpm-add-to-current-transaction pkg1 pkg2? Потому что гугл не знает.

И совершенно очевидно, что если я запущу pacman -Syu, который обновит boost, который стриггерит yaourt -S librasterbar qbittorrent, то я получу ошибку типа «извините, но пакман уже запущен, удалите lock-файл если считаете это ошибкой»

Я, конечно, могу запустить yaourt -S librasterbar qbittorrent &, что позволит обойти проблему локов, но буст всё равно поставится отдельной транзакцией и если установка librasterbar и qbittorrent зафейлится, то буст обратно сам не откатится на предыдущую версию.

уже накидал и хук и скрипт, которым буду обновлять зависимые пакеты.

предъявите этот хук и скрипт, пожалуйста.

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

предъявите этот хук и скрипт, пожалуйста.

500$

И совершенно очевидно, что если я запущу pacman -Syu, который обновит boost, который стриггерит yaourt -S librasterbar qbittorrent, то я получу ошибку типа «извините, но пакман уже запущен, удалите lock-файл если считаете это ошибкой»

Да ну нафиг. То есть ты проверил, что PostTransaction Action запускается «во время транзакции» и ломает работу пакетного менеджера?

P.S.:

Ты, видимо, получил свои пять звёзд за балабольство.

Человече, я, до регистрации, тут ещё пару лет просто анонимусом сидел, просвещался. А ты, перед тем, как хамить, сходи и стукни стену головой, да посильнее.

dhameoelin ★★★★★
()
Последнее исправление: dhameoelin (всего исправлений: 2)
Ответ на: комментарий от dhameoelin

Нет, оказывается это только в PreTransaction. Но это ничего не меняет, так как остаётся эта проблема:

буст всё равно поставится отдельной транзакцией и если установка librasterbar и qbittorrent зафейлится, то буст обратно сам не откатится на предыдущую версию.

поэтому я и написал это

Хочется какого-то более вменяемого подхода
чтобы можно было сконфигурить пакетный менеджер обновлять все три пакета разом.

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

Но это ничего не меняет, так как остаётся эта проблема:

буст всё равно поставится отдельной транзакцией и если установка librasterbar и qbittorrent зафейлится, то буст обратно сам не откатится на предыдущую версию.

Ну тут сорян. Разве что мониторить результаты выполнения скрипта, висящего на PostTransaction Action пересборки librasterbar и qbittorrent и по фейлу откатывать обновление буста. Но, так как я в арче не силён, то реализацию отката версии буста я тебе дать не смогу.

Хочется какого-то более вменяемого подхода
чтобы можно было сконфигурить пакетный менеджер обновлять все три пакета разом.

Удачи в поисках. Не забудь поделиться результатами.

dhameoelin ★★★★★
()
Последнее исправление: dhameoelin (всего исправлений: 1)
Ответ на: комментарий от dsxl

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

pacman-у на пакеты из аур начхать. Пили свою обёртку, с аниме и понями.

Этих обёрток, кстати, тьма (в арче; как в манджаро, не знаю), может и уже есть то, что тебе нужно.

И всё-таки посмотрел бы внимательней dkms

dkms.install
hook.install
hook.remove
hook.sh
greenman ★★★★★
()
Последнее исправление: greenman (всего исправлений: 1)
Ответ на: комментарий от dsxl

буст всё равно поставится отдельной транзакцией и если установка librasterbar и qbittorrent зафейлится, то буст обратно сам не откатится на предыдущую версию.

А у тебя от буста больше никакие пакеты не зависят? Их тоже надо откатывать (или не обновлять) в таком случае. А там может и ещё что по зависимостям потянуться...

В общем, городи себе локальную репу, где ты сам себе маинтейнер, и обновляйся только из неё.

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

pacman-у на пакеты из аур начхать

Я думаю, что должно быть возможно как-то вызвать makepkg, а потом pacman -U pkg, ну или yaourt -S, который как и любой враппер умеет это делать сам.

Этих обёрток, кстати, тьма (в арче; как в манджаро, не знаю),

В манжаро тоже. В любом случае все эти обёртки должны быть завязаны на общую инфраструктуру alpm.

И всё-таки посмотрел бы внимательней dkms

Посмотрел. В каждом x-dkms пакете лежат исходники. После установки ядра dkms скрипт ищет все x-dkms исходники, компилирует их и кладёт куда надо, а перед обноволением ядра удаляет.

делать такое с qbittorrent можно, но придётся полностью перепилить пакет и pacman -Ql qbittorrent будет возвращать список исходников, а скопмилированные файлы будут, считай, незарегистрированными. Короче говоря этот вариант хуже, чем установка qbittorrent отдельной транзакцией хук в alpm-hooks

А у тебя от буста больше никакие пакеты не зависят? Их тоже надо откатывать (или не обновлять) в таком случае. А там может и ещё что по зависимостям потянуться...

зависят, но они все из официальной репы и обновляются одновременно с ним.

В общем, городи себе локальную репу, где ты сам себе маинтейнер, и обновляйся только из неё.

И как в ней образуются пересобранные версии qbittorrent и libtorrent-rasterbar? Вообще мне бы хотелось сохранять номера версий этих пакетов; просто пересобирать их и переустанавливать.

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

И как в ней образуются пересобранные версии qbittorrent и libtorrent-rasterbar?

А как в [extra] при обновлении boost образуются новые сборки пакетов, зависящих от?

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

Я имел в виду, что мне придётся как-то мониторить обновление буста, пересобирать свои пакеты и выкладывать их в локальную репу. С таким же успехом я могу их сразу устанавливать без всяких локальных репозиториев.

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