В файловых системах стиля Unix все система знает о файле (кроме его имени), хранится или в inode или в месте, на которое указывает inode. Это включает его содержание, владение, даты модификации и полномочия. Запись каталога Unix является просто именем и указателем на inode, и только используется, когда процесс открывает файл. После того как файл открыт, запись каталога не важна.
То, что это означает, - то, что возможно удалить файл, это в настоящее время открыто, не нарушая процессы, которые читают или пишут тот файл. Удаление файла просто удаляет запись каталога. inode остается, пока все процессы не закрыли файл, в которой точке inode и все другие данные файла удалены (или по крайней мере отмечены как больше не используемые и доступные для восстановления). Это обрабатывается полем, названным "числом каналов", частью inode структуры.
Поэтому, если Вы хотите обновить общую библиотеку, это используется под управлением программой, можно просто удалить файл библиотеки. Так как программа уже имеет открытый файл, это не будет затронуто этим. Затем Вы устанавливаете новую версию библиотеки как новый файл (который получает новый inode).
Запустите следующее:
fuser /var/lib/dpkg/lock /var/lib/apt/lists/lock
ls -l /var/lib/dpkg/lock /var/lib/apt/lists/lock
Если выполняются процессы, и любой из 2-х файлов существует, то запустите:
fuser -k /var/lib/dpkg/lock /var/lib/apt/lists/lock
Тогда фузер
отправит сигнал SIGKILL
на каждый процесс. Это должно решить проблему.
Если вышеописанное не работает, то вы можете обратить внимание на следующее:
Если вы используете Ubuntu 16.0.4 выше, введите следующую команду на терминале
ps -A | grep apt
Если вы используете версию Ubuntu ниже 16.0.4, введите команду ниже,
ps -A | grep apt-get
Она даст вам идентификатор текущего запущенного процесса. Если вы убьете этот процесс, ваша проблема будет решена.
Для уничтожения выполните команду «попробуйте» ниже:
sudo kill -TERM process_id
например: sudo kill -TERM 18846