Невозможно открыть файл блокировки /var/lib/dpkg/ заблокировано разрешение - даже с использованием sudo

Я недавно установил свежую версию Ubuntu LTS 12.04. Я использовал LTS 10.4 и сохранил свой package.list и планировал использовать

$> sudo dpkg --set-selections < package.list && apt-get dselect-upgrade

установить те же пакеты в новой версии

Тем не менее компьютер не запускается с ошибкой

E: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied)  
E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?

Простыми ответами на этот вопрос был бы я root или член sudo?

  $> whoami

  surfer

   $> groups

surfer adm cdrom sudo dip plugdev lpadmin sambashare

Так много для простого ответа.

По аналогичному посту Невозможно заблокировать каталог администратора (/var/lib/dpkg/), другой процесс использует его? Рекомендуемое решение

$> sudo fuser -cuk /var/lib/dpkg/lock; sudo rm -f /var/lib/dpkg/lock

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

Я пытался перечислить любые программы, которые могут использовать /var/lib/dpkg/lock

$> sudo lsof 

lsof: WARNING: can't stat() fuse.gvfs-fuse-daemon file system /home/surfer/.gvfs
      Output information may be incomplete.

Обратите внимание, что в списке нет программ.

Точно так же не повезло с

$> ps -e | grep -e apt -e adept | grep -v grep

Ничего не указано.

Кстати, я могу запустить apt-get из командной строки.

$> sudo apt-get update

работает как ожидалось и обновляет мои списки пакетов...

@izx: после попытки вашего предложения я не смог запустить

$> sudo dpkg --set-selections < package.list && apt-get dselect-upgrade

Не удалось с той же ошибкой. Я пробовал это

а) сразу после команды rm в терминале F1
б) выполнение команды rm и возврат к X с помощью Ctrl+Alt+F7
в) выполнение команды rm и перезагрузка

Интересный только вариант с) дал другое (но похожее сообщение об ошибке), которое было

dpkg: error: dpkg status database is locked by another process

Хотя я не могу убить процессы с помощью /var/lib/dpkg/lock с fuserЯ получил следующий вывод для процессов, которые связаны с ним.

$> fuser -cv /var/lib/dpkg/lock  
                     USER        PID ACCESS COMMAND  
/var/lib/dpkg/lock:  root     kernel mount (root)/var  
                     surfer     1641 ....m (surfer)gnome-settings-  
                     surfer     1656 ....m (surfer)compiz  
                     surfer     1679 ....m (surfer)nm-applet  
                     surfer     1688 ....m (surfer)nautilus  
                     surfer     1731 ....m (surfer)gtk-window-deco  
                     surfer     1733 ....m (surfer)unity-panel-ser  
                     surfer     1831 ....m (surfer)gnome-terminal  
                     surfer     1899 f.... (surfer)unity-applicati  
                     surfer     2029 F...m (surfer)update-notifier   

Поэтому я попытался убить каждый процесс с терминала F1 и удалил файл блокировки. Нет проблем. Результат был

$> fuser -cv /var/lib/dpkg/lock  
                     USER        PID ACCESS COMMAND  
/var/lib/dpkg/lock:  root     kernel mount (root)/var  

$> ls /var/lib/dpkg/lock  
ls: cannot access /var/lib/dpkg/lock: No such file or directory

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

Я действительно озадачен и приветствую любую помощь.

5 ответов

Решение

Ваш самый первый шаг должен был быть

sudo dpkg --set-selections < package.list && sudo apt-get dselect-upgrade

Следующая ошибка

E: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied)  

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

Попробуйте правильную команду, добавив sudo, как описано выше, и опубликуйте результаты.

ПРИМЕЧАНИЕ. Использование && позволяет выполнять несколько команд в одной строке, в обычном смысле && выполняет вторую команду только в том случае, если первая команда возвращает значение, сообщающее об успехе. Следовательно,sudo здесь необходимо указать во второй команде.

sudo dpkg --configure -a

Затем повторите попытку.

Эта проблема также может возникнуть, если запущены другие установки.

Попробуй с

sudo apt-get update 

Если вы все еще получаете ошибку блокировки, попробуйте эту команду. Она даст подробности процесса.

ps -e | grep -e apt -e adept | grep -v grep

Затем завершите процесс, используя идентификатор процесса, затем выполните команду обновления.

А также вы можете удалить этот файл, ваша проблема решит

rm /var/lib/dpkg/lock 

sudo dpkg --set-selections < package.list && sudo apt-get dselect-upgrade

В редких случаях вы можете получить эту проблему без других dpkg процесс блокируется пользователем с привилегией sudo.

Я столкнулся с этой проблемой по неизвестным причинам, потому что я потерял эту папку.

Я попробовал все другие решения, предложенные здесь, но ни одно не помогло. Мой простой способ был скопировать /var/lib/dpkg папка с другого сервера с той же версией Ubuntu.

Надеюсь, это поможет, если с кем-то еще случится то же самое.

У меня была та же ошибка, у меня это сработало:

Эта ошибка означает, что вы (или какая-либо программа / скрипт) изменили права доступа к файлу /var/lib/dpkg/status. Пожалуйста, измените их обратно через: "sudo chmod 644 /var/lib/dpkg/status", чтобы исправить проблему.

Я закончил тем, что открыл терминал:

sudo nautilus

переход к папкам / файлам и изменение разрешений на

Я - ПАПКА: ПОЛНЫЙ ДОСТУП / ФАЙЛЫ: ПРОЧИТАЙТЕ НАПИСАТЬ

ROOT - FOLDER: полный доступ / файлы: только для чтения

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

Надеюсь, это поможет...

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