j3ll3,在 Ubuntu(或任何基于 DPKG 的 Linux 操作系统)中,您可以通过键入
来询问“
提供什么软件包 XYZ”的问题
dpkg -S /path/to/XYZ
因此,例如,在 Ubuntu 9.10 中,
dpkg -S /usr/lib/python2.5/lib-dynload/gdbm.so
返回
python-gdbm: /usr/lib/python2.5/lib-dynload/gdbm.so
您可以通过键入了解更多关于 python-gdbm 包的信息
apt-cache show python-gdbm
它说 python-gdbm 提供“对 Python 的 GNU dbm 数据库支持”。
也许更有趣的是,如果你输入
dpkg --listfiles python-gdbm
您会看到 python-gdbm 安装的所有文件的列表:
...
/usr/lib/python2.4
/usr/lib/python2.4/lib-dynload
/usr/lib/python2.4/lib-dynload/gdbm.so
/usr/lib/python2.5
/usr/lib/python2.5/lib-dynload
/usr/lib/python2.5/lib-dynload/gdbm.so
/usr/lib/python2.6
/usr/lib/python2.6/lib-dynload
/usr/lib/python2.6/lib-dynload/gdbm.so
...
所以看起来这个单独的包安装了 3 个 .so 库,每个版本的 python 一个。
Python2.6是Ubuntu 9.10默认的python版本,但也可以安装
python2.4、2.5 和/或 3.0。除非你这样做,否则只使用 /usr/lib/python2.6/lib-dynload/gdbm.so ,其他的只是在浪费空间。
由于 python2.4、2.5、3.0 中不需要的文件不是很大,包维护者可能觉得为每个版本的 python 提供一个包而不是一个包更容易。
但是,除非您知道如何修复未来的 apt-get 错误,否则我建议不要手动删除任何由 Ubuntu 中的软件包安装的文件。