[РЕШЕНО] pacman виснет во время обновления пакетов через sudo

Здравствуйте! Пользуюсь GNOME 3 c Xorg.

$ sudo pacman -Syu
: Synchronizing package databases...
 core is up to date
 extra is up to date
 community is up to date
 multilib is up to date
:: Starting full system upgrade...
resolving dependencies...
looking for conflicting packages...

Packages (1) gnome-shell-1:3.34.1+12+ga43c22e3a-1

Total Installed Size:  9.00 MiB
Net Upgrade Size:      0.01 MiB

:: Proceed with installation? [Y/n] y
(1/1) checking keys in keyring               [#####################################################################] 100%
(1/1) checking package integrity             [#####################################################################] 100%
(1/1) loading package files                  [#####################################################################] 100%
(1/1) checking for file conflicts            [#####################################################################] 100%
(1/1) checking available disk space          [#####################################################################] 100%
:: Processing package changes...
(1/1) upgrading gnome-shell                  [#####################################################################] 100%

После этого gnome-terminal безнадёжно зависает. Прерывание процесса даёт Interrupt signal received, но не возвращает в консоль. pacman блокируется и приходится удалять /var/lib/pacman/db.lck, чтобы устанавливать пакеты.

Такое поведение наблюдается не с любыми пакетами, а только с теми, которые пытаются соединиться с display server (например, при обнавлении mutter). В tty консоли обнавление происходит без зависания, но в процессе выводится сообщение:
Error: Can't open display:
Error: Can't open display:

Решение проблемы

добавить или раскомментировать в /etc/sudoers:
Defaults env_keep+=HOME

P.S. При обновлении некоторых пакетов (например gnome-shell или fakeroot) используется HOME. Если не добавить его в окружение для sudo, может возникнуть конфликт, который и вызывает странное поведение, описанное выше.
avdonin
Такое поведение наблюдается не с любыми пакетами, а только с теми, которые пытаются соединиться с display server (например, при обнавлении mutter).
с чего ты взял что gnome-shell или mutter пытаются с чем то соединиться?
все что делается при установке/обновлении можно посмотреть в файле INSTALL в пакете.
mutter-3.34.1+52+g403d8fcc6-1-x86_64.pkg.tar.xz/.INSTALL
post_install() {
  setcap cap_sys_nice+ep usr/bin/mutter
}

post_upgrade() {
  post_install
}
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874
avdonin
Как решить проблему?
для начала нужно полностью привести сообщение об ошибке
avdonin
Error: Can't open display:
если стоит двоеточие, значит есть продолжение ...
а далее гуглить по этой ошибке ... но, имхо, что то делаешь не так ...

PS - если ничего нет после сообщения Can't open display:, то что то в любом случае должно быть перед этим сообщением.
Предположу что используется неправильно sudo ... как пример, запуск bless от root в tty2
sudo bless
[sudo] πapoль для vasek:
(bless:13437): Gtk-WARNING **: 20:00:59.613: cannot open display:
а потому и важен весь вывод, а не часть ........ но в любом случае это вина user
Ошибки не исчезают с опытом - они просто умнеют
vasek
для начала нужно полностью привести сообщение об ошибке
ага, но тут даже с тем выводом что есть мистика получается, с чего это вдруг пакман начал устанавливать пакет gnome-shell если сами базы is up to date
red
если сами базы is up to date
вот это я не заметил ... пропустил мимо глаз ...
Ошибки не исчезают с опытом - они просто умнеют
avdonin, попробуй sudo pacman -Syyu
Ошибки не исчезают с опытом - они просто умнеют
red
ага, но тут даже с тем выводом что есть мистика получается, с чего это вдруг пакман начал устанавливать пакет gnome-shell если сами базы is up to date

Откатил пакет gnome-shell на более старую версию из кэша, чтобы спровоцировать зависание. Такое поведение наблюдается регулярно, причём с некоторыми пакетами при синхронизации и обнавлении из gnome-terminal. Из tty такого поведения не наблюдается, но есть сообщение об ошибке.

nafanja
с чего ты взял что gnome-shell или mutter пытаются с чем то соединиться?

Наверно неправильно выразился. Не пакеты, а программа, которая их обновляет. Потому что обычно, если та или иная программа выводит "can't open display", это говорит о том, что она пытается соединиться с display server, но ей это не удаётся.

vasek
для начала нужно полностью привести сообщение об ошибке
если стоит двоеточие, значит есть продолжение …
а далее гуглить по этой ошибке … но, имхо, что то делаешь не так …

Привожу фрагмент выдачи при выполнении команды pacman в tty консоли
:: Processing package changes...
(1/1) upgrading gnome-shell
Error: Error: Can't open display: Can't open display:

:: Running post-transaction hooks...

Иногда эти ошибки не наслаиваются друг на друга и выводятся в двух разных строчках. gnome-terminal при таких же условиях зависает на строчке upgrading gnome-shell, попытки убить процесс прерыванием Ctrl+C отказываются тщетными. База блокируется.

Искал по этой ошибке и ничего конкретного не нашёл, потому пишу сюда.
avdonin
gnome-terminal
попробуй другой терминал ... даже интересно ... имхо, терминал не причем, но все-таки
... и опиши подробнее что ты делаешь, что запускаешь, что запущено и т.д.
Ошибки не исчезают с опытом - они просто умнеют
vasek
попробуй другой терминал … даже интересно … имхо, терминал не причем, но все-таки
… и опиши подробнее что ты делаешь, что запускаешь, что запущено и т.д.

открываю в GNOME 3 терминал gnome-terminal
$ sudo pacman -U /var/cache/pacman/pkg/gnome-shell-[старая версия]
при downgrading происходит зависание, ничего не происхоит
закрываю окно и открываю новое
$ sudo rm /var/lib/pacman/db.lck
$ xterm
в открывшемся окне xterm ввожу туже самую команду и точно такое же поведение с зависанием

нажимаю Ctrl+Alt+F3
в открывшейся tty консоли upgrading и downgrading проходят, но в их процессе выводится вышеупомянутся Error: Can't open display:
и ничего после двоеточия
процесс завершается без зависания
avdonin
$ sudo pacman -U /var/cache/pacman/pkg/gnome-shell-[старая версия]
не пойму, зачем это нужно? .... или я что то как всегда пропустил и не заметил?
avdonin
при downgrading происходит зависание, ничего не происхоит
закрываю окно и открываю новое
$ sudo rm /var/lib/pacman/db.lck
естественно процесс висит ... создается файл блокировки .... и чтобы запустить pacman нужно сначала удалить файл блокировки.
В части зависания - если уж так хочется откатить gnome-shell, то лучше это делать сразу из текстовой консоли (tty), не запуская X ... вот только не соображу, как там с зависимостями.
Если снова будет зависание, то нужно будет проводит анализ - или что то делается и не может завершиться или находится в режиме ожидания.
Ошибки не исчезают с опытом - они просто умнеют
 
Зарегистрироваться или войдите чтобы оставить сообщение.