[sisyphus] Установка конкретной версии пакета

Ivan A. Melnikov iv на altlinux.org
Пт Окт 21 10:21:09 MSK 2022


On Fri, Oct 21, 2022 at 10:06:02AM +0300, Sergei Epiphanov wrote:
> 
> Антон Мидюков <midyukov-anton на ya.ru> 21 октября 2022 г. 09:53:02 написал:
> 
> > 21.10.2022 13:48, Sergei Epiphanov пишет:
> > > Добрый день!
> > > 
> > > Сегодня столкнулся в очередной раз с невозможностью обновить пакет
> > > из-за того, что мешает файл из старой версии. А именно:
> > > 
> > > apt-get install firmware-linux
> > > ...
> > > файл /lib/firmware/qcom/LENOVO/21BX из устанавливаемого пакета
> > > firmware-linux-20221017-alt1.noarch конфликтует с файлом из пакета
> > > firmware-linux-20220902-alt1.noarch.
> > > ...
> > > 
> > > И это при том, что это лишь обновление пакета, а не установка в
> > > параллель с другим. Раньше получалось написать строку вида
> > > 
> > > apt-get install firmware-linux#20220902-alt1- firmware-linux#20221017-alt1
> > > 
> > > и всё работало. Сейчас же как ни бился, лишь одна фраза, что пакет
> > > firmware-linux#20221017-alt1- не найден. Как не найден и второй
> > > пакет.
> > > 
> > > Как нужно догадываться что написать, чтобы apt понял, что от него
> > > требуется? Команда 'apt-cache show' намекает на ещё довесок в виде
> > > "+sisyphus...", но только для нового пакета. А для старого как быть?
> > > Как из выведенной ошибки транзакции apt-get понять свои дальнейшие
> > > действия как администратора, а не разработчика ПО, чтобы разрулить
> > > конфликт?
> > > 
> > > Не перемудрили ли тут, затягивая гайки?
> > 
> > Это бага:
> > https://bugzilla.altlinux.org/43806
> > Нужно предварительно удалить файл /lib/firmware/qcom/LENOVO/21BX
> > 
> > В настоящий момент нет способа для исправления баги. Чтобы бага больше
> > не повторилась в пакете сделана проверка.
> 
> У меня больше вопрос: как из текста ошибки узнать правильное именование
> конкретной версии пакета со всеми #, @, + и эпохами, чтобы apt-get его
> принял и сделал какие-то действия с ним? Я не смог эту задачу сходу решить.

Версия в команде install отделяется от имени пакета символом '='.
Как-то так:

apt-get install firmware-linux=20220902- firmware-linux=20221017

Однако это знание Вам мало поможет: apt и так в курсе, что старый
firmware-linux нужно заменить на новый, у него просто не получается.
При установке пакета RPM сначала устанавливает новый, а потом сносит
старый, и подругому никак. Так что между новым и старым вполне могут
быть конфликты, мешающие обновлению.

Чтобы решить проблему, нужно отдельно удалить старый firmware-linux, а
потом поставить новый. Или от рута удалить /lib/firmware/qcom/LENOVO/21BX,
как Вам подсказали выше.

Ну или дождаться, пока кто-нибудь научит RPM заменять симлинки
на каталоги.

-- 
  wbr,
    iv m.


Подробная информация о списке рассылки Sisyphus