在哪里可以找到已安装包的位置?

在哪里可以找到已安装包的位置?

我运行了以下命令但不知道它安装在哪里

sudo apt-get install opencl-headers

我以为它放在这里:/usr/include

但它可能已经到这里:/usr/include/x86_64-linux-gnu 我尝试了以下两种方法

-DOPENCL_INCLUDE_DIRS=/usr/include/x86_64-linux-gnu  

我得到了重复的定义,例如 time_t 和 time64_t,因此看起来上述两个都不是 opencl 的实际包含

答案1

我们来看一下软件包描述:

$ apt 显示 opencl 标头

... 此元包依赖于由 Khronos Group Inc. 发布的提供 OpenCL API 的 C 和 C++ 头文件的包。相应的规范和文档可在 Khronos 网站上找到。...

A元包本身不提供任何文件。相反,依赖项提供文件。我们必须查找此元包的依赖项:

$ apt depends opencl-headers

opencl-headers
  Depends: opencl-c-headers (= 2.2~2019.01.17-g49f07d3-1)
  Depends: opencl-clhpp-headers (>= 2.0.10)

所以你必须看看那些所提供文件的包。

在您知道要查看哪些包之后,dpkg 有一个方便的功能可以列出任何已安装包提供的文件。

man dpkg

      -L, --listfiles package-name...
          List files installed to your system from package-name.

例如,以下是该hello包安装的文件:

$ dpkg -L hello

/.
/usr
/usr/bin
/usr/bin/hello
/usr/share
/usr/share/doc
/usr/share/doc/hello
/usr/share/doc/hello/NEWS.gz
/usr/share/doc/hello/changelog.Debian.gz
/usr/share/doc/hello/copyright
/usr/share/info
/usr/share/info/hello.info.gz
/usr/share/man
/usr/share/man/man1
/usr/share/man/man1/hello.1.gz

为了好玩,我们来反向推导并确定哪个包提供了特定的文件:

      -S, --search filename-search-pattern...
          Search for a filename from installed packages.

在此示例中,您可以看到该文件由包提供hello

$ dpkg -S /usr/share/doc/hello/NEWS.gz

hello: /usr/share/doc/hello/NEWS.gz

相关内容