11da177e4SLinus Torvalds#!/bin/sh 21da177e4SLinus Torvalds# Before running this script please ensure that your PATH is 31da177e4SLinus Torvalds# typical as you use for compilation/istallation. I use 41da177e4SLinus Torvalds# /bin /sbin /usr/bin /usr/sbin /usr/local/bin, but it may 51da177e4SLinus Torvalds# differ on your system. 61da177e4SLinus Torvalds# 71da177e4SLinus Torvaldsecho 'If some fields are empty or look unusual you may have an old version.' 81da177e4SLinus Torvaldsecho 'Compare to the current minimal requirements in Documentation/Changes.' 91da177e4SLinus Torvaldsecho ' ' 101da177e4SLinus Torvalds 111da177e4SLinus Torvaldsuname -a 121da177e4SLinus Torvaldsecho ' ' 131da177e4SLinus Torvalds 14235024e5SAlexander Kapshukgcc -dumpversion 2>&1 | 15235024e5SAlexander Kapshukawk '/[0-9]+([.]?[0-9]+)+/ && !/not found$/{ 16235024e5SAlexander Kapshuk match($0, /[0-9]+([.]?[0-9]+)+/) 17235024e5SAlexander Kapshuk printf("GNU C\t\t\t%s\n", 18235024e5SAlexander Kapshuk substr($0,RSTART,RLENGTH)) 19235024e5SAlexander Kapshuk}' 201da177e4SLinus Torvalds 211d60b873SAlexander Kapshukmake --version 2>&1 | 221d60b873SAlexander Kapshukawk '/GNU Make/{ 231d60b873SAlexander Kapshuk match($0, /[0-9]+([.]?[0-9]+)+/) 241d60b873SAlexander Kapshuk printf("GNU Make\t\t%s\n", 251d60b873SAlexander Kapshuk substr($0,RSTART,RLENGTH)) 261d60b873SAlexander Kapshuk}' 271da177e4SLinus Torvalds 283e2f5cfbSAlexander Kapshukld -v 2>&1 | 293e2f5cfbSAlexander Kapshukawk '/[0-9]+([.]?[0-9]+)+/ && !/not found$/{ 303e2f5cfbSAlexander Kapshuk match($0, /[0-9]+([.]?[0-9]+)+/) 313e2f5cfbSAlexander Kapshuk printf("Binutils\t\t%s\n", 323e2f5cfbSAlexander Kapshuk substr($0,RSTART,RLENGTH)) 333e2f5cfbSAlexander Kapshuk}' 341da177e4SLinus Torvalds 3512b2732cSAlexander Kapshukmount --version 2>&1 | 3612b2732cSAlexander Kapshukawk '/[0-9]+([.]?[0-9]+)+/ && !/not found$/{ 3712b2732cSAlexander Kapshuk match($0, /[0-9]+([.]?[0-9]+)+/) 3812b2732cSAlexander Kapshuk $0 = substr($0,RSTART,RLENGTH) 3912b2732cSAlexander Kapshuk printf("Util-linux\t\t%s\nMount\t\t\t%s\n",$0,$0) 4012b2732cSAlexander Kapshuk}' 411da177e4SLinus Torvalds 425bcb2f59SAlexander Kapshukdepmod -V 2>&1 | 435bcb2f59SAlexander Kapshukawk '/[0-9]+([.]?[0-9]+)+/ && !/not found$/{ 445bcb2f59SAlexander Kapshuk match($0, /[0-9]+([.]?[0-9]+)+/) 455bcb2f59SAlexander Kapshuk printf("Module-init-tools\t%s\n", 465bcb2f59SAlexander Kapshuk substr($0,RSTART,RLENGTH)) 475bcb2f59SAlexander Kapshuk}' 481da177e4SLinus Torvalds 49a8782227SAlexander Kapshuktune2fs 2>&1 | 50a8782227SAlexander Kapshukawk '/^tune2fs/{ 51a8782227SAlexander Kapshuk match($0, /[0-9]+([.]?[0-9]+)+/) 52a8782227SAlexander Kapshuk printf("E2fsprogs\t\t%s\n", 53a8782227SAlexander Kapshuk substr($0,RSTART,RLENGTH)) 54a8782227SAlexander Kapshuk}' 551da177e4SLinus Torvalds 560fc8de56SAlexander Kapshukfsck.jfs -V 2>&1 | 570fc8de56SAlexander Kapshukawk '/version/{ 580fc8de56SAlexander Kapshuk match($0, /[0-9]+([.]?[0-9]+)+/) 590fc8de56SAlexander Kapshuk printf("Jfsutils\t\t%s\n", 600fc8de56SAlexander Kapshuk substr($0,RSTART,RLENGTH)) 610fc8de56SAlexander Kapshuk}' 621da177e4SLinus Torvalds 6363e781adSAlexander Kapshukreiserfsck -V 2>&1 | 6463e781adSAlexander Kapshukawk '/^reiserfsck/{ 6563e781adSAlexander Kapshuk match($0, /[0-9]+([.]?[0-9]+)+/) 6663e781adSAlexander Kapshuk printf("Reiserfsprogs\t\t%s\n", 6763e781adSAlexander Kapshuk substr($0,RSTART,RLENGTH)) 6863e781adSAlexander Kapshuk}' 691da177e4SLinus Torvalds 70ea88df9bSAlexey Dobriyanfsck.reiser4 -V 2>&1 | grep ^fsck.reiser4 | awk \ 711da177e4SLinus Torvalds'NR==1{print "reiser4progs ", $2}' 721da177e4SLinus Torvalds 7344422f3cSAlexander Kapshukxfs_db -V 2>&1 | 7444422f3cSAlexander Kapshukawk '/version/{ 7544422f3cSAlexander Kapshuk match($0, /[0-9]+([.]?[0-9]+)+/) 7644422f3cSAlexander Kapshuk printf("Xfsprogs\t\t%s\n", 7744422f3cSAlexander Kapshuk substr($0,RSTART,RLENGTH)) 7844422f3cSAlexander Kapshuk}' 791da177e4SLinus Torvalds 80f437d1edSAlexander Kapshukpccardctl -V 2>&1 | 81f437d1edSAlexander Kapshukawk '/pcmciautils/{ 82f437d1edSAlexander Kapshuk match($0, /[0-9]+([.]?[0-9]+)+/) 83f437d1edSAlexander Kapshuk printf("Pcmciautils\t\t%s\n", 84f437d1edSAlexander Kapshuk substr($0,RSTART,RLENGTH)) 85f437d1edSAlexander Kapshuk}' 86319e799aSValdis Kletnieks 871da177e4SLinus Torvaldscardmgr -V 2>&1| grep version | awk \ 881da177e4SLinus Torvalds'NR==1{print "pcmcia-cs ", $3}' 891da177e4SLinus Torvalds 908fb09598SAlexander Kapshukquota -V 2>&1 | 918fb09598SAlexander Kapshukawk '/version/{ 928fb09598SAlexander Kapshuk match($0, /[0-9]+([.]?[0-9]+)+/) 938fb09598SAlexander Kapshuk printf("Quota-tools\t\t%s\n", 948fb09598SAlexander Kapshuk substr($0,RSTART,RLENGTH)) 958fb09598SAlexander Kapshuk}' 961da177e4SLinus Torvalds 97b903fa98SAlexander Kapshukpppd --version 2>&1 | 98b903fa98SAlexander Kapshukawk '/version/{ 99b903fa98SAlexander Kapshuk match($0, /[0-9]+([.]?[0-9]+)+/) 100b903fa98SAlexander Kapshuk printf("PPP\t\t\t%s\n", 101b903fa98SAlexander Kapshuk substr($0,RSTART,RLENGTH)) 102b903fa98SAlexander Kapshuk}' 1031da177e4SLinus Torvalds 1041da177e4SLinus Torvaldsisdnctrl 2>&1 | grep version | awk \ 1051da177e4SLinus Torvalds'NR==1{print "isdn4k-utils ", $NF}' 1061da177e4SLinus Torvalds 1071da177e4SLinus Torvaldsshowmount --version 2>&1 | grep nfs-utils | awk \ 1081da177e4SLinus Torvalds'NR==1{print "nfs-utils ", $NF}' 1091da177e4SLinus Torvalds 110cbb57d10SAlexander Kapshuktest -r /proc/self/maps && 111cbb57d10SAlexander Kapshuksed ' 112cbb57d10SAlexander Kapshuk /.*libc-\(.*\)\.so$/!d 113cbb57d10SAlexander Kapshuk s//Linux C Library\t\t\1/ 114cbb57d10SAlexander Kapshuk q 115cbb57d10SAlexander Kapshuk' /proc/self/maps 1161da177e4SLinus Torvalds 1171e5f739cSAlexander Kapshukldd --version 2>&1 | 1181e5f739cSAlexander Kapshukawk '/^ldd/{ 1191e5f739cSAlexander Kapshuk match($0, /[0-9]+([.]?[0-9]+)+/) 1201e5f739cSAlexander Kapshuk printf("Dynamic linker (ldd)\t%s\n", 1211e5f739cSAlexander Kapshuk substr($0,RSTART,RLENGTH)) 1221e5f739cSAlexander Kapshuk}' 1231da177e4SLinus Torvalds 12453494ba9SAlexander Kapshuklibcpp=`ldconfig -p 2>/dev/null | 12553494ba9SAlexander Kapshuk awk '/(libg|stdc)[+]+\.so/ { 12653494ba9SAlexander Kapshuk print $NF 12753494ba9SAlexander Kapshuk exit 12853494ba9SAlexander Kapshuk } 12953494ba9SAlexander Kapshuk'` 13053494ba9SAlexander Kapshuktest -r "$libcpp" && 13153494ba9SAlexander Kapshukls -l $libcpp | 13253494ba9SAlexander Kapshuksed ' 13353494ba9SAlexander Kapshuk s!.*so\.!! 13453494ba9SAlexander Kapshuk s!^!Linux C++ Library\t! 13553494ba9SAlexander Kapshuk' 136e7230872SAlexander Kapshukps --version 2>&1 | 137e7230872SAlexander Kapshukawk '/version/{ 138e7230872SAlexander Kapshuk match($0, /[0-9]+([.]?[0-9]+)+/) 139e7230872SAlexander Kapshuk printf("Procps\t\t\t%s\n", 140e7230872SAlexander Kapshuk substr($0,RSTART,RLENGTH)) 141e7230872SAlexander Kapshuk}' 1421da177e4SLinus Torvalds 143be6bb51aSAlexander Kapshukifconfig --version 2>&1 | 144be6bb51aSAlexander Kapshukawk '/tools/{ 145be6bb51aSAlexander Kapshuk match($0, /[0-9]+([.]?[0-9]+)+/) 146be6bb51aSAlexander Kapshuk printf("Net-tools\t\t%s\n", 147be6bb51aSAlexander Kapshuk substr($0,RSTART,RLENGTH)) 148be6bb51aSAlexander Kapshuk}' 1491da177e4SLinus Torvalds 1507a343234SAlexander Kapshukloadkeys -V 2>&1 | 1517a343234SAlexander Kapshukawk '/[0-9]+([.]?[0-9]+)+/ && !/not found$/{ 1527a343234SAlexander Kapshuk match($0, /[0-9]+([.]?[0-9]+)+/) 1537a343234SAlexander Kapshuk $0 = substr($0,RSTART,RLENGTH) 1547a343234SAlexander Kapshuk printf("Kbd\t\t\t%s\nConsole-tools\t\t%s\n",$0,$0) 1557a343234SAlexander Kapshuk}' 1561da177e4SLinus Torvalds 157319e799aSValdis Kletnieksoprofiled --version 2>&1 | awk \ 158319e799aSValdis Kletnieks'(NR==1 && ($2 == "oprofile")) {print "oprofile ", $3}' 159319e799aSValdis Kletnieks 16029dfecffSAlexander Kapshukexpr --v 2>&1 | 16129dfecffSAlexander Kapshukawk '/^expr/{ 16229dfecffSAlexander Kapshuk match($0, /[0-9]+([.]?[0-9]+)+/) 16329dfecffSAlexander Kapshuk printf("Sh-utils\t\t%s\n", 16429dfecffSAlexander Kapshuk substr($0,RSTART,RLENGTH)) 16529dfecffSAlexander Kapshuk}' 1661da177e4SLinus Torvalds 1671245b7ecSAlexander Kapshukudevadm --version 2>&1 | 1681245b7ecSAlexander Kapshukawk '/[0-9]+([.]?[0-9]+)+/ && !/not found$/{ 1691245b7ecSAlexander Kapshuk match($0, /[0-9]+([.]?[0-9]+)+/) 1701245b7ecSAlexander Kapshuk printf("Udev\t\t\t%s\n", 1711245b7ecSAlexander Kapshuk substr($0,RSTART,RLENGTH)) 1721245b7ecSAlexander Kapshuk}' 1731da177e4SLinus Torvalds 174031c155aSAlexander Kapshukiwconfig --version 2>&1 | 175031c155aSAlexander Kapshukawk '/version/{ 176031c155aSAlexander Kapshuk match($0, /[0-9]+([.]?[0-9]+)+/) 177031c155aSAlexander Kapshuk printf("Wireless-tools\t\t%s\n", 178031c155aSAlexander Kapshuk substr($0,RSTART,RLENGTH)) 179031c155aSAlexander Kapshuk}' 180319e799aSValdis Kletnieks 1811920c298SAlexander Kapshuktest -e /proc/modules && 1821920c298SAlexander Kapshuksort /proc/modules | 1831920c298SAlexander Kapshuksed ' 1841920c298SAlexander Kapshuk s/ .*// 1851920c298SAlexander Kapshuk H 1861920c298SAlexander Kapshuk${ 1871920c298SAlexander Kapshuk g 1881920c298SAlexander Kapshuk s/^\n/Modules Loaded\t\t/ 1891920c298SAlexander Kapshuk y/\n/ / 1901920c298SAlexander Kapshuk q 1911920c298SAlexander Kapshuk} 1921920c298SAlexander Kapshuk d 1931920c298SAlexander Kapshuk' 194