我只想从终端获取已安装的库包列表。
有什么命令可以做到这一点吗?
答案1
/sbin/ldconfig -p
-v 选项将显示库版本。
结果:
267 libs found in cache `/etc/ld.so.cache'
libz.so.1 (libc6) => /usr/lib/libz.so.1
libz.so (libc6) => /usr/lib/libz.so
libxslt.so.1 (libc6) => /usr/lib/libxslt.so.1
libxml2.so.2 (libc6) => /usr/lib/libxml2.so.2
libxcb.so.1 (libc6) => /usr/lib/libxcb.so.1
libxcb-xlib.so.0 (libc6) => /usr/lib/libxcb-xlib.so.0
libwrap.so.0 (libc6) => /lib/libwrap.so.0
libvolume_id.so.0 (libc6) => /lib/libvolume_id.so.0
libuuid.so.1 (libc6) => /lib/libuuid.so.1
libutil.so.1 (libc6, hwcap: 0x8008000000008000, OS ABI: Linux 2.6.8) => /lib/tls/i686/cmov/libutil.so.1
libutil.so.1 (libc6, OS ABI: Linux 2.6.8) => /lib/libutil.so.1
libutil.so (libc6, OS ABI: Linux 2.6.8) => /usr/lib/libutil.so
libusb-0.1.so.4 (libc6) => /lib/libusb-0.1.so.4
libusb-0.1.so.4 (libc6) => /usr/lib/libusb-0.1.so.4
libulockmgr.so.1 (libc6) => /lib/libulockmgr.so.1
libt1x.so.5 (libc6) => /usr/lib/libt1x.so.5
libt1.so.5 (libc6) => /usr/lib/libt1.so.5
libtiff.so.4 (libc6) => /usr/lib/libtiff.so.4
libticw.so.5 (libc6) => /lib/libticw.so.5
如果你想把这个列表变成包,你可以这样做:
dpkg -S $(/sbin/ldconfig -p | awk 'NR>1 { print $NF }')
您还可以进一步处理以消除错误、不需要的组件和重复项:
$ dpkg -S $(/sbin/ldconfig -p | awk 'NR>1 { print $NF }') 2>/dev/null | sed 's/\: .*$//' | sort -u
akregator
ark
binutils
calligra-libs
comerr-dev
compiz-core
dolphin
e2fslibs:amd64
freeglut3:amd64
gettext
...
答案2
我不确定是否有一种保证的方法可以从包名称中知道一个包是一个“库”(如果这本身就是一个明确的定义)但你可以lib
很容易地找到以以下内容开头和结尾的已安装包:
dpkg -l | awk '($1 == "ii") && ($2 ~ /^lib|lib$/) { print $2 }'
有些软件包包含“lib”,但这些不是库。您可能需要从这些软件包中librarian
排除libreoffice
:
dpkg -l | awk '($1 == "ii") && ($2 ~ /^lib|lib$/) && ($2 !~ /^(libreoffice|librarian)/) { print $2 }'
这仍然会错过python-...
图书馆的匮乏。
答案3
然后 aptitude 来拯救你了:
aptitude search '?and(?section(libs), ~i)'
它显示为:查找包含并且已安装的包libs
(?section
)~i
。
您可以使用它来查找存储库中的所有库:
aptitude search '?section(libs)'
这种方法显然需要资质。
答案4
pkg-config --list-all
pkg-config --list-all | grep <package>