Diagnose the Undocumented Mono cli-wrapper Command
You will establish what cli-wrapper means on the machine in front of you, check the installed Mono package version, and use the program's own help output if an executable is actually present. The supplied manual page does not document options or output: it says that the program has no manpage and directs you to the help switch. Allow about ten minutes for the checks. Do not assume that the manpage proves the command is installed.
The route
Jump straight to the step you need, or tick off Done means at the end.
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 that 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.
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
- You checked the installed
mono-runtime-commonversion. - You confirmed whether
cli-wrapperresolves in the currentPATH. - You ran
cli-wrapper helponly when an executable was present. - You treated undocumented flags and state-changing operations as unverified.
- You distinguished the installed placeholder manpage from a missing executable.
- You have a reproducible diagnostic record before changing packages, files or services.