Diagnose the Undocumented Mono cli-wrapper Command
The cli-wrapper manpage exists on Mono systems even when the executable does not, so it never proves the command is installed. This guide checks the installed Mono package version, confirms what is actually on disk, and uses the program's own help output if an executable is present. The supplied manual page documents no options or output: it says the program has no manpage and points you at the help switch.
The route
Jump straight to the step you need, or tick off Done means at the end.
- Time: about ten minutes for the checks.
1. Check the package version and command path
Start with read-only commands. No elevated privileges are needed. The package version matters because this guide is based on the local Debian or Ubuntu package, not on an unspecified Mono release.
$ dpkg-query -W -f='${Package} ${Version}\n' mono-runtime-common
mono-runtime-common 6.8.0.105+dfsg-3.6ubuntu2
$ command -v cli-wrapper
If command -v prints a path, save it for the next step. If it prints nothing and returns a non-zero status, there is no executable with that name in your current PATH. That is a useful result, not a reason to try random flags or to run the check with sudo.
Checkpoint
Continue to step 2 only if command -v cli-wrapper returned a path. Otherwise skip to step 5.
2. Confirm which file would run
A command name can resolve to a shell function, alias or an unexpected binary in a custom directory. Check the shell's resolution and then inspect the resolved file without executing it.
$ type -a cli-wrapper
cli-wrapper is /usr/local/bin/cli-wrapper
$ file -- /usr/local/bin/cli-wrapper
/usr/local/bin/cli-wrapper: ...
The final line is intentionally host-specific. It may identify a script, an ELF executable or another kind of file. Treat an unfamiliar file as a supply-chain or local-administration question. Do not replace it, make it executable, or feed it untrusted arguments just to discover what it does.
For a script, read its text before running it:
$ sed -n '1,160p' -- /path/to/cli-wrapper
Use the actual path printed by command -v. If the file is a binary, do not use a text editor or strings output as a substitute for documentation. Move to the documented help switch instead.
3. Ask the installed command for its help
The local cli-wrapper(1) page gives one operational instruction: run the command with the help switch. It does not promise a --help option, subcommands, environment variables or a particular output format. Start with the literal form below.
$ cli-wrapper help
Read the output before trying anything else. It belongs to the installed program, which may be supplied by a project or wrapper outside mono-runtime-common. Record the program name and version if the help text provides them. If it shows usage syntax, copy only an example whose inputs you understand.
If cli-wrapper help exits non-zero, preserve the error text and status:
$ cli-wrapper help
$ status=$?
$ printf 'exit status: %s\n' "$status"
exit status: ...
The ellipsis is not expected literal output; it marks a value that depends on the command. A non-zero status can mean the wrapper expects a different context, that its underlying tool is missing, or that the file found in step 2 is not the program described by this manpage. Do not infer a repair from the status alone.
4. Test only a documented, harmless operation
Only continue beyond help if the help text documents a read-only or dry-run action that fits your goal. Prefer an explicit test mode, a version query, or inspection of a named input that you have backed up. Keep options and values as separate shell words, and quote paths.
$ cli-wrapper --version
$ printf 'exit status: %s\n' "$?"
exit status: ...
This is a pattern, not a claim that --version is supported. Use it only when step 3 lists that option. The manpage does not document it, so an "unrecognised option" response is expected for some implementations. The same boundary applies to every other flag: the local help output is the authority for the executable you found.
Warning
Before an operation that changes files, services or permissions, stop and make a recovery plan. The manpage supplies no undo command, configuration path, default output location or service integration. Do not test an unknown wrapper against a production directory, a live service or data that has no backup.
5. Understand the missing-command result
On the inspected system, mono-runtime-common version 6.8.0.105+dfsg-3.6ubuntu2 installs the manual page at /usr/share/man/man1/cli-wrapper.1.gz, but it does not install a cli-wrapper executable. The package file list contains Mono runtime libraries, configuration and documentation, not that command.
Verify the distinction directly:
$ dpkg -L mono-runtime-common | grep -E '/(bin|sbin)/cli-wrapper$'
$ dpkg -L mono-runtime-common | grep '/cli-wrapper\.1\.gz$'
/usr/share/man/man1/cli-wrapper.1.gz
The first pipeline produces no matching line on this installation. The second finds the manpage. This is why man cli-wrapper can succeed while cli-wrapper help cannot: manual pages and executables are separate package files, and a manual page can be a placeholder for software that is absent or supplied elsewhere.
Do not create a symlink, copy a similarly named Mono binary, or install an unrelated package merely to make the command resolve. Identify the application that requested cli-wrapper, then consult that application's official installation instructions. If a system administrator intentionally installed a wrapper outside the package manager, ask for its owning package or source before using it.
6. Check the manual page and upstream reference
Keep the local page available when reporting the issue:
$ man -w cli-wrapper
/usr/share/man/man1/cli-wrapper.1.gz
$ man cli-wrapper
The page identifies itself as "No manpage for this program". Its only useful behavioural guidance is that a program-specific help switch may explain the command, and that older Mono documentation was hosted by the Mono project. That reference cannot fill in missing details for an unknown local wrapper.
When you contact the package or application owner, include the package version, the result of command -v cli-wrapper, the output of dpkg -L mono-runtime-common relevant to the command, and any help or error text. Redact usernames, hostnames, tokens and file paths that reveal private data.
Done means
- Package checked: you confirmed the installed
mono-runtime-commonversion. - Path resolved: you confirmed whether
cli-wrapperresolves in the currentPATH. - Help tried safely: you ran
cli-wrapper helponly when an executable was present. - Unknowns treated as unverified: undocumented flags and state-changing operations were not assumed safe.
- Placeholder identified: you distinguished the installed placeholder manpage from a missing executable.
- Record kept: you have a reproducible diagnostic record before changing packages, files or services.