Wireshark mailing list archives

Setting PATH and MANPATH on macOS, and moving the command-line executables in the app bundle


From: Guy Harris <guy () alum mit edu>
Date: Sat, 15 Oct 2016 13:55:06 -0700

The master and 2.2 branches have changes to

        1) put the man pages into the macOS app bundle under /Applications/Wireshark.app/Contents//Resources/share/man

and

        2) add a file named Wireshark, containing

/Applications/Wireshark.app/Contents/Resources/share/man

           to /etc/manpaths.d.

/etc/profile, /etc/csh.login, and /etc/zprofile in macOS will run

        eval `/usr/libexec/path_helper -s`

for Bourne-compatible shells and

        eval `/usr/libexec/path_helper -c`

for the C shell.  This will construct a PATH setting from the contents of /etc/paths, and then scan /etc/paths.d for 
files and append to that PATH setting entries with the contents of each of those files.  That way, an installer that 
puts commands in its own directory, whether it's in an app bundle or under, for example, /opt/X11, can arrange to have 
login shells default to a PATH setting that includes their directory for commands.

path_helper *also* constructs a MANPATH setting from the contents of /etc/manpaths, and then scans /etc/manpaths.d for 
files and appends to that MANPATH setting entries with the contents of each of those files.

However, it only does that if MANPATH has already been set in the environment, and it typically is *NOT* set when 
/etc/profile etc. are run.

So, currently, adding that file to /etc/manpaths.d doesn't actually do any good (at least not on El Capitan).

This is presumably because the man command on macOS does a lot of work trying to find man pages in the "appropriate" 
place, based on where the commands themselves are found.  See SEARCH PATH FOR MAN PAGES in

        https://developer.apple.com/legacy/library/documentation/Darwin/Reference/ManPages/man1/man.1.html

or, if you have a machine running macOS (under any of its names...), in the man page for the man command.

We might want to put the commands and man pages into the app bundle in a layout with "bin" and "man" directories, such 
as

        Wireshark.app/Contents/{bin,man}

or

        Wireshark.app/Contents/usr/{bin,man}

and put the paths into /etc/paths.d and /etc/manpaths.d.  That might not fix the problem for section 4 man pages, but 
it would at least fix them for section 1 man pages - and might also mean we wouldn't need to put the wrapper scripts 
(or anything else) into /usr/local/bin.
___________________________________________________________________________
Sent via:    Wireshark-users mailing list <wireshark-users () wireshark org>
Archives:    https://www.wireshark.org/lists/wireshark-users
Unsubscribe: https://www.wireshark.org/mailman/options/wireshark-users
             mailto:wireshark-users-request () wireshark org?subject=unsubscribe


Current thread: