По какой-то причине мы прекращаем установку пакета через apt-get
, нажимая ctrl kbd> + z kbd>, он создает файл блокировки внутри каталогов /var/lib/dpkg/
и /var/cache/apt/archives/
.
И после этого, если мы хотим установить другой или такой же пакет через apt-get
, нам нужно вручную снять блокировку, выполнив эти две команды sudo rm /var/lib/dpkg/lock
и sudo rm /var/cache/apt/archives/lock
, чтобы произошла установка.
Мой вопрос : есть ли способ автоматически удалить файлы блокировки, которые были созданы после нажатия ctrl kbd> + z kbd>, чтобы мы не Не нужно удалять файлы блокировки вручную.
Поскольку программа не может перехватить SIGSTOP (отправлено Ctrl kbd> + Z kbd>)
Кому процитируйте соответствующие части signal(7)
:
Signal Value Action Comment ─────────────────────────────────────────── SIGSTOP 17,19,23 Stop Stop process The signals SIGKILL and SIGSTOP cannot be caught, blocked, or ignored.
Поэтому, если вы остановите программу с помощью Ctrl kbd> + Z kbd> и закройте терминал, у него нет шансов выполнить очистку (например: удаление файлов блокировки).
Ctrl kbd> + Z kbd> не следует использовать, если вы намерены отменить операцию, используйте ее только в том случае, если вы намерены приостановить программу и возобновить ее (или закройте его аккуратно) позже.
Таким образом, Ctrl kbd> + C kbd> должен использоваться для завершения процессов, потому что программа может перехватить этот сигнал и завершить работу корректно.
Хотя в случае apt-get
нажатие Ctrl kbd> + C kbd> оставит файлы блокировки позади, но завершит процесс. Это означает, что файлы блокировки могут быть удалены, но менеджер пакетов может остаться в несогласованном состоянии, если вы завершили его в критической точке.
На самом деле не существует безопасной опции для чистого завершения apt-get
во время установки / обновления пакетов, но отмена (Ctrl-C, затем удаление файлов блокировки) во время загрузки должна быть в порядке.
Никогда не удаляйте блокировку вручную. ( Почему? )
Лучший способ - возобновить процесс, а не удалить блокировку. Созданная блокировка гарантирует, что другие экземпляры apt не будут запущены одновременно.
Ctrl kbd> + Z kbd> приостанавливает процесс. Чтобы вернуть его на передний план и продолжить выполнение, введите
fg
. Это позволит apt продолжить то, что он делал, и завершить процесс. Чтобы остановить выполнение apt, вам нужно убить его, используя Ctrl kbd> + C kbd>. Это также снимет блокировку.
См. Также: