Quais são as diferenças entre -v an -V para obter a versão do software no Ubuntu?

1

Estou sempre confuso para obter a versão do software instalado no Ubuntu. Para evitar a digitação completa para obter a versão como <software> --version , em vez disso, uso sempre algo como <software> -V .

Mas o problema é que nem todo software funciona. Para alguns eu tenho que usar <software> -v e para alguns eu tenho que usar --version completo para obter a versão.

Por exemplo

wget, gedit, nano, mysql etc todos trabalham com -V (Capital V)

mas Php , Skype e outros podem nunca ter trabalhado com -V em vez disso, tenho que usar -v (small v) para obter a versão:

php -V
Usage: php [options] [-f] <file> [--] [args...]
   php [options] -r <code> [--] [args...]
   php [options] [-B <begin_code>] -R <code> [-E <end_code>] [--] [args...]
   php [options] [-B <begin_code>] -F <file> [-E <end_code>] [--] [args...]
   ...

php -v
PHP 5.3.10-1ubuntu3.9 with Suhosin-Patch (cli) (built: Dec 12 2013 04:27:25) 
...

Alguns funcionam com -v e -V como firefox . E alguns até não trabalham com -v ou -V como totem , vinho e > google-chrome .

  • Por que há tanta diferença?
  • Como -V é sempre preferível obter a versão do software Por que não há nenhum padrão? ou existe algum padrão que eu não saiba?
por Saurav Kumar 31.01.2014 / 08:02

4 respostas

1

A maneira correta de obter a versão do software instalado no sistema é usar as ferramentas do gerenciador de pacotes!

--version não é uma maneira confiável de fazer isso por vários motivos:

  • Nem todos os programas possuem executáveis. Bibliotecas são um bom exemplo. Você não pode verificar sua versão do kernel usando linux --version , já que não existe tal comando. Ou a versão do seu driver de vídeo.

  • Nem todos os executáveis têm argumentos de linha de comando. A maioria faz, mas os programas GUI não precisam, e outros não.

  • --version , como qualquer argumento de linha de comando, depende do aplicativo. Depende do desenvolvedor para implementá-lo, e não há "padrão" per se, apenas uma convenção. Como você notou com -v|-V , não é consistente. Mesmo --help não é universal.

  • A saída de formato de --version também não é consistente. Alguns imprimem uma única linha, alguns imprimem vários. Alguns imprimem o número da versão somente , alguns imprimem o nome do programa também.

Dito isso, é uma maneira padrão e consistente de obter a versão instalada de qualquer software em seu sistema: pergunte ao sistema , não o software!

Graças à sua herança Debian, o Ubuntu possui um poderoso sistema de gerenciamento de pacotes chamado apt (na verdade, dpkg ). Controla pacotes instalados, suas dependências, repositórios disponíveis, e versões .

Existem várias ferramentas de gerenciamento de pacotes e front-ends que você pode usar para consultar seus pacotes instalados. Aqui estão alguns que exibem a versão:

  • apt-cache policy <package>

  • dpkg --list <package> (você pode usar curingas!)

E se você não sabe a que pacote um dado comando pertence, você pode descobrir de várias maneiras:

  • apt-cache search '<name>'

  • apt-file search '<path>'

E a saída é sempre consistente, confiável, padrão, porque você não está pedindo a um software individual feito por desenvolvedores distintos, você está consultando seu sistema sobre seu status.

Como exemplo, aqui está o resultado de uma pesquisa de todos os comandos mencionados em uma saída única :

$ dpkg --list wget gedit nano mysql-server skype php? firefox totem wine google-chrome*
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                       Version                    Description
+++-==========================-==========================-====================================================================
ii  firefox                    42.0+build2-0ubuntu0.12.04 Safe and easy web browser from Mozilla
ii  gedit                      3.4.1-0ubuntu1             official text editor of the GNOME desktop environment
ii  google-chrome-stable       46.0.2490.80-1             The web browser from Google
ii  mysql-server               5.5.46-0ubuntu0.12.04.2    MySQL database server (metapackage depending on the latest version)
ii  nano                       2.2.6-1                    small, friendly text editor inspired by Pico
ii  php5                       5.3.10-1ubuntu3.21         server-side, HTML-embedded scripting language (metapackage)
ii  skype                      4.3.0.37-0ubuntu0.12.04.1  client for Skype VOIP and instant messaging service
ii  totem                      3.0.1-0ubuntu21.1          Simple media player for the GNOME desktop based on GStreamer
ii  wget                       1.13.4-2ubuntu1.2          retrieves files from the web
ii  wine                       1.4-0ubuntu4.1             Microsoft Windows Compatibility Layer (meta-package)
    
por MestreLion 08.11.2015 / 12:51
1

Essas são opções detalhadas relacionadas a cada aplicativo, de modo que alguns aplicativos usaram as opções -V. Outros usam -v outros, ou apenas --version. Não há regra geral para a convenção de nomenclatura.

O que eu quero dizer é que essas opções não têm um padrão, então você pode encontrar a opção -X em algum aplicativo, fazer o mesmo que -R em outro ...

    
por Maythux 31.01.2014 / 08:09
1

O padrão é:

app --version

-v ou -V é apenas (geralmente não) o formulário abreviado para --version . Você nunca verá em uma página de manual algo como:

-v
    Print version...

ou:

-V
    Print version...

mas você verá o tempo todo essas duas opções, a forma abreviada (se esta existir) e o formulário padrão, juntos. Algo como:

-v, --version
    Print version...

ou:

-V, --version
    Print version...

Mas isso depende apenas dos desenvolvedores como eles querem implementar seus aplicativos . Por exemplo, -v é usado em alguns casos como a forma abreviada de --verbose (consulte man wget ) ou --invert-match (consulte man grep ) ao, ou em outros casos como independente (consulte man awk ou man ps ).

    
por Radu Rădeanu 31.01.2014 / 08:49
0

Geralmente, ela é causada por uma opção chamada "verbosidade". O Verbosity executa um programa e imprime o máximo de informações possível para o terminal do qual foi chamado.

No entanto, alguns programas não suportam o modo detalhado ou não são executados de uma forma que exija qualquer forma de verbosidade, por isso, eles vão cuspir a string de ajuda. Outros irão tratar -v e -V igualmente.

    
por ExplodingKittens 31.01.2014 / 08:09