The man command doesn't work

The man command doesn’t work in terminal. I would like to read what a particular command does, but I can’t. Whenever I use the man command in the terminal, I get man: can’t open the manpath configuration file /etc/manpath.config

Have you tried opening the “manpath.config” file with:

sudo pluma /etc/manpath.config

If you have, does it exist? If it does not, then you could instead type:

sudo pluma

And then, if you wanted to, you could copy and paste the text, below. It is the content of my manpath.config and I can confirm that “man” works on my machine. Then save the file to “etc/manpath.config”. I should provide a caveat here, however. I don’t actually know for certain whether the “manpath.config” file is configured to a particular machine or particular user. In which case, my content may not work for you. Or, whether it is a default content, in which case, yours would be the same as mine

On the other hand (bearing in mind the caveat, above), if your file does exist. Then open Caja in superuser mode and rename your existing “manpath,config” as “manpath.backup” and then make a new one with my content, as described above. If the new one works, then all is good. If it does not, then delete it and rename your old one back to its original name, and you will be no worse off then before.

# manpath.config
#
# This file is used by the man-db package to configure the man and cat paths.
# It is also used to provide a manpath for those without one by examining
# their PATH environment variable. For details see the manpath(5) man page.
#
# Lines beginning with `#' are comments and are ignored. Any combination of
# tabs or spaces may be used as `whitespace' separators.
#
# There are three mappings allowed in this file:
# --------------------------------------------------------
# MANDATORY_MANPATH            manpath_element
# MANPATH_MAP        path_element    manpath_element
# MANDB_MAP        global_manpath    [relative_catpath]
#---------------------------------------------------------
# every automatically generated MANPATH includes these fields
#
#MANDATORY_MANPATH             /usr/src/pvm3/man
#
MANDATORY_MANPATH            /usr/man
MANDATORY_MANPATH            /usr/share/man
MANDATORY_MANPATH            /usr/local/share/man
#---------------------------------------------------------
# set up PATH to MANPATH mapping
# ie. what man tree holds man pages for what binary directory.
#
#        *PATH*        ->    *MANPATH*
#
MANPATH_MAP    /bin            /usr/share/man
MANPATH_MAP    /usr/bin        /usr/share/man
MANPATH_MAP    /sbin            /usr/share/man
MANPATH_MAP    /usr/sbin        /usr/share/man
MANPATH_MAP    /usr/local/bin        /usr/local/man
MANPATH_MAP    /usr/local/bin        /usr/local/share/man
MANPATH_MAP    /usr/local/sbin        /usr/local/man
MANPATH_MAP    /usr/local/sbin        /usr/local/share/man
MANPATH_MAP    /usr/X11R6/bin        /usr/X11R6/man
MANPATH_MAP    /usr/bin/X11        /usr/X11R6/man
MANPATH_MAP    /usr/games        /usr/share/man
MANPATH_MAP    /opt/bin        /opt/man
MANPATH_MAP    /opt/sbin        /opt/man
#---------------------------------------------------------
# For a manpath element to be treated as a system manpath (as most of those
# above should normally be), it must be mentioned below. Each line may have
# an optional extra string indicating the catpath associated with the
# manpath. If no catpath string is used, the catpath will default to the
# given manpath.
#
# You *must* provide all system manpaths, including manpaths for alternate
# operating systems, locale specific manpaths, and combinations of both, if
# they exist, otherwise the permissions of the user running man/mandb will
# be used to manipulate the manual pages. Also, mandb will not initialise
# the database cache for any manpaths not mentioned below unless explicitly
# requested to do so.
#
# In a per-user configuration file, this directive only controls the
# location of catpaths and the creation of database caches; it has no effect
# on privileges.
#
# Any manpaths that are subdirectories of other manpaths must be mentioned
# *before* the containing manpath. E.g. /usr/man/preformat must be listed
# before /usr/man.
#
#        *MANPATH*     ->    *CATPATH*
#
MANDB_MAP    /usr/man        /var/cache/man/fsstnd
MANDB_MAP    /usr/share/man        /var/cache/man
MANDB_MAP    /usr/local/man        /var/cache/man/oldlocal
MANDB_MAP    /usr/local/share/man    /var/cache/man/local
MANDB_MAP    /usr/X11R6/man        /var/cache/man/X11R6
MANDB_MAP    /opt/man        /var/cache/man/opt
#
#---------------------------------------------------------
# Program definitions.  These are commented out by default as the value
# of the definition is already the default.  To change: uncomment a
# definition and modify it.
#
#DEFINE     pager    pager
#DEFINE     cat    cat
#DEFINE     tr    tr '\255\267\264\327' '\055\157\047\170'
#DEFINE        grep    grep
#DEFINE     troff     groff -mandoc
#DEFINE     nroff     nroff -mandoc
#DEFINE     eqn     eqn
#DEFINE     neqn    neqn
#DEFINE     tbl     tbl
#DEFINE     col     col
#DEFINE     vgrind     vgrind
#DEFINE     refer     refer
#DEFINE     grap     grap
#DEFINE     pic     pic -S
#
#DEFINE        compressor    gzip -c7
#---------------------------------------------------------
# Misc definitions: same as program definitions above.
#
#DEFINE        whatis_grep_flags        -i
#DEFINE        apropos_grep_flags        -iEw
#DEFINE        apropos_regex_grep_flags    -iE
#---------------------------------------------------------
# Section names. Manual sections will be searched in the order listed here;
# the default is 1, n, l, 8, 3, 0, 2, 5, 4, 9, 6, 7. Multiple SECTION
# directives may be given for clarity, and will be concatenated together in
# the expected way.
# If a particular extension is not in this list (say, 1mh), it will be
# displayed with the rest of the section it belongs to. The effect of this
# is that you only need to explicitly list extensions if you want to force a
# particular order. Sections with extensions should usually be adjacent to
# their main section (e.g. "1 1mh 8 ...").
#
SECTION        1 n l 8 3 2 3posix 3pm 3perl 5 4 9 6 7
#
#---------------------------------------------------------
# Range of terminal widths permitted when displaying cat pages. If the
# terminal falls outside this range, cat pages will not be created (if
# missing) or displayed.
#
#MINCATWIDTH    80
#MAXCATWIDTH    80
#
# If CATWIDTH is set to a non-zero number, cat pages will always be
# formatted for a terminal of the given width, regardless of the width of
# the terminal actually being used. This should generally be within the
# range set by MINCATWIDTH and MAXCATWIDTH.
#
#CATWIDTH    0
#
#---------------------------------------------------------
# Flags.
# NOCACHE keeps man from creating cat pages.
#NOCACHE

Hi @vr_anticipator,

see also:

https://help.ubuntu.com/community/man

The manpath file exists; I tried your suggestions, same results.

I read it. I have no idea why it won’t work.

Are you running apparmor? (Edit: It’s enabled by default)

systemctl status apparmor.service

What’s the contents of:

/etc/apparmor.d/abstractions/user-manpages

If it exists but the error message says you can’t read it then it means the file ownership / mode is screwed up.

ouroumov@Bloc:~/Desktop$ ll /etc/manpath.config 
-rw-r--r-- 1 root root 5170 nov.   7  2015 /etc/manpath.config

And if config exists and is readable by the user, then it could be related to AppArmor. Tell AppArmor to put compaints in logs but allow the command with:

sudo aa-complain /etc/apparmor.d/usr.bin.man

and see if that helps.

1 Like

I reinstalled Ubuntu Mate and manuals work properly now. I don’t know what caused the problem before, but everything seems fine now.

Thanks for your help.

1 Like

holla it worked for me :grinning:
Thank you samuvuo