Невозможно открыть файл блокировки /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... но это другая история...
Надеюсь, это поможет...