'Do not override this method !
Generate the help message to show if the package is not installed.
To use this in subclasses, simply add the dictionary `pkg_names` as
a class variable:
pkg_names = {
"apt-get": <Name of the apt-get package>,
"yum": <Name of the yum package>,
"dnf": <Name of the dnf package>,
"brew": <Name of the brew package>,
"port": <Name of the port package>,
"windows_url": <The url which has installation instructions>
All the dictionary keys are optional. If a key is not present or has
the value `None` no message is provided for that platform.'

def install_help_msg(self):

    def _try_managers(*managers):
        for manager in managers:
            pkg_name = self.pkg_names.get(manager, None)
            if pkg_name:
                try:
                    _ = check_output(['which', manager], stderr=subprocess.STDOUT)
                    return 'Try    installing    {0}    with    `{1}    install    {2}`'.format(self.name, manager, pkg_name)
                except subprocess.CalledProcessError:
                    pass
    message = None
    if (sys.platform == 'win32'):
        url = self.pkg_names.get('windows_url', None)
        if url:
            message = 'Please    check    {0}    for    instructions    to    install    {1}'.format(url, self.name)
    elif (sys.platform == 'darwin'):
        message = _try_managers('brew', 'port')
    elif sys.platform.startswith('linux'):
        release = platform.linux_distribution()[0].lower()
        if (release in ('debian', 'ubuntu')):
            message = _try_managers('apt-get')
        elif (release in ('centos', 'redhat', 'fedora')):
            message = _try_managers('dnf', 'yum')
    return message
