Как предотвратить обновление apt от установки вручную установленной библиотеки

332
Angelo Fuchs

У меня есть библиотека, которую я собрал из исходников в версии, которая еще не доступна в архивах Debian. Другой пакет требует этого и apt upgradeхочет установить более старую версию. Как я могу предотвратить это?

Подробности: у меня проблема с Sane, которая была исправлена ​​в его последней версии (libsane: 1.0.27). В Debian самая последняя доступная версия - 1.0.26.

Я попытался закрепить это так:

Package: libsane Pin: version 1.0.27 Pin-Priority: 900 

но это не изменило попытки установить libsane при запуске apt upgrade.

0

3 ответа на вопрос

1
Angelo Fuchs

Вы должны использовать, apt-get upgradeчтобы предотвратить установку новых пакетов.

apt upgrade ведет себя как поведение, которое вы описали.

Из справочных страниц:

Секция man apt-getupgrade

Обновление используется для установки новейших версий всех пакетов, установленных в настоящее время [...], ни при каких обстоятельствах пакеты [...], еще не установленные, извлекаются и устанавливаются.

человек секцияupgrade

обновление используется для установки новейших версий всех пакетов, установленных в настоящее время [...]. Новые пакеты будут установлены, но существующие пакеты никогда не будут удалены.

1
grawity

Вы можете временно хранить определенные пакеты:

apt-mark hold libsane 
это сработало. Не могли бы вы уточнить, что это делает и когда «временно» заканчивается? Angelo Fuchs 6 лет назад 0
0
styrofoam fly

Два самых простых варианта:

  • используйте equivsпакет, чтобы создать фиктивный пакет. Расширенный учебник здесь .

  • измените /var/lib/dpkg/statusфайл, удалив там нежелательную зависимость. Просто найдите пакет, в котором aptуказаны зависимости, и удалите соответствующие элементы из строки зависимостей. Например, линия редактирования, Depends: libco (>= 2.14), libefivar (>= 30), libssl1.0.0 (>= 1.0.0)чтобы, Depends: libefivar (>= 30)если вы хотите, чтобы выбросить libcoи libssl1.0.0требование.

Второй вариант требует, чтобы у вас был установлен этот пакет. Тем не менее, вы можете легко установить пакет с apt-get download packagenameи dpkg --ignore-deps=команды.

не станет ли второй вариант спорным после следующего обновления? Angelo Fuchs 6 лет назад 0
@AngeloFuchs нет, не будет. Но повторная установка этого пакета может изменить его запись в файле состояния. styrofoam fly 6 лет назад 0
Второй вариант у меня не работает. Я удалил «libsane» из зависимостей «xsane», но «apt upgrade» хочет обновить «xsane» и установить «libsane». Angelo Fuchs 6 лет назад 0
Как я уже сказал, повторная установка этого пакета может изменить его запись в файле состояния. Установите новую версию `xsane` с помощью` apt-get download` и `dpkg --ignore-deps ...`, а затем удалите ее зависимости из файла `status`. `apt upgrade` будет работать нормально. styrofoam fly 6 лет назад 0

Похожие вопросы