시스템을 업데이트하지 않고도 특정 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
이것은 groff 1.22.2 및 man-db 2.6.7.1이 포함된 Ubuntu 14.04(신뢰할 수 있는)를 기반으로 하는 Linux Mint 17(qiana)에 있습니다.
편집하다
요청된 명령 출력:
man -aw nc
/usr/share/man/man1/nc_openbsd.1.gz
ls -ld $(man -aw nc)
-rw-r--r-- 1 root root 5.7K Dec 4 2012 /usr/share/man/man1/nc_openbsd.1.gz
이거 이상해...
dpkg -S $(man -aw nc)
?netcat-openbsd: /usr/share/man/man1/nc_openbsd.1.gz
type -a man
man is /usr/bin/man
zgrep docdate $(man -aw nc)
.Dd $Mdocdate: February 7 2012 $
바닥글 추가
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
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
날짜가 하드코딩되지 않은 것 같습니다. 아마도 오늘 날짜를 생성하는 매크로일 것입니다.
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
env -i man nc
오늘 날짜 표시(2018년 3월 20일)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 ~ $
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 $
답변1
GNU roff는 과거에 다음을 지원하지 않았습니다:
.Dd $Mdocdate: February 7 2012 $
OpenBSD 확장(여기서는 $Mdocdate: ...$
CVS에 의해 확장된 CVS/RCS 키워드(OpenBSD에서 버전 제어 코드에 사용됨) 및 수동 개정 날짜)를 사용하면 지정된 날짜 대신 현재 날짜가 연장됩니다. 이 수업을 듣는 모든 사람을 위해 Ubuntu 14.04에서 이것을 얻을 수 있습니다 Mdocdate
.
바라보다https://savannah.gnu.org/bugs/?42968에서 구현https://lists.gnu.org/archive/html/groff-commit/2014-10/msg00092.html(groff 버전 1.22.3).
동일한 CVS 키워드를 사용하는 paxcpio
또는 와 같은 MirBSD(및 현재 MirOS) 매뉴얼 페이지의 경우 매뉴얼 페이지 자체가 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 $