Не может понизить пакет, обновленный ранее

Примечание 1: В конце сообщения я объясняю, почему я думаю, что это не дубликат этого или этого вопроса.

Примечание 2: Если Вы не хотите тратить впустую слишком много времени в чтении вопроса, можно просто считать проблему и, если Вы хотите, что я попробовал. Остальная часть сообщения просто содержит детали для полноты.

Проблема

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

Затем я понизил пакет, но по-видимому более новая версия осталась в некотором кэше и aptitude инструмент обновляет его периодически (каждые 75 минут более точно).

Как я могу предотвратить это?

Возможно, я должен найти способ удалить новую версию из некоторого кэша?

Что я попробовал

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

Например, я пытался использовать dpkg --set-selections apt-mark hold, aptitude hold и Lock version функция в Synaptic.

В частности, Synaptic инструмент даже сообщает о пакете, как заблокировано, но aptitude все еще обновления это, и конечно я пытался держать пакет с помощью очень aptitude инструмент, но то же происходит.

После некоторого расследования я понял это aptitude устанавливает более новую версию путем выполнения dpkg устанавливать a .deb файл в /var/cache/apt/archives/. Отчаянно, я даже попробовал грязный подход, чтобы просто удалить тот файл, но он даже повторно создан (таким образом, я предполагаю, что он может быть загружен с сети или извлечен из некоторого tar/zip-файла).

Наконец, я также пытался полностью удалить более новое использование версии apt-get purge и устанавливать более старую версию впоследствии с помощью apt-get install и содержать его впоследствии. Ничто, это все еще обновлено автоматически...

Подробнее

Контекст

Из-за проблем совместимости в записи некоторого кода, после обновления пакета, давайте назовем его thepackage, Я должен был передумать, и я должен был понизить его, от более новой версии до более старой версии, сказать от 1.1 кому: 1.0.

Поэтому я выполняю что-то как

dpkg -i thepackage_1.0.deb

Но каждые 75 минут файлы от этого пакета автоматически удалены и заменены файлами от более новой версии 1.1, как будто некоторый системный сценарий обновляет пакет автоматически.

Что происходит

Затем для исследования о причине я заменил rm инструмент для удаления файлов со сценарием я записал который, прежде, чем назвать фактическое rm (который был переименован как real_rm), печатает цепочку команд, которые закончили тем, что звонили rm (Я сделал это путем получения PID каждого родителя процесса).

Затем файл журнала, сгенерированный этим моим сценарием, печатает что-то как:

COMMAND: /bin/bash /bin/rm -rf -- /var/lib/dpkg/tmp.ci

CAUSAL CHAIN:
/sbin/init
-> /usr/sbin/cron -f
-> /usr/sbin/CRON -f 
-> /bin/sh -c    /sbin/maint --mode=cron > /dev/null 2>&1 
-> /usr/bin/perl /sbin/maint --mode=cron
-> /usr/bin/perl -I /var/cache/sysmaint/production/vol/linux/ubuntu/16.04/lib/perl /var/cache/sysmaint/production/vol/linux/ubuntu/16.04/maint/017aptitude/maint --nodebug --nosilent --nodryrun --nologperline --colour --nomachineread --trace=none --mode=cron
-> /usr/bin/aptitude -o Dpkg::Options::=--force-confdef -v -y -f install
-> /usr/bin/dpkg --force-confdef --status-fd 57 --unpack --auto-deconfigure /var/cache/apt/archives/thepackage_1.1.deb

От этого журнала мы видим это cron периодически работает aptitude путем выполнения

/usr/bin/aptitude -o Dpkg::Options::=--force-confdef -v -y -f install

и эта команда выполняет следующую подкоманду

/usr/bin/dpkg --force-confdef --status-fd 57 --unpack --auto-deconfigure /var/cache/apt/archives/thepackage_1.1.deb

Поэтому это кажется этим aptitude периодически выполняется для автоматического обновления некоторых пакетов через dpkg сохраненный в папке кэша и одном из тех пакетов thepackage_1.1.deb.

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

0
задан 29 June 2018 в 06:41

1 ответ

Использовать apt-mark hold package_name установить этот пакет в ожидании.

$ apt-mark --help
apt 1.6.1 (amd64)
Usage: apt-mark [options] {auto|manual} pkg1 [pkg2 ...]

apt-mark is a simple command line interface for marking packages
as manually or automatically installed. It can also be used to
manipulate the dpkg(1) selection states of packages, and to list
all packages with or without a certain marking.

Most used commands:
  auto - Mark the given packages as automatically installed
  manual - Mark the given packages as manually installed
  hold - Mark a package as held back
  unhold - Unset a package set as held back
  showauto - Print the list of automatically installed packages
  showmanual - Print the list of manually installed packages
  showhold - Print the list of package on hold
1
ответ дан 29 October 2019 в 03:07

Другие вопросы по тегам:

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