В чем разница между -v и -V для получения версии программного обеспечения в Ubuntu?

Я всегда смущен, когда устанавливаю версию программного обеспечения, установленную в Ubuntu. Чтобы не набирать полный текст, чтобы получить версию типа <software> --version, я всегда использую что-то вроде <software> -V.

Но проблема в том, что не для всех программ это работает. Для некоторых я должен использовать <software> -v, а для некоторых - полный --version, чтобы получить версию.

Например,

wget, gedit, nano, mysql и т. Д. Все работает с -V (Capital V)

, но Php , Skype и, возможно, другие никогда не работали с -V , вместо этого я должен использовать -v (small v), чтобы получить версию:

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) 
...

Некоторые из них работают как с -v , так и с -V , как firefox . А некоторые даже не работают с -v или -V , такими как totem , wine и google-chrome .

  • Почему такая большая разница?
  • Поскольку -V всегда предпочтительнее, чтобы получить версию программного обеспечения, почему нет никакого стандарта? или есть какой-то стандарт, который я не знаю?
1
задан 31 January 2014 в 11:02

4 ответа

Правильный способ получить версию программного обеспечения, установленного в системе, - это использовать инструменты менеджера пакетов!

--version не является надежным способом сделать это по нескольким причинам:

  • Не все программы имеют исполняемые файлы. Библиотеки являются хорошим примером. Вы не можете проверить версию своего ядра, используя linux --version, так как такой команды нет. Или ваша версия видео драйвера.

  • Не все исполняемые файлы имеют аргументы командной строки. Большинство так и делают, но программы с графическим интерфейсом не нужны, а некоторые нет.

  • --version, как и любой аргумент командной строки, зависит от приложения. Это зависит от разработчика, чтобы реализовать его, и не существует «стандартного» per se, просто соглашение. Как вы заметили с -v|-V, это не согласуется. Даже --help не универсален.

  • Вывод формата --version также не согласован. Некоторые печатают одну строку, некоторые печатают несколько. Некоторые печатают только номер версии , некоторые печатают также название программы.

Тем не менее, является стандартным, последовательным способом получения установленной версии любого программного обеспечения в вашей системе: спросите систему , а не программное обеспечение!

Благодаря наследию Debian, Ubuntu имеет мощную систему управления пакетами под названием apt (фактически, dpkg). Он управляет установленными пакетами, их зависимостями, доступными репозиториями, и версиями .

Существует несколько инструментов управления пакетами и внешних интерфейсов, которые можно использовать для запроса установленных пакетов. Вот некоторые из них, которые отображают версию:

  • apt-cache policy <package>

  • dpkg --list <package> (вы можете использовать подстановочные знаки!)

И если вы не знаете, к какому пакету относится данная команда, вы можете узнать несколькими способами:

  • apt-cache search '<name>'

  • apt-file search '<path>'

И результат всегда последовательный, надежный, стандартный, потому что вы не спрашиваете отдельное программное обеспечение, созданное разными разработчиками, вы запрашиваете ваша система о своем статусе.

Например, вот результат поиска всех команд, упомянутых вами в одномоментном выходе :

$ 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)
0
ответ дан 31 January 2014 в 11:02

Это подробные параметры, связанные с каждым приложением, поэтому некоторые приложения используют -V, другие используют -v другие или просто --version. Нет общего правила для соглашения об именах.

Я хочу сказать, что эти опции не имеют стандарта, так что вы можете найти опцию -X в одном приложении, аналогичную -R в другом ...

0
ответ дан 31 January 2014 в 11:02

Стандарт:

app --version

-v или -V является только (вообще говоря) сокращенной формой для --version. Вы никогда не увидите на странице руководства что-то вроде:

-v
    Print version...

или:

-V
    Print version...

, но вы все время будете видеть эти два варианта, сокращенную форму (если она существует) и стандартная форма, вместе. Что-то вроде:

-v, --version
    Print version...

или:

-V, --version
    Print version...

Но это зависит только от разработчиков, как они хотят реализовать свои приложения . Например, -v используется в некоторых случаях как сокращенная форма для --verbose (см. man wget), или для --invert-match (см. man grep) ao, или в других случаях как отдельная (см. man awk). или man ps). [+1121]

0
ответ дан 31 January 2014 в 11:02

Это обычно заканчивается тем, что вызывается опцией, называемой «многословие». Verbosity запускает программу и печатает как можно больше информации в терминал, из которого она была вызвана.

Некоторые программы, однако, не поддерживают подробный режим или не запускаются так, чтобы требовать какой-либо формы многословия, поэтому они выкладывают строку справки. Другие будут относиться к -v и -V одинаково.

0
ответ дан 31 January 2014 в 11:02

Другие вопросы по тегам:

Похожие вопросы: