Tại sao trang người đàn ông này có ngày hôm nay?


9

Tại sao một mantrang cụ thể (trong trường hợp của tôi, cho nclệnh) có ngày hôm nay mà không cần tôi thực hiện bất kỳ cập nhật nào cho hệ thống? Ngoài ra, tại sao nhật ký "cập nhật không giám sát" không hiển thị bất kỳ hoạt động cụ thể nào cho ngày hôm đó?

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

Đây là chân trang cho nctrang người đàn ông:

BSD                             March 14, 2018                             BSD

Đó là trên Linux Mint 17 (qiana), dựa trên Ubuntu 14.04 (đáng tin cậy) với groff 1.22.2 và man-db 2.6.7.1.

BIÊN TẬP

Các lệnh được yêu cầu xuất ra:

  1. man -aw nc

    /usr/share/man/man1/nc_openbsd.1.gz
    
  2. ls -ld $(man -aw nc)

    -rw-r--r-- 1 root root 5.7K Dec  4  2012 /usr/share/man/man1/nc_openbsd.1.gz
    

Thật là kỳ lạ ...

  1. dpkg -S $(man -aw nc)?

    netcat-openbsd: /usr/share/man/man1/nc_openbsd.1.gz
    
  2. type -a man

    man is /usr/bin/man
    
  3. zgrep docdate $(man -aw nc)

    .Dd $Mdocdate: February 7 2012 $
    
  4. GIÀY BỔ SUNG 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
    
  5. 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
    

    Có vẻ như ngày không được mã hóa. Có thể là một macro tạo ngày hôm nay.

  6. 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
    
  7. env -i man nc hiển thị ngày hôm nay (20 tháng 3 năm 2018)

  8. 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 ~ $
    
  9. 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 $
    

Đó là ngày hôm qua. Tôi đã cập nhật mô tả bài để bao gồm đầu ra lệnh được yêu cầu.
ychaouche

Mã nguồn của trang này có thể nhìn thấy ở đây (trong phiên bản dường như được cài đặt trên hệ thống của OP).
Stephen Kitt

Là "người đàn ông" bí danh hay bị ghi đè? type -a manđầu ra sẽ giúp.
Jeff Schaller

2
@Kiwy, tốt, đó là một vấn đề hấp dẫn. Và có thể được gây ra bởi một vấn đề lớn hơn.
Stéphane Chazelas

1
-0--delimiter='\n'làm cho rất ít ý nghĩa với nhau (một bộ đặt dấu phân cách thành NUL, cái còn lại thành LF)
Stéphane Chazelas

Câu trả lời:


10

GNU roff được sử dụng không hỗ trợ những người:

 .Dd $Mdocdate: February 7 2012 $

Tiện ích mở rộng OpenBSD (ở đây $Mdocdate: ...$là từ khóa CVS / RCS được CVS ​​mở rộng (mà OpenBSD sử dụng để kiểm soát phiên bản mã của họ) với ngày sửa đổi thủ công), dẫn đến ngày hiện tại được mở rộng thay vì ngày được chỉ định. Tôi có thể sao chép nó trên Ubuntu 14.04 cho tất cả các trang man có như vậy Mdocdate.

Xem https://savannah.gnu.org/bugs/?42968 được triển khai trong https://lists.gnu.org/archive/html/groff-commit/2014-10/msg00092.html (phiên bản groff 1.22.3).


Đối với các trang man từ MirBSD (nay là MirOS) như của bạn paxcpiohoặc mkshsử dụng cùng một $Mdocdate: ...$từ khóa CVS, bạn sẽ tìm thấy các trang man định nghĩa lại (bao bọc) .Ddmacro mdoc, vì vậy các macro hệ thống roff không phải hỗ trợ nó:

.\"
.\" 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 $

1
Đó là một gỡ lỗi tuyệt vời. Cảm ơn rất nhiều.
ychaouche

1
@ychaouche, bây giờ nhìn về phía sau, đó là một trong số ít những điều cần xem xét, nhưng vì một số lý do tôi nghĩ rằng Mint Qiana của bạn dựa trên Ubuntu 16.04 thay vì 14.04 và không thể sao chép vào ngày 16.04
Stéphane Chazelas

Sử dụng zgrep như trong bình luận của bạn, tôi đã tạo một danh sách tất cả các trang man có "lỗi" này: gist.github.com/ychaouche/fabe43225d1692dc325826d2be521bc4 . Tôi tự xác minh một số trong số họ, lỗi là ở đó. Nhưng có vẻ như nó đã được sửa trong Debian 8 (sử dụng 8.10 trên một trong các máy chủ, không có lỗi.)
ychaouche 20/03/18

man sshhiển thị ngày hiện tại trên hệ thống Debian 8.10 tại đây với phiên bản 1.22.2-8. Có thể bạn nhận được groffgói từ một bản phát hành mới hơn (kéo dài có 1.22.3). Xem apt-cache policy groff.
Stéphane Chazelas

1
@ychaouche, đây không thực sự là một lỗi, đó là OpenBSD đã thêm một định dạng mới cho .Ddmacro mdoc (nếu không chấp nhận Month day, year), vì vậy họ có thể sử dụng từ khóa CVS trong đó (ở đây $Mdocdate: ... $được CVS ​​mở rộng đến ngày sửa đổi tài liệu). Họ đã cập nhật các mdocmacro của riêng họ cho điều đó và những sửa đổi đó sau đó đã được hợp nhất thành mạng lưới để các trang người dùng OpenBSD có thể được định dạng chính xác trên các hệ thống khác.
Stéphane Chazelas
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.