答案1
如果您按照说明进行操作,则您已经安装了一个内核源码包,名为linux-source-3.13.0
,例如,通过
sudo apt-get install linux-source-3.13.0
或者
sudo apt-get install linux-source
它安装了一个虚拟包即安装了版本化的包作为依赖项。
完成此操作后,您可以找到您要查找的文件(使用包名称):
dpkg -L linux-source-3.13.0 |grep -F signal.c
并获取该包中名为“signal.c”的任何文件的路径名
如果该包实际上是源代码的 tarball,则您必须提取这些文件,例如使用tar
.在这种情况下,dpkg -L linux-source
只会列出 tarball(并且 grep 不会返回任何内容)。
对于 tarball 的情况,您可以这样做:
tar tvf $(dpkg -L linux-source-3.13.0) |grep -F signal.c
如果它只包含一个文件。但假设你有类似的东西
/usr
/usr/src
/usr/src/linux-patch-3.13-rt.patch.bz2
/usr/src/linux-source-3.13.tar.bz2
/usr/share
/usr/share/doc
/usr/share/doc/linux-source-3.13
/usr/share/doc/linux-source-3.13/copyright
/usr/share/doc/linux-source-3.13/changelog.Debian.gz
/usr/share/doc/linux-source-3.13/README.Debian
那么您要查找的文件将位于“tar.bz2”文件中,所以...
tar tvf $(dpkg -L linux-source-3.13.0|grep -F .tar.bz2) |grep -F signal.c
将显示该 tarball 中“signal.c”的路径名
进一步阅读:
- 我如何知道 Debian 系统上是否“安装”了虚拟软件包?
- 构建你自己的内核(Ubuntu 维基百科)
- 软件包 linux-source(乌班图)