Jak uzyskać wersję aplikacji z wiersza poleceń?

20

Chciałbym wiedzieć, jak uzyskać informacje o wersji zainstalowanego programu, który nie ma

--version lub -version

zaimplementowana metoda.

Paradiesstaub
źródło
Wiem, że masz na myśli dowolny program, ale czy możesz powiedzieć, który program dokładnie?

Odpowiedzi:

22

Możesz użyć dpkglub apt-cache.

Aby sprawdzić wersję bash, na przykład:

dpkg -l bash

apt-cache show bash
Pantera
źródło
Dla tych, którzy szukają tylko ogólnych odpowiedzi na Linuksa, odpowiednikiem powyższego dla RHEL / CentOS / Fedora (i podobnych) byłoby yum requires <file>np. yum requires ssh-keygenDałoby ci twoją wersję openSSH.
SeldomNeedy
1
@SeldomNeedy - mniam jest amortyzowany w Fedorze, Fedora używa dnf. Centos / RHEL wciąż na mniam.
Panther
7

Jeśli program nie ma żadnej opcji wiersza polecenia wyświetlającej informacje o wersji, możesz spróbować użyć dpkgtej wersji pakietu, która zwykle zawiera wersję programu.

dpkg -S "$(which YOUR_PROGRAM)"

wypisuje paczkę zawierającą YOUR_PROGRAM i

dpkg --status YOUR_PACKAGE | grep ^Version

drukuje wersję YOUR_PACKAGE.

Możesz to wszystko połączyć:

dpkg --status "$(dpkg -S "$(which YOUR_PROGRAM)" | cut -d: -f1)" | grep ^Version

Użyj go na przykład w następujący sposób ls:

dpkg --status "$(dpkg -S "$(which ls)"| cut -d: -f1)"| grep ^Version
Florian Diesch
źródło
1
Jako sugestia. Umieść wszystko w funkcji i załaduj, gdy uruchomi się powłoka.
Zoke
1

Możesz użyć, dpkg-queryaby uzyskać wersję pakietu:

$ dpkg-query -W -f='${binary:Package} ${Version}\n' firefox
firefox 29.0+build1-0ubuntu0.13.10.3

Aby uzyskać tylko ciąg wersji:

$ dpkg-query -W -f='${Version}\n' firefox
29.0+build1-0ubuntu0.13.10.3
Sylvain Pineau
źródło
0

Poniższe polecenie podaje również dokładnie zainstalowaną wersję pakietu.

apt-cache policy <package-name> | grep Installed: | cut -d: -f2

Przykład

$ apt-cache policy firefox | grep Installed: | cut -d: -f2
24.0+build1-0ubuntu1

$ apt-cache policy gedit | grep Installed: | cut -d: -f2
3.8.3-0ubuntu3
Avinash Raj
źródło