Here is a possible starting point using expl3 and tcolorbox. If you look at the manual, you'll see that the options for configuring the appearance are endless—it's even possible and easy to make the box breakable across pages, see below.
Note: I renamed your “options“ to “subcommands”, because the term “options” in this context is customarily used for arguments like -f or --force, not for mandatory arguments such as install or remove here; the term “subcommands” is used as I do in Python's argparse module, at the very least. It's just a name, anyway—you can easily change it back if you care about “options”.
Main code
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{tabularx}
\usepackage[table]{xcolor}
\usepackage{tcolorbox}
\usepackage{xparse}
\usepackage{lipsum}
% cf. <https://tex.stackexchange.com/questions/297345/why-is-the-start-row-of-rowcolors-ignored-in-tabularx/297357>
\newcounter{tblerows}
\expandafter\let\csname c@tblerows\endcsname\rownum
\colorlet{mycommandboxBg}{blue!3!white}
\colorlet{mycommandboxTitle}{blue!3!white}
\colorlet{mycommandboxSubcommand}{black}
\colorlet{mycommandboxSubcmdOdd}{blue!15!white}
\colorlet{mycommandboxSubcmdEven}{mycommandboxBg}
% Define a tcolorbox-based environment called 'mycommandbox'
\newtcolorbox{mycommandbox}[1]{colback=mycommandboxBg,
colframe=blue!75!black,
fonttitle=\bfseries,
title={\textcolor{mycommandboxTitle}{#1}},
coltitle=black,
subtitle style={
toprule=0.4pt,
bottomrule=0pt,
colback=mycommandboxBg,
}
}
\ExplSyntaxOn
\tl_new:N \g__lmz_synopsis_tl
\tl_new:N \g__lmz_description_tl
\seq_new:N \g__lmz_subcommands_seq
\seq_new:N \g__lmz_examples_seq
\seq_new:N \l__lmz_start_cmdbox_tmp_seq
\seq_new:N \l__lmz_start_cmdbox_table_rows_seq
\tl_new:N \l__lmz_start_cmdbox_table_row_tl
% How to prepare a row for the table containing the subcommands
\cs_new_protected:Npn \lmz_set_subcmd_table_row:Nnn #1#2#3
{
\tl_set:Nn #1 { #2 & #3 }
}
\cs_generate_variant:Nn \lmz_set_subcmd_table_row:Nnn { Nxx }
% Start the tcolorbox containing all the formatting
%
% #1: box title
\cs_new_protected:Npn \lmz_start_cmdbox:n #1
{
\mycommandbox {#1}
\tcbsubtitle [toprule=0pt] { Description }
\g__lmz_description_tl
\tcbsubtitle { Subcommands }
\lmz_write_subcommands_table:
\tcbsubtitle { Examples }
\lmz_write_examples:
}
\cs_generate_variant:Nn \lmz_start_cmdbox:n { V }
% End the tcolorbox containing all the formatting
\cs_new_protected:Npn \lmz_end_cmdbox:
{ \endmycommandbox }
% Write the contents of the Subcommands section
\cs_new_protected:Npn \lmz_write_subcommands_table:
{
\seq_map_inline:Nn \g__lmz_subcommands_seq
{
% Get the two elements of the current subcommand in a seq
\seq_set_split:Nnn \l__lmz_start_cmdbox_tmp_seq { } {##1}
% Use them to form a table row
\lmz_set_subcmd_table_row:Nxx \l__lmz_start_cmdbox_table_row_tl
{ \seq_item:Nn \l__lmz_start_cmdbox_tmp_seq {1} }
{ \seq_item:Nn \l__lmz_start_cmdbox_tmp_seq {2} }
% Append the prepared row to \l__lmz_start_cmdbox_table_rows_seq
\seq_put_right:NV \l__lmz_start_cmdbox_table_rows_seq
\l__lmz_start_cmdbox_table_row_tl
}
\group_begin:
\rowcolors{1}{mycommandboxSubcmdOdd}{mycommandboxSubcmdEven}
\begin{tabularx}{\linewidth} { @{\hspace{1em}} l X }
% Expand all prepared rows, separate them with \\
\seq_use:Nn \l__lmz_start_cmdbox_table_rows_seq { \\ }
\end{tabularx}
\group_end:
}
% Write the contents of the Examples section
\cs_new_protected:Npn \lmz_write_examples:
{
\group_begin:
\slshape
\seq_use:Nn \g__lmz_examples_seq { \\ }
\group_end:
}
% Start command for our 'commandtable' environment
\cs_new_protected:Npn \lmz_start_commandtable:
{
\tl_gclear:N \g__lmz_synopsis_tl
\tl_gclear:N \g__lmz_description_tl
\seq_gclear:N \g__lmz_subcommands_seq
\seq_gclear:N \g__lmz_examples_seq
\group_begin:
\cs_set_eq:NN \synopsis \lmz_cmd_synopsis:n
\cs_set_eq:NN \description \lmz_cmd_description:n
\cs_set_eq:NN \subcommand \lmz_cmd_subcommand:nn
\cs_set_eq:NN \example \lmz_cmd_example:n
\ignorespaces
}
% End command for our 'commandtable' environment
\cs_new_protected:Npn \lmz_end_commandtable:
{
\unskip
\group_end:
% Pass the *value* of token list variable \g__lmz_synopsis_tl
\lmz_start_cmdbox:V \g__lmz_synopsis_tl
\lmz_end_cmdbox:
\ignorespacesafterend
}
% Implementation for the \synopsis, \description, \subcommand and \example
% commands when used inside the 'commandtable' environment
\cs_new_protected:Npn \lmz_cmd_synopsis:n #1
{ \tl_gset:Nn \g__lmz_synopsis_tl {#1} }
\cs_new_protected:Npn \lmz_cmd_description:n #1
{ \tl_gset:Nn \g__lmz_description_tl {#1} }
\cs_new_protected:Npn \lmz_cmd_subcommand:nn #1#2
{
\seq_gput_right:Nn \g__lmz_subcommands_seq { {#1} {#2} }
}
\cs_new_protected:Npn \lmz_cmd_example:n #1
{
\seq_gput_right:Nn \g__lmz_examples_seq {#1}
}
\NewDocumentEnvironment { commandtable } { }
{ \lmz_start_commandtable: }
{ \lmz_end_commandtable: }
\ExplSyntaxOff
% Simple formatting commands for consistency (they could of course be defined
% using xparse's \NewDocumentCommand as well).
\newcommand*{\mycmd}[1]{\texttt{#1}}
\newcommand*{\mysubcommand}[1]{\textit{<#1>}}
\newcommand*{\myargument}[1]{\textit{<#1>}}
\begin{document}
\begin{commandtable}
\synopsis{\mycmd{apt-get} \mysubcommand{subcommand} \myargument{name}}
\description{Here should be a brief function description.}
\subcommand{install}{Brief description. \lipsum[1][1-3]}
\subcommand{update}{Brief description}
\subcommand{remove}{Brief description}
\example{apt-get install newpackage}
\example{apt-get install anotherpackage}
\end{commandtable}
\end{document}

Customizing the appearance
As said, the possibilities for changing the style of the box are numerous with tcolorbox, here is a simple change from the above look:
\colorlet{mycommandboxBg}{blue!3!white}
\colorlet{mycommandboxSubtitleBg}{orange!20!white}
\colorlet{mycommandboxTitle}{blue!3!white}
\colorlet{mycommandboxSubcommand}{black}
\colorlet{mycommandboxSubcmdOdd}{blue!15!white}
\colorlet{mycommandboxSubcmdEven}{mycommandboxBg}
% Define a tcolorbox-based environment called 'mycommandbox'
\newtcolorbox{mycommandbox}[1]{colback=mycommandboxBg,
colframe=blue!75!black,
fonttitle=\bfseries,
title={\textcolor{mycommandboxTitle}{#1}},
coltitle=black,
subtitle style={
boxrule=0.4pt,
colback=mycommandboxSubtitleBg,
}
}
(...)
\cs_new_protected:Npn \lmz_start_cmdbox:n #1
{
\mycommandbox {#1}
\tcbsubtitle { Description }
(...)

To suppress the subtitle rules, use boxrule=0pt in the subtitle style option.
Making the box breakable
In case you want to make the box breakable (not inside the tabularx used for the subcommands), you can use:
\documentclass{article}
(...)
\usepackage{tcolorbox}
\tcbuselibrary{breakable, skins}
(...)
\newtcolorbox{mycommandbox}[1]{...,
subtitle style={
...
},
enhanced jigsaw, breakable
}
(...)
with the following result:

Notes
As in Skillmon's answer, it's possible to use a description environment, a \synopsis, \subcommand or \example command inside the actual contents, because the special redefinitions for \description and these commands are very localized. For instance, with:
\subcommand{install}{Brief description. \lipsum[1][1-3]}
\subcommand{update}{Brief description}
\subcommand{remove}{Brief description.
\begin{description}
\item[foo] This performs foo.
\item[bar] This does bar very well.
\end{description}
}
one obtains:

tcolorboxdocumentation might be a good starting point – gigi Jun 22 '19 at 12:23