Unattended-Upgrades

為什麼這個手冊頁有今天的日期?

  • March 21, 2018

為什麼沒有我對系統進行任何更新,特定man頁面(在我的情況下,對於nc命令)會有今天的日期?另外,為什麼“無人值守更新”日誌沒有顯示當天的任何特定活動?

2018-03-14 07:47:38,124 INFO Initial blacklisted packages:
2018-03-14 07:47:38,135 INFO Starting unattended upgrades script
2018-03-14 07:47:38,135 INFO Allowed origins are: ['o=LinuxMint,a=qiana-security', 'o=LinuxMintESM,a=qiana']
2018-03-14 07:47:51,767 INFO No packages found that can be upgraded unattended and no pending auto-removals

這是nc手冊頁的頁腳:

BSD                             March 14, 2018                             BSD

那是在 Linux Mint 17 (qiana) 上,基於 Ubuntu 14.04 (trusty),帶有 groff 1.22.2 和 man-db 2.6.7.1。

編輯

請求的命令輸出:

  1. man -aw nc
/usr/share/man/man1/nc_openbsd.1.gz
  1. ls -ld $(man -aw nc)
-rw-r--r-- 1 root root 5.7K Dec  4  2012 /usr/share/man/man1/nc_openbsd.1.gz

這很奇怪……

  1. dpkg -S $(man -aw nc)?
netcat-openbsd: /usr/share/man/man1/nc_openbsd.1.gz
  1. type -a man
man is /usr/bin/man
  1. zgrep docdate $(man -aw nc)
.Dd $Mdocdate: February 7 2012 $
  1. 添加頁腳 strace -f man nc 2>&1 | grep -e '^BSD' -e '"/.*nc'
ychaouche#ychaouche-PC 14:31:15 ~ $ strace -f man nc 2>&1 | grep -e '^BSD' -e '"/.*nc'
execve("/usr/bin/man", ["man", "nc"], [/* 87 vars */]) = 0
lstat("/usr/share/man/man1/nc.1.gz", {st_mode=S_IFLNK|0777, st_size=25, ...}) = 0
lstat("/usr/share/man/man1/nc.1.gz", {st_mode=S_IFLNK|0777, st_size=25, ...}) = 0
readlink("/usr/share/man/man1/nc.1.gz", "/etc/alternatives/nc.1.gz", 4095) = 25
lstat("/etc/alternatives/nc.1.gz", {st_mode=S_IFLNK|0777, st_size=35, ...}) = 0
readlink("/etc/alternatives/nc.1.gz", "/usr/share/man/man1/nc_openbsd.1"..., 4095) = 35
lstat("/usr/share/man/man1/nc_openbsd.1.gz", {st_mode=S_IFREG|0644, st_size=5756, ...}) = 0
stat("/usr/share/man/man1/nc_openbsd.1.gz", {st_mode=S_IFREG|0644, st_size=5756, ...}) = 0
stat("/usr/share/man/man1/nc_openbsd.1.gz", {st_mode=S_IFREG|0644, st_size=5756, ...}) = 0
open("/usr/share/man/man1/nc_openbsd.1.gz", O_RDONLY) = 3
access("/usr/share/man/man1/nc.1.gz", R_OK) = 0
lstat("/usr/share/man/man1/nc.1.gz", {st_mode=S_IFLNK|0777, st_size=25, ...}) = 0
lstat("/usr/share/man/man1/nc.1.gz", {st_mode=S_IFLNK|0777, st_size=25, ...}) = 0
readlink("/usr/share/man/man1/nc.1.gz", "/etc/alternatives/nc.1.gz", 4095) = 25
lstat("/etc/alternatives/nc.1.gz", {st_mode=S_IFLNK|0777, st_size=35, ...}) = 0
readlink("/etc/alternatives/nc.1.gz", "/usr/share/man/man1/nc_openbsd.1"..., 4095) = 35
lstat("/usr/share/man/man1/nc_openbsd.1.gz", {st_mode=S_IFREG|0644, st_size=5756, ...}) = 0
stat("/usr/share/man/man1/nc_openbsd.1.gz", {st_mode=S_IFREG|0644, st_size=5756, ...}) = 0
stat("/usr/share/man/man1/nc_openbsd.1.gz", {st_mode=S_IFREG|0644, st_size=5756, ...}) = 0
open("/usr/share/man/man1/nc_openbsd.1.gz", O_RDONLY) = 3
stat("/usr/share/man/man1/nc.1.gz", {st_mode=S_IFREG|0644, st_size=5756, ...}) = 0
stat("/usr/share/man/cat1/nc.1.gz", 0x7fffa49c0940) = -1 ENOENT (No such file or directory)
stat("/usr/share/man/man1/nc_openbsd.1.gz", {st_mode=S_IFREG|0644, st_size=5756, ...}) = 0
open("/usr/share/man/man1/nc_openbsd.1.gz", O_RDONLY) = 3
[pid  3878] stat("/usr/share/man/man1/nc_openbsd.1.gz", {st_mode=S_IFREG|0644, st_size=5756, ...}) = 0
[pid  3878] access("/usr/share/man/man1/nc_openbsd.1.gz", R_OK <unfinished ...>
BSD                             March 20, 2018                             BSD
  1. strace -f man nc 2>&1 | grep -vwe -1 | grep -o '"/[^"]*"' | sort -u | grep -v /dev/ | xargs sh -c 'zgrep "March 14" "$@"' sh 2> /dev/null
no output

似乎日期沒有硬編碼。可能是生成今天日期的宏。 8. env | grep -e ROFF -e MAN -e GRO

SESSION_MANAGER=local/ychaouche-PC:@/tmp/.ICE-unix/2915,unix/ychaouche-PC:/tmp/.ICE-unix/2915
MANDATORY_PATH=/usr/share/gconf/default.mandatory.path
  1. env -i man nc顯示今天的日期(2018 年 3 月 20 日)
  2. zcat /usr/share/man/man1/nc_openbsd.1.gz | nroff -mandoc | grep BSD
ychaouche#ychaouche-PC 06:59:53 ~ $ zcat /usr/share/man/man1/nc_openbsd.1.gz | nroff -mandoc | grep BSD
NC(1)                     BSD General Commands Manual                    NC(1)
BSD                             March 20, 2018                             BSD
ychaouche#ychaouche-PC 07:01:41 ~ $
  1. strace -f man nc 2>&1 | grep -vwe -1 | grep -o '"/[^"]*tmac/[^"]*"' | sort -u | xargs ls -lrtd
ychaouche#ychaouche-PC 17:26:08 /usr/share/man/man1 $ unalias ls
ychaouche#ychaouche-PC 17:26:12 /usr/share/man/man1 $ unalias xargs
ychaouche#ychaouche-PC 17:26:14 /usr/share/man/man1 $ unalias grep
ychaouche#ychaouche-PC 17:26:16 /usr/share/man/man1 $ strace -f man nc 2>&1 | grep -vwe -1 | grep -o '"/[^"]*tmac/[^"]*"' | sort -u | xargs ls -lrtd
-rw-r--r-- 1 root root  4065 Jan 22  2014 /usr/share/groff/1.22.2/tmac/papersize.tmac
-rw-r--r-- 1 root root  1860 Jan 22  2014 /usr/share/groff/1.22.2/tmac/andoc.tmac
-rw-r--r-- 1 root root    71 Jan 22  2014 /usr/share/groff/1.22.2/tmac/unicode.tmac
-rw-r--r-- 1 root root  1552 Jan 22  2014 /usr/share/groff/1.22.2/tmac/tty.tmac
-rw-r--r-- 1 root root  5183 Jan 22  2014 /usr/share/groff/1.22.2/tmac/tty-char.tmac
-rw-r--r-- 1 root root  1145 Jan 22  2014 /usr/share/groff/1.22.2/tmac/troffrc-end
-rw-r--r-- 1 root root  1387 Jan 22  2014 /usr/share/groff/1.22.2/tmac/troffrc
-rw-r--r-- 1 root root  4729 Jan 22  2014 /usr/share/groff/1.22.2/tmac/pspic.tmac
-rw-r--r-- 1 root root 22042 Jan 22  2014 /usr/share/groff/1.22.2/tmac/mdoc/doc-syms
-rw-r--r-- 1 root root  4048 Jan 22  2014 /usr/share/groff/1.22.2/tmac/mdoc/doc-nroff
-rw-r--r-- 1 root root 29284 Jan 22  2014 /usr/share/groff/1.22.2/tmac/mdoc/doc-common
-rw-r--r-- 1 root root  2250 Jan 22  2014 /usr/share/groff/1.22.2/tmac/latin1.tmac
-rw-r--r-- 1 root root 27860 Jan 22  2014 /usr/share/groff/1.22.2/tmac/hyphen.us
-rw-r--r-- 1 root root 15678 Jan 22  2014 /usr/share/groff/1.22.2/tmac/hyphenex.us
-rw-r--r-- 1 root root  1362 Jan 22  2014 /usr/share/groff/1.22.2/tmac/fallbacks.tmac
-rw-r--r-- 1 root root 73807 Jan 22  2014 /usr/share/groff/1.22.2/tmac/doc.tmac
-rw-r--r-- 1 root root   537 Jan 22  2014 /usr/share/groff/1.22.2/tmac/composite.tmac
-rw-r--r-- 1 root root   704 Jan 22  2014 /usr/share/groff/site-tmac/mdoc.local
ychaouche#ychaouche-PC 17:26:18 /usr/share/man/man1 $

GNU roff 過去不支持這些:

.Dd $Mdocdate: February 7 2012 $

OpenBSD 擴展(這裡$Mdocdate: ...$是 CVS 擴展的 CVS/RCS 關鍵字(OpenBSD 用於對其程式碼進行版本控制)與手動修訂的日期),導致目前日期被擴展而不是指定的日期。我可以在 Ubuntu 14.04 上為所有具有此類Mdocdate.

請參閱https://savannah.gnu.org/bugs/?42968https://lists.gnu.org/archive/html/groff-commit/2014-10/msg00092.html(groff版本 1.22.3)中實現。


對於來自 MirBSD(現在的 MirOS)的手冊頁,例如使用相同的CVS 關鍵字的paxcpioor ,您會發現手冊頁自己重新定義(包裝) mdoc 宏,因此 roff 系統宏不必支持它:mksh``$Mdocdate: ...$``.Dd

.\"
.\" Implement .Dd with the Mdocdate RCS keyword
.\"
.rn Dd xD
.de Dd
.ie ^G\\$1^G$Mdocdate:^G \{\
.       xD \\$2 \\$3, \\$4
.\}
.el .xD \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8
..
.\"
.\" .Dd must come before definition of .Mx, because when called
.\" with -mandoc, it might implement .Mx itself, but we want to
.\" use our own definition. And .Dd must come *first*, always.
.\"
.Dd $Mdocdate: August 16 2017 $

引用自:https://unix.stackexchange.com/questions/430344