Ошибка dpkg -i: "Не удалось получить блокировку /var/lib/dpkg/lock-frontend. Она удерживается процессом 5489 (dpkg) .. 44s". Как решить эту проблему?

Здравствуйте! Прохожу курс “от 0 до Linux админа” и столкнулся с проблемой при установке пакета с помощью команды dpkg -i.

При попытке установить свой пакет получаю следующую ошибку:

Citing for cache lock: Could not get lock /var/lib/dpkg/lock-frontend. It is held by process 5489 (dpkg) .. 44s

Хотел установить Python 3 и некоторые пакеты через pip3, но когда я запускаю sudo dpkg -i service, возникает блокировка.

Вот структура каталога моего пакета:

service/
├── DEBIAN/
│   ├── control
│   ├── postinst
│   └── preinst
└── usr/
    └── local/
        └── lib/
            └── systemd/
                └── system/
                    └── file.py

В файле DEBIAN/control указаны зависимости python3-pip и python3-dev.

Ошибка возникает, потому что в скрипте preinst вызывается команда apt, что приводит к блокировке. Я исправил свой скрипт, убрав вызовы apt, но теперь при установке пакета я получаю:

sudo pip3: command not found
...
dpkg: dependency problems prevent configuration of service:
  service depends on python3-pip; however
 Package python3-pip is not installed.

Как правильно установить python3-pip и python3-dev, чтобы избежать этих ошибок? Буду признателен за помощь!

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

  1. Подождите: Иногда другой процесс может быстро завершиться. Попробуйте подождать несколько минут и повторите команду.

  2. Проверьте, какой процесс использует dpkg: Выполните следующую команду, чтобы увидеть, какой процесс блокирует доступ:

    ps aux | grep dpkg
    

    Если процесс, указанный в сообщении об ошибке (в вашем случае это 5489), все еще работает и вы можете определить, что это за процесс, вы можете решить, стоит ли подождать его завершения или принудительно завершить.

  3. Завершите блокирующий процесс: Если вы уверены, что никакие важные операции не выполняются, и хотите завершить процесс, используйте:

    sudo kill -9 5489
    

    Замените 5489 на ID процесса, который у вас есть. Будьте осторожны с этой командой, так как она может привести к повреждению состояния ваших пакетов.

  4. Очистите блокировку: В редких случаях вам может потребоваться вручную удалить файлы блокировки:

    sudo rm /var/lib/dpkg/lock-frontend
    sudo rm /var/lib/dpkg/lock
    sudo rm /var/cache/apt/archives/lock
    
  5. Восстановите систему пакетов: После удаления блокировок попробуйте заново настроить dpkg:

    sudo dpkg --configure -a
    

После выполнения этих шагов попробуйте снова установить ваш пакет с помощью dpkg -i.

Спасибо за ваш ответ! У меня всё получилось!