[Bug 1932084] [NEW] MANPAGER="grep -F {" man systemd.exec leads to man: command exited with status 1: sed -e ...
Seth Arnold
1932084 at bugs.launchpad.net
Wed Jun 16 00:25:44 UTC 2021
Public bug reported:
Hello, I wanted to search the systemd.exec(5) manpage for an opening
brace character, {, in a manner that would be easy to copy-and-paste the
results if there were any. This unfortunately gives an error message:
$ MANPAGER="grep -F {" man systemd.exec
man: command exited with status 1: sed -e '/^[[:space:]]*$/{ N; /^[[:space:]]*\n[[:space:]]*$/D; }' | LESS=-ix8RmPm Manual page systemd\.exec(5) ?ltline %lt?L/%L.:byte %bB?s/%s..?e (END):?pB %pB\%.. (press h for help or q to quit)$PM Manual page systemd\.exec(5) ?ltline %lt?L/%L.:byte %bB?s/%s..?e (END):?pB %pB\%.. (press h for help or q to quit)$ MAN_PN=systemd\.exec(5) grep -F {
$ MANPAGER="grep -F {" man apparmor
profile foo flags=(audit) { ... }
$
It works fine on a simple example, apparmor(7). Other patterns work with
systemd.exec(5):
$ MANPAGER="grep -F aa" man systemd.exec
StateDirectory=aaa/bbb ccc
then the environment variable "RUNTIME_DIRECTORY" is set with "/run/foo/bar", and "STATE_DIRECTORY" is set with "/var/lib/aaa/bbb:/var/lib/ccc".
$
Thus I think when the pager doesn't provide any output we get an ugly
error message. I expected no output at all if the pattern doesn't match.
Thanks
And now the --debug output:
$ MANPAGER="grep -F {" man --debug -s 5 systemd.exec
ruid=1000, euid=1000
rgid=1000, egid=1000
++priv_drop_count = 1
>From the config file /etc/manpath.config:
Mandatory mandir `/usr/man'.
Mandatory mandir `/usr/share/man'.
Mandatory mandir `/usr/local/share/man'.
Path `/bin' mapped to mandir `/usr/share/man'.
Path `/usr/bin' mapped to mandir `/usr/share/man'.
Path `/sbin' mapped to mandir `/usr/share/man'.
Path `/usr/sbin' mapped to mandir `/usr/share/man'.
Path `/usr/local/bin' mapped to mandir `/usr/local/man'.
Path `/usr/local/bin' mapped to mandir `/usr/local/share/man'.
Path `/usr/local/sbin' mapped to mandir `/usr/local/man'.
Path `/usr/local/sbin' mapped to mandir `/usr/local/share/man'.
Path `/usr/X11R6/bin' mapped to mandir `/usr/X11R6/man'.
Path `/usr/bin/X11' mapped to mandir `/usr/X11R6/man'.
Path `/usr/games' mapped to mandir `/usr/share/man'.
Path `/opt/bin' mapped to mandir `/opt/man'.
Path `/opt/sbin' mapped to mandir `/opt/man'.
Global mandir `/usr/man', catdir `/var/cache/man/fsstnd'.
Global mandir `/usr/share/man', catdir `/var/cache/man'.
Global mandir `/usr/local/man', catdir `/var/cache/man/oldlocal'.
Global mandir `/usr/local/share/man', catdir `/var/cache/man/local'.
Global mandir `/usr/X11R6/man', catdir `/var/cache/man/X11R6'.
Global mandir `/opt/man', catdir `/var/cache/man/opt'.
Global mandir `/snap/man', catdir `/var/cache/man/snap'.
Added sections: `1', `n', `l', `8', `3', `2', `3posix', `3pm', `3perl', `3am', `5', `4', `9', `6', `7'.
is a tty
using grep -F { as pager
path directory /home/sarnold/bin is not in the config file
path directory /usr/local/sbin is in the config file
adding /usr/local/man to manpath
adding /usr/local/share/man to manpath
path directory /usr/local/bin is in the config file
path directory /usr/sbin is in the config file
adding /usr/share/man to manpath
path directory /usr/bin is in the config file
path directory /sbin is in the config file
path directory /bin is in the config file
path directory /usr/games is in the config file
path directory /usr/local/games is not in the config file
path directory /snap/bin is not in the config file
adding mandatory man directories
warning: /usr/man: No such file or directory
add_nls_manpaths(): processing /usr/local/man:/usr/local/share/man:/usr/share/man
checking for locale en_US.UTF-8
adding /usr/local/man to manpathlist
adding /usr/share/man to manpathlist
final search path = /usr/local/man:/usr/share/man
--priv_drop_count = 0
searching in /usr/local/man, section 5
trying section 5 with globbing
Layout is GNU (1)
update_directory_cache /usr/local/man: miss
globbing pattern in /usr/local/man: man5*
update_directory_cache /usr/local/man: hit
globbing pattern in /usr/local/man: cat5*
Failed to open /var/cache/man/oldlocal/index.db O_RDONLY
searching in /usr/share/man, section 5
trying section 5 with globbing
update_directory_cache /usr/share/man: miss
globbing pattern in /usr/share/man: man5*
matched: /usr/share/man/man5
update_directory_cache /usr/share/man/man5: miss
globbing pattern in /usr/share/man/man5: systemd.exec.5*
matched: /usr/share/man/man5/systemd.exec.5.gz
ult_src: File /usr/share/man/man5/systemd.exec.5.gz in mantree /usr/share/man
loading seccomp filter (permissive: 0)
candidate: 0 0 systemd.exec /usr/share/man /usr/share/man/man5/systemd.exec.5.gz A - 5 5
Checking physical location: /usr/share/man/man5/systemd.exec.5.gz
ult_src: File /usr/share/man/man5/systemd.exec.5.gz in mantree /usr/share/man
loading seccomp filter (permissive: 0)
found ultimate source file /usr/share/man/man5/systemd.exec.5.gz
converted /usr/share/man/man5/systemd.exec.5.gz to /usr/share/man/cat5/systemd.exec.5.gz
is_changed: a=/usr/share/man/man5/systemd.exec.5.gz, b=/usr/share/man/cat5/systemd.exec.5.gz (-2)
converted /var/cache/man/cat5/systemd.exec.5.gz to /var/cache/man/cat5/systemd.exec.5.gz
will try cat file /var/cache/man/cat5/systemd.exec.5.gz
loading seccomp filter (permissive: 0)
pre-processors `t' from file
page_encoding = ISO-8859-1
source_encoding = ISO-8859-1
locale_charset = UTF-8
roff_device (locale) = utf8
roff_encoding = ISO-8859-1
output_encoding = UTF-8
less_charset = utf-8
Terminal width 172
Terminal width 172 not within cat page range [80, 80]
Using 167-character lines
formatted_encoding = UTF-8
format: 1, save_cat: 0, found: 1
add_output_iconv: source UTF-8, target UTF-8
Setting LESS to -ix8RmPm Manual page systemd\.exec(5) ?ltline %lt?L/%L.:byte %bB?s/%s..?e (END):?pB %pB\%.. (press h for help or q to quit)$PM Manual page systemd\.exec(5) ?ltline %lt?L/%L.:byte %bB?s/%s..?e (END):?pB %pB\%.. (press h for help or q to quit)$
Setting MAN_PN to systemd\.exec(5)
++priv_drop_count = 1
man: command exited with status 1: sed -e '/^[[:space:]]*$/{ N; /^[[:space:]]*\n[[:space:]]*$/D; }' | LESS=-ix8RmPm Manual page systemd\.exec(5) ?ltline %lt?L/%L.:byte %bB?s/%s..?e (END):?pB %pB\%.. (press h for help or q to quit)$PM Manual page systemd\.exec(5) ?ltline %lt?L/%L.:byte %bB?s/%s..?e (END):?pB %pB\%.. (press h for help or q to quit)$ MAN_PN=systemd\.exec(5) grep -F {
$
ProblemType: Bug
DistroRelease: Ubuntu 20.04
Package: man-db 2.9.1-1
ProcVersionSignature: Ubuntu 5.4.0-74.83-generic 5.4.114
Uname: Linux 5.4.0-74-generic x86_64
NonfreeKernelModules: zfs zunicode zavl icp zcommon znvpair
ApportVersion: 2.20.11-0ubuntu27.18
Architecture: amd64
CasperMD5CheckResult: skip
Date: Wed Jun 16 00:15:22 2021
SourcePackage: man-db
UpgradeStatus: Upgraded to focal on 2020-01-24 (508 days ago)
** Affects: man-db (Ubuntu)
Importance: Undecided
Status: New
** Tags: amd64 apport-bug focal
--
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to man-db in Ubuntu.
https://bugs.launchpad.net/bugs/1932084
Title:
MANPAGER="grep -F {" man systemd.exec leads to man: command exited
with status 1: sed -e ...
Status in man-db package in Ubuntu:
New
Bug description:
Hello, I wanted to search the systemd.exec(5) manpage for an opening
brace character, {, in a manner that would be easy to copy-and-paste
the results if there were any. This unfortunately gives an error
message:
$ MANPAGER="grep -F {" man systemd.exec
man: command exited with status 1: sed -e '/^[[:space:]]*$/{ N; /^[[:space:]]*\n[[:space:]]*$/D; }' | LESS=-ix8RmPm Manual page systemd\.exec(5) ?ltline %lt?L/%L.:byte %bB?s/%s..?e (END):?pB %pB\%.. (press h for help or q to quit)$PM Manual page systemd\.exec(5) ?ltline %lt?L/%L.:byte %bB?s/%s..?e (END):?pB %pB\%.. (press h for help or q to quit)$ MAN_PN=systemd\.exec(5) grep -F {
$ MANPAGER="grep -F {" man apparmor
profile foo flags=(audit) { ... }
$
It works fine on a simple example, apparmor(7). Other patterns work
with systemd.exec(5):
$ MANPAGER="grep -F aa" man systemd.exec
StateDirectory=aaa/bbb ccc
then the environment variable "RUNTIME_DIRECTORY" is set with "/run/foo/bar", and "STATE_DIRECTORY" is set with "/var/lib/aaa/bbb:/var/lib/ccc".
$
Thus I think when the pager doesn't provide any output we get an ugly
error message. I expected no output at all if the pattern doesn't
match.
Thanks
And now the --debug output:
$ MANPAGER="grep -F {" man --debug -s 5 systemd.exec
ruid=1000, euid=1000
rgid=1000, egid=1000
++priv_drop_count = 1
From the config file /etc/manpath.config:
Mandatory mandir `/usr/man'.
Mandatory mandir `/usr/share/man'.
Mandatory mandir `/usr/local/share/man'.
Path `/bin' mapped to mandir `/usr/share/man'.
Path `/usr/bin' mapped to mandir `/usr/share/man'.
Path `/sbin' mapped to mandir `/usr/share/man'.
Path `/usr/sbin' mapped to mandir `/usr/share/man'.
Path `/usr/local/bin' mapped to mandir `/usr/local/man'.
Path `/usr/local/bin' mapped to mandir `/usr/local/share/man'.
Path `/usr/local/sbin' mapped to mandir `/usr/local/man'.
Path `/usr/local/sbin' mapped to mandir `/usr/local/share/man'.
Path `/usr/X11R6/bin' mapped to mandir `/usr/X11R6/man'.
Path `/usr/bin/X11' mapped to mandir `/usr/X11R6/man'.
Path `/usr/games' mapped to mandir `/usr/share/man'.
Path `/opt/bin' mapped to mandir `/opt/man'.
Path `/opt/sbin' mapped to mandir `/opt/man'.
Global mandir `/usr/man', catdir `/var/cache/man/fsstnd'.
Global mandir `/usr/share/man', catdir `/var/cache/man'.
Global mandir `/usr/local/man', catdir `/var/cache/man/oldlocal'.
Global mandir `/usr/local/share/man', catdir `/var/cache/man/local'.
Global mandir `/usr/X11R6/man', catdir `/var/cache/man/X11R6'.
Global mandir `/opt/man', catdir `/var/cache/man/opt'.
Global mandir `/snap/man', catdir `/var/cache/man/snap'.
Added sections: `1', `n', `l', `8', `3', `2', `3posix', `3pm', `3perl', `3am', `5', `4', `9', `6', `7'.
is a tty
using grep -F { as pager
path directory /home/sarnold/bin is not in the config file
path directory /usr/local/sbin is in the config file
adding /usr/local/man to manpath
adding /usr/local/share/man to manpath
path directory /usr/local/bin is in the config file
path directory /usr/sbin is in the config file
adding /usr/share/man to manpath
path directory /usr/bin is in the config file
path directory /sbin is in the config file
path directory /bin is in the config file
path directory /usr/games is in the config file
path directory /usr/local/games is not in the config file
path directory /snap/bin is not in the config file
adding mandatory man directories
warning: /usr/man: No such file or directory
add_nls_manpaths(): processing /usr/local/man:/usr/local/share/man:/usr/share/man
checking for locale en_US.UTF-8
adding /usr/local/man to manpathlist
adding /usr/share/man to manpathlist
final search path = /usr/local/man:/usr/share/man
--priv_drop_count = 0
searching in /usr/local/man, section 5
trying section 5 with globbing
Layout is GNU (1)
update_directory_cache /usr/local/man: miss
globbing pattern in /usr/local/man: man5*
update_directory_cache /usr/local/man: hit
globbing pattern in /usr/local/man: cat5*
Failed to open /var/cache/man/oldlocal/index.db O_RDONLY
searching in /usr/share/man, section 5
trying section 5 with globbing
update_directory_cache /usr/share/man: miss
globbing pattern in /usr/share/man: man5*
matched: /usr/share/man/man5
update_directory_cache /usr/share/man/man5: miss
globbing pattern in /usr/share/man/man5: systemd.exec.5*
matched: /usr/share/man/man5/systemd.exec.5.gz
ult_src: File /usr/share/man/man5/systemd.exec.5.gz in mantree /usr/share/man
loading seccomp filter (permissive: 0)
candidate: 0 0 systemd.exec /usr/share/man /usr/share/man/man5/systemd.exec.5.gz A - 5 5
Checking physical location: /usr/share/man/man5/systemd.exec.5.gz
ult_src: File /usr/share/man/man5/systemd.exec.5.gz in mantree /usr/share/man
loading seccomp filter (permissive: 0)
found ultimate source file /usr/share/man/man5/systemd.exec.5.gz
converted /usr/share/man/man5/systemd.exec.5.gz to /usr/share/man/cat5/systemd.exec.5.gz
is_changed: a=/usr/share/man/man5/systemd.exec.5.gz, b=/usr/share/man/cat5/systemd.exec.5.gz (-2)
converted /var/cache/man/cat5/systemd.exec.5.gz to /var/cache/man/cat5/systemd.exec.5.gz
will try cat file /var/cache/man/cat5/systemd.exec.5.gz
loading seccomp filter (permissive: 0)
pre-processors `t' from file
page_encoding = ISO-8859-1
source_encoding = ISO-8859-1
locale_charset = UTF-8
roff_device (locale) = utf8
roff_encoding = ISO-8859-1
output_encoding = UTF-8
less_charset = utf-8
Terminal width 172
Terminal width 172 not within cat page range [80, 80]
Using 167-character lines
formatted_encoding = UTF-8
format: 1, save_cat: 0, found: 1
add_output_iconv: source UTF-8, target UTF-8
Setting LESS to -ix8RmPm Manual page systemd\.exec(5) ?ltline %lt?L/%L.:byte %bB?s/%s..?e (END):?pB %pB\%.. (press h for help or q to quit)$PM Manual page systemd\.exec(5) ?ltline %lt?L/%L.:byte %bB?s/%s..?e (END):?pB %pB\%.. (press h for help or q to quit)$
Setting MAN_PN to systemd\.exec(5)
++priv_drop_count = 1
man: command exited with status 1: sed -e '/^[[:space:]]*$/{ N; /^[[:space:]]*\n[[:space:]]*$/D; }' | LESS=-ix8RmPm Manual page systemd\.exec(5) ?ltline %lt?L/%L.:byte %bB?s/%s..?e (END):?pB %pB\%.. (press h for help or q to quit)$PM Manual page systemd\.exec(5) ?ltline %lt?L/%L.:byte %bB?s/%s..?e (END):?pB %pB\%.. (press h for help or q to quit)$ MAN_PN=systemd\.exec(5) grep -F {
$
ProblemType: Bug
DistroRelease: Ubuntu 20.04
Package: man-db 2.9.1-1
ProcVersionSignature: Ubuntu 5.4.0-74.83-generic 5.4.114
Uname: Linux 5.4.0-74-generic x86_64
NonfreeKernelModules: zfs zunicode zavl icp zcommon znvpair
ApportVersion: 2.20.11-0ubuntu27.18
Architecture: amd64
CasperMD5CheckResult: skip
Date: Wed Jun 16 00:15:22 2021
SourcePackage: man-db
UpgradeStatus: Upgraded to focal on 2020-01-24 (508 days ago)
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/man-db/+bug/1932084/+subscriptions
More information about the foundations-bugs
mailing list