Рейтинг:1

dpgk --configure -a зависает при настройке base-files , видимо, в systemd-tty-ask-password-agent

флаг vn

dpkg --configure -a висит при настройке базовые файлы. Судя по диагностике пока что dpkg --configure -a работает /var/lib/dpkg/info/base-files.postinst, который работает deb-systemd-invoke start motd-news.timer, который выполняет systemd-tty-ask-password-agent --watch, который ждет вечно (не спрашивая пароль на терминале). Подробная диагностика:

$ sudo strace -o /tmp/dpkg-strace -tt -ff dpkg --debug=222 --configure -a
Настройка base-файлов (11ubuntu5.4)...
D000002: fork/exec /var/lib/dpkg/info/base-files.postinst (настроить 11ubuntu5.3)

Запуск этого постинста скрипт вручную с баш -xv зависает при выполнении deb-systemd-invoke start motd-news.timer, кое-что также выявлено pstree (для случая, работающего без страйса):

bash — sudo — sudo — dpkg — base-files.post — systemctl — systemd -tty-спросить

Strace выводит около 10 тысяч строк. Один из выходных файлов strace, который соответствует команде deb-systemd-invoke start motd-news.timer, заканчивается на опрос, видимо ждет сокет. Выбор из deb-systemd-invoke start motd-news.timer (ПИД-код 51072):

10:50:46.673278 закрыть(10) = 0
10:50:46.673319 execve("/usr/bin/deb-systemd-invoke", ["deb-systemd-invoke", "start", "motd-news.timer"], 0x56297d000c88 /* 37 переменных */) = 0
10:50:46.673511 брк(НОЛЬ) = 0x55fff0539000
10:50:46.673534 arch_prctl(0x3001 /* ARCH_??? */, 0x7ffd593b7540) = -1 EINVAL (неверный аргумент)
10:50:46.673574 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (Нет такого файла или каталога)
10:50:46.673613 openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
10:50:46.673641 fstat(3, {st_mode=S_IFREG|0644, st_size=160254, ...}) = 0
10:50:46.673663 mmap(NULL, 160254, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f3bdfb5e000
10:50:46.673686 закрыть(3) = 0
10:50:46.673713 openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libdl.so.2", O_RDONLY|O_CLOEXEC) = 3
[...]
10:50:46.708457 сокет(AF_UNIX, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 3
[...]
10:50:46.710298 sendmsg(3, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="l\1\4\1\24\0\0\0\2\0\0\0\227 \0\0\0\1\1o\0\31\0\0\0/org/fre"..., iov_len=168}, {iov_base="\17\0\0\0motd-news.timer \0", iov_len=20}], msg_iovlen=2, msg_controllen=0, msg_flags=0}, MSG_DONTWAIT|MSG_NOSIGNAL) = 188
10:50:46.710350 recvmsg(3, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="l\2\1\0017\0\0\0\3\0\0\0007\0\0 \0\5\1u\0\2\0\0\0", iov_len=24}], msg_iovlen=1, msg_controllen=0, msg_flags=MSG_CMSG_CLOEXEC}, MSG_DONTWAIT|MSG_CMSG_CLOEXEC) = 24
10:50:46.710422 recvmsg(3, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="\7\1s\0\30\0\0\0org.freedesktop.systemd1"..., iov_len= 103}], msg_iovlen=1, msg_controllen=0, msg_flags=MSG_CMSG_CLOEXEC}, MSG_DONTWAIT|MSG_CMSG_CLOEXEC) = 103
10:50:46.710472 sendmsg(3, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="l\1\4\19\0\0\0\3\0\0\0\250\0 \0\0\1\1o\0002\0\0\0/org/fre"..., iov_len=184}, {iov_base="\35\0\0\0org.freedesktop.systemd1.Uni". .., iov_len=57}], msg_iovlen=2, msg_controllen=0, msg_flags=0}, MSG_DONTWAIT|MSG_NOSIGNAL) = 241
10:50:46.710522 recvmsg(3, {msg_namelen=0}, MSG_DONTWAIT|MSG_CMSG_CLOEXEC) = -1 EAGAIN (ресурс временно недоступен)
10:50:46.710565 ppoll([{fd=3, events=POLLIN}], 1, {tv_sec=24, tv_nsec=999957000}, NULL, 8) = 1 ([{fd=3, revents=POLLIN}], осталось {tv_sec=24, tv_nsec=999940266})
10:50:46.710626 recvmsg(3, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="l\2\1\1\10\0\0\0\4\0\0\0007\0 \0\0\5\1u\0\3\0\0\0", iov_len=24}], msg_iovlen=1, msg_controllen=0, msg_flags=MSG_CMSG_CLOEXEC}, MSG_DONTWAIT|MSG_CMSG_CLOEXEC) = 24
10:50:46.710676 recvmsg(3, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="\7\1s\0\30\0\0\0org.freedesktop.systemd1"..., iov_len= 56}], msg_iovlen=1, msg_controllen=0, msg_flags=MSG_CMSG_CLOEXEC}, MSG_DONTWAIT|MSG_CMSG_CLOEXEC) = 56
10:50:46.710745 recvmsg(3, {msg_namelen=0}, MSG_DONTWAIT|MSG_CMSG_CLOEXEC) = -1 EAGAIN (ресурс временно недоступен)
10:50:46.710794 ppoll([{fd=3, события=POLLIN}], 1, NULL, NULL, 8

Другой, systemd-tty-ask-password-agent --watch, заканчивается на голосование, по-видимому, ожидая сокета или события inotify для появления пароля. Выбор для 51076:

10:50:46.709061 set_робаст_список (0x7fb46e4f98e0, 24) = 0
10:50:46.709158 prctl(PR_SET_NAME, "(sd-askpwagent)"...) = 0
10:50:46.709242 geteuid() = 0
10:50:46.709322 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb46e9cd000
10:50:46.709349 prctl(PR_SET_MM, PR_SET_MM_ARG_START, 0x7fb46e9cd000, 0, 0) = 0
10:50:46.709371 prctl(PR_SET_MM, PR_SET_MM_ARG_END, 0x7fb46e9cd010, 0, 0) = 0
10:50:46.709393 prctl(PR_SET_PDEATHSIG, SIGTERM) = 0
10:50:46.709416 rt_sigaction(SIGHUP, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER|SA_RESTART, sa_restorer=0x7fb46e808210}, NULL, 8) = 0
10:50:46.709439 rt_sigaction(SIGINT, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER|SA_RESTART, sa_restorer=0x7fb46e808210}, NULL, 8) = 0
10:50:46.709459 rt_sigaction(SIGQUIT, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER|SA_RESTART, sa_restorer=0x7fb46e808210}, NULL, 8) = 0
[...]
10:50:46.711627 prlimit64(0, RLIMIT_NOFILE, NULL, {rlim_cur=512*1024, rlim_max=512*1024}) = 0
10:50:46.711660 prlimit64(0, RLIMIT_NOFILE, {rlim_cur=1024, rlim_max=512*1024}, NULL) = 0
10:50:46.711690 execve("/bin/systemd-tty-ask-password-agent", ["/bin/systemd-tty-ask-password-ag"..., "--watch"], 0x7ffce60ac808/ * 37 переменных */) = 0
10:50:46.711926 брк(НОЛЬ) = 0x55abfc744000
10:50:46.711956 arch_prctl(0x3001 /* ARCH_??? */, 0x7ffe7027e8f0) = -1 EINVAL (недопустимый аргумент)
[...]
10:50:46.722618 чтение (3, "", 1024) = 0
10:50:46.722637 закрыть(3) = 0
10:50:46.722659 stat("/run/systemd/ask-password-block", {st_mode=S_IFDIR|0700, st_size=160, ...}) = 0
10:50:46.722683 mknod("/run/systemd/ask-password-block/136:6", S_IFIFO|0600) = -1 EEXIST (файл существует)
10:50:46.722706 openat(AT_FDCWD, "/run/systemd/ask-password-block/136:6", O_RDONLY|O_NOCTTY|O_NONBLOCK|O_CLOEXEC) = 3
10:50:46.722728 stat("/run/systemd", {st_mode=S_IFDIR|0755, st_size=520, ...}) = 0
10:50:46.722751 mkdir("/run/systemd/ask-password", 0755) = -1 EEXIST (файл существует)
10:50:46.722779 stat("/run/systemd/ask-password", {st_mode=S_IFDIR|0755, st_size=40, ...}) = 0
10:50:46.722803 rt_sigprocmask(SIG_SETMASK, [TERM], NULL, 8) = 0
10:50:46.722823 signalfd4(-1, [TERM], 8, SFD_CLOEXEC|SFD_NONBLOCK) = 4
10:50:46.722845 inotify_init1(IN_CLOEXEC) = 5
10:50:46.722865 inotify_add_watch(5, "/run/systemd/ask-password", IN_CLOSE_WRITE|IN_MOVED_TO) = 1
10:50:46.722891 openat(AT_FDCWD, "/run/systemd/ask-password", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 6
10:50:46.722913 fstat(6, {st_mode=S_IFDIR|0755, st_size=40, ...}) = 0
10:50:46.722937 getdents64(6, /* 2 записи */, 32768) = 48
10:50:46.722959 getdents64(6, /* 0 записей */, 32768) = 0
10:50:46.722977 близко(6) = 0
10:50:46.722995 опрос([{fd=4, события=POLLIN}, {fd=5, события=POLLIN}], 2, -1

Основной процесс и скрипт base-files.postinst кажутся ожидающими с ждать4 для завершения других процессов:

10:50:46.017699 execve("/usr/bin/dpkg", ["dpkg", "--configure", "-a"], 0x7fffb1462800 /* 27 переменных */) = 0
10:50:46.018044 брк(НОЛЬ) = 0x5636a8783000
10:50:46.018135 arch_prctl(0x3001 /* ARCH_??? */, 0x7fffa60dac50) = -1 EINVAL (неверный аргумент)
10:50:46.018208 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (Нет такого файла или каталога)
10:50:46.018264 openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
10:50:46.018307 fstat(3, {st_mode=S_IFREG|0644, st_size=160254, ...}) = 0
10:50:46.018343 mmap(NULL, 160254, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fa02ba19000
10:50:46.018377 близко(3) = 0
10:50:46.018416 openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libselinux.so.1", O_RDONLY|O_CLOEXEC) = 3
10:50:46.018450 читать(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\ 0@p\0\0\0\0\0\0"..., 832) = 832
[...]
10:50:46.163945 fcntl(5, F_SETFD, FD_CLOEXEC) = 0
10:50:46.164043 fstat(5, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
10:50:46.164180 write(5, "#padding\n#padding\n#padding\n#padd"..., 4096) = 4096
10:50:46.164354 write(5, "padding\n#padding\n#padding\n#paddi"..., 512) = 512
10:50:46.164486 lseek(5, 0, SEEK_SET) = 0
10:50:46.164598 stat("/var/lib/dpkg/info/base-files.postinst", {st_mode=S_IFREG|0755, st_size=5664, ...}) = 0
10:50:46.164718 клон(child_stack=NULL, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7fa02b7406d0) = 51032
10:50:46.165711 rt_sigaction(SIGQUIT, {sa_handler=SIG_IGN, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7fa02b840210}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
10:50:46.165855 rt_sigaction(SIGINT, {sa_handler=SIG_IGN, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7fa02b840210}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
10:50:46.166017 ждать4(51032,

и

10:50:46.165943 set_робаст_список (0x7fa02b7406e0, 24) = 0
10:50:46.166455 канал("/") = 0
10:50:46.166748 execve("/var/lib/dpkg/info/base-files.postinst", ["/var/lib/dpkg/info/base-files.po"..., "configure", " 11ubuntu5.3"], 0x5636a87c4840 /* 36 переменных */) = 0
10:50:46.168230 брк(НОЛЬ) = 0x56297cffd000
10:50:46.168542 arch_prctl(0x3001 /* ARCH_??? */, 0x7fffc0915d90) = -1 EINVAL (недопустимый аргумент)
10:50:46.168877 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (Нет такого файла или каталога)
10:50:46.169322 openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
10:50:46.169734 fstat(3, {st_mode=S_IFREG|0644, st_size=160254, ...}) = 0
10:50:46.169951 mmap(NULL, 160254, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f5c7351e000
10:50:46.170127 близко(3) = 0
[...]
10:50:46.673001 закрыть(1) = 0
10:50:46.673018 fcntl(11, F_SETFD, FD_CLOEXEC) = 0
10:50:46.673035 dup2(3, 1) = 1
10:50:46.673051 закрыть(3) = 0
10:50:46.673068 stat("/usr/local/sbin/deb-systemd-invoke", 0x7fffc09159a0) = -1 ENOENT (Нет такого файла или каталога)
10:50:46.673093 stat("/usr/local/bin/deb-systemd-invoke", 0x7fffc09159a0) = -1 ENOENT (Нет такого файла или каталога)
10:50:46.673113 stat("/usr/sbin/deb-systemd-invoke", 0x7fffc09159a0) = -1 ENOENT (Нет такого файла или каталога)
10:50:46.673132 stat("/usr/bin/deb-systemd-invoke", {st_mode=S_IFREG|0755, st_size=4430, ...}) = 0
10:50:46.673156 клон (child_stack=NULL, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7f5c7351d850) = 51072
10:50:46.673267 ждать4(-1,

Большинство других заканчиваются на «+++ завершено с 0 +++», и/или я не вижу ничего подозрительного.

Похоже, что deb-systemd-invoke start motd-news.timerddeb-systemd-invoke start motd-news.timer кажутся вечно ожидающими ввода пароля, но в пользовательском интерфейсе не отображается запрос. Согласно с эта заметка в блоге, перезагрузка должна решить эту проблему:

Довольно раздражает, когда systemd-tty-ask или /bin/systemd-tty-ask-password-agent «watch» зависает во время установки пакета, запуска или остановки службы.

Хотя перезагрузка системы решает проблему, к счастью, достаточно перезапустить только менеджер systemd:

sudo systemctl демон-reexec

Я подозреваю, что это ошибка systemd, поскольку daemon-reexec, как говорят, не делает ничего особенного, кроме перезапуска демона с перечитанной конфигурацией.

Однако ни выполнение sudo systemctl демон-reexec ни перезагрузка системы не решила проблему. Только задав этот вопрос, я нашел этот тесно связанный вопрос но удовлетворительного решения там не предлагается (хотелось бы верить, что нет необходимости переустанавливать систему).

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

Как я могу пройти через повешение dpkg --configure -a на базовые файлы? Есть ли какой-нибудь известный обходной путь, кроме переустановки системы?

Рейтинг:0
флаг vn

В конечном итоге это может быть связано с ошибкой в ​​​​systemd, поскольку сообщается на панели запуска здесь. Ошибка приводит к системный запуск... висит во время бега systemd-tty-спросить-пароль-агент. Некоторые сценарии после установки запускаются запуск системы (точнее его родной брат запуск deb-systemd-invoke), но я не знаю, почему это зависает на некоторых системах, но не на других.

можно получить dpkg --configure -a завершить (точнее, остаться незавершенным) путем редактирования /var/lib/dpkg/base-files.postinst и раскомментировать строку deb-systemd-invoke start 'motd-news.timer' >/dev/null || истинный. Сделав это, dpkg --configure -a проходит базовые файлы скрипт после установки. Однако это не является удовлетворительным решением. Во-первых, отсутствие запуска службы в сценарии после установки, вероятно, имеет побочные эффекты в системе. Во-вторых, на следующий удачное обновление, дпкг завис в другом постустановочном скрипте (в данном случае apt.postinst), поэтому, возможно, придется настроить обходной путь для нескольких пакетов, в каждом случае с побочными эффектами, которые необходимо определить.

Альтернатива, предложенная в комментарии к ошибке панели запуска, для запуска systemctl start --no-ask-password вместо этого в моем случае не было никакой разницы.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.