Score:1

dpgk --configure -a หยุดการตั้งค่าไฟล์ฐาน เห็นได้ชัดว่าใน systemd-tty-ask-password-agent

ธง vn

dpkg --configure -a กำลังแขวนเมื่อตั้งค่า ไฟล์ฐาน. จากการวินิจฉัยจนถึงปัจจุบันปรากฏว่า dpkg --configure -a วิ่ง /var/lib/dpkg/info/base-files.postinstซึ่งวิ่ง deb-systemd-เรียกใช้ motd-news.timer เริ่มต้นซึ่งดำเนินการ systemd-tty-ถามรหัสผ่านตัวแทน --watchซึ่งรอตลอดไป (โดยไม่ต้องขอรหัสผ่านบนเทอร์มินัล) การวินิจฉัยโดยละเอียด:

$ sudo strace -o /tmp/dpkg-strace -tt -ff dpkg --debug=222 --configure -a
การตั้งค่าไฟล์พื้นฐาน (11ubuntu5.4) ...
D000002: fork/exec /var/lib/dpkg/info/base-files.postinst ( กำหนดค่า 11ubuntu5.3 )

วิ่งนี้ ภายหลัง สคริปต์ด้วยตนเองด้วย ทุบตี -xv แฮงค์ขณะดำเนินการ deb-systemd-เรียกใช้ motd-news.timer เริ่มต้นสิ่งที่ยังเปิดเผยโดย เพสทรี (สำหรับกรณีที่ทำงานโดยไม่มี strace):

bashâââsudoâââdpkgâââbase-files.postâââsystemctlâââsystemd -tty-ถาม

เอาต์พุต Strase ประมาณ 10k เส้น หนึ่งในไฟล์เอาต์พุต strace ซึ่งดูเหมือนจะสอดคล้องกับคำสั่ง deb-systemd-เรียกใช้ motd-news.timer เริ่มต้น, ลงท้ายด้วย ก โพลเห็นได้ชัดว่ากำลังรอซ็อกเก็ต คัดเลือกจาก deb-systemd-เรียกใช้ motd-news.timer เริ่มต้น (PID 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 vars */) = 0
10:50:46.673511 brk(NULL) = 0x55fff0539000
10:50:46.673534 arch_prctl(0x3001 /* ARCH_??? */, 0x7ffd593b7540) = -1 EINVAL (อาร์กิวเมนต์ไม่ถูกต้อง)
10:50:46.673574 การเข้าถึง ("/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\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, events=POLLIN}], 1, NULL, NULL, 8

อื่น, systemd-tty-ถามรหัสผ่านตัวแทน --watch, ลงท้ายด้วย แบบสำรวจความคิดเห็นเห็นได้ชัดว่ากำลังรอซ็อกเก็ตหรือเหตุการณ์ innotify เพื่อให้รหัสผ่านปรากฏขึ้น การเลือกสำหรับ 51076:

10:50:46.709061 set_robust_list(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 brk(NULL) = 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 สัญญาณfd4(-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, events=POLLIN}, {fd=5, events=POLLIN}], 2, -1

กระบวนการหลักและสคริปต์ base-files.postinst กำลังรออยู่ รอ4 เพื่อให้กระบวนการอื่นๆ เสร็จสิ้น:

10:50:46.017699 execve("/usr/bin/dpkg", ["dpkg", "--configure", "-a"], 0x7fffb1462800 /* 27 vars */) = 0
10:50:46.018044 brk(NULL) = 0x5636a8783000
10:50:46.018135 arch_prctl(0x3001 /* ARCH_??? */, 0x7fffa60dac50) = -1 EINVAL (อาร์กิวเมนต์ไม่ถูกต้อง)
การเข้าถึง 10:50:46.018208("/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 เขียน(5, "#padding\n#padding\n#padding\n#padd"..., 4096) = 4096
10:50:46.164354 เขียน(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_robust_list(0x7fa02b7406e0, 24) = 0
10:50:46.166455 chdir("/") = 0
10:50:46.166748 execve("/var/lib/dpkg/info/base-files.postinst", ["/var/lib/dpkg/info/base-files.po"..., "กำหนดค่า", " 11ubuntu5.3"], 0x5636a87c4840 /* 36 vars */) = 0
10:50:46.168230 brk(NULL) = 0x56297cffd000
10:50:46.168542 arch_prctl(0x3001 /* ARCH_??? */, 0x7fffc0915d90) = -1 EINVAL (อาร์กิวเมนต์ไม่ถูกต้อง)
การเข้าถึง 10:50:46.168877("/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 ซ้ำ2(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.timerdeb-systemd-invoke start motd-news.timer ดูเหมือนจะรอตลอดไปสำหรับรหัสผ่าน แต่ไม่มีการแสดงคำขอในส่วนต่อประสานผู้ใช้ ตาม บันทึกบล็อกนี้การรีบูตควรแก้ปัญหานี้:

ค่อนข้างน่ารำคาญเมื่อ systemd-tty-ask หรือ /bin/systemd-tty-ask-password-agent âwatch ค้างระหว่างการติดตั้งแพ็คเกจ บริการเริ่มหรือหยุดการทำงาน

แม้ว่าการรีบูตระบบจะช่วยแก้ปัญหาได้ แต่โชคดีที่รีสตาร์ท systemd manager เท่านั้น:

sudo systemctl daemon-reeexec

ฉันสงสัยว่านี่เป็นข้อบกพร่องของ systemd เนื่องจาก daemon-reexec กล่าวว่าไม่ได้ทำอะไรเป็นพิเศษนอกเหนือจากการรีสตาร์ท daemon ด้วยการกำหนดค่าซ้ำ

อย่างไรก็ตามไม่ได้ดำเนินการ sudo systemctl daemon-reeexec หรือการรีบูตระบบช่วยแก้ปัญหาได้ หลังจากถามคำถามนี้ฉันพบ คำถามที่เกี่ยวข้องอย่างใกล้ชิดนี้ แต่ไม่มีวิธีแก้ปัญหาที่น่าพอใจ (ฉันอยากจะเชื่อว่าไม่จำเป็นต้องติดตั้งระบบใหม่)

มันดูเหมือน ข้อบกพร่องบน Launchpad นี้เกี่ยวข้องกัน ซึ่งอาจทำให้เกิดปัญหาโดยตรง.

ฉันจะผ่านพ้นการแขวนคอได้อย่างไร dpkg --configure -a บน ไฟล์ฐาน? มีวิธีแก้ไขปัญหาที่ทราบโดยย่อจากการติดตั้งระบบใหม่หรือไม่?

Score:0
ธง vn

ในที่สุดสิ่งนี้ดูเหมือนจะเกิดจากข้อผิดพลาดใน systemd as รายงานบน Launchpad ที่นี่. ข้อผิดพลาดส่งผลให้ เริ่ม systemctl ... แขวนคอขณะวิ่ง systemd-tty-ถามรหัสผ่านตัวแทน. สคริปต์หลังการติดตั้งบางตัวทำงาน เริ่มต้น systemctl (หรือมากกว่าพี่น้องของมัน deb-systemd-เรียกใช้การเริ่มต้น) แต่ฉันไม่รู้ว่าทำไมสิ่งนี้ถึงค้างกับบางระบบ แต่ไม่ใช่ระบบอื่น

เป็นไปได้ที่จะได้รับ dpkg --configure -a เพื่อให้สมบูรณ์ (หรือยังคงไม่สมบูรณ์) โดยการแก้ไข /var/lib/dpkg/base-files.postinst และไม่แสดงความคิดเห็นในบรรทัด deb-systemd-เรียกใช้ start 'motd-news.timer' >/dev/null || จริง. เมื่อทำเช่นนี้แล้ว dpkg --configure -a ได้รับผ่าน ไฟล์ฐาน สคริปต์หลังการติดตั้ง อย่างไรก็ตาม นี่ไม่ใช่วิธีแก้ปัญหาที่น่าพอใจ ประการแรก การไม่เริ่มบริการในสคริปต์หลังการติดตั้งอาจมีผลข้างเคียงกับระบบ ประการที่สองในครั้งต่อไป เหมาะอัพเกรด, dpkg ค้างอยู่ในสคริปต์หลังการติดตั้งอื่น (ในกรณีนี้ apt.postinst) ดังนั้นอาจต้องกำหนดค่าด้วยวิธีแก้ปัญหาสำหรับแพ็คเกจค่อนข้างน้อย ในแต่ละกรณีจะมีการพิจารณาผลข้างเคียง

ทางเลือกอื่นที่เสนอในความคิดเห็นเกี่ยวกับข้อบกพร่องของ Launchpad เพื่อเรียกใช้ systemctl start --no-ถามรหัสผ่าน ไม่ได้สร้างความแตกต่างในกรณีของฉัน

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา