![无法从父目录中找到文件](https://linux22.com/image/1003006/%E6%97%A0%E6%B3%95%E4%BB%8E%E7%88%B6%E7%9B%AE%E5%BD%95%E4%B8%AD%E6%89%BE%E5%88%B0%E6%96%87%E4%BB%B6.png)
如果这里不适合回答这个问题,请原谅
我正在运行带有 Ubuntu 14.04 映像的 Amazon Lightsail VPS,并尝试通过 安装各种软件包npm
。一个特定的软件包安装失败,因为它无法找到文件
/usr/lib/x86_64-linux-gnu/pkgconfig/cairo.pc
当我检查目录时,该文件肯定存在,并且具有预期的内容和适当的权限
user@hostname:/usr/lib/x86_64-linux-gnu$ stat -c "%a %n" ./pkgconfig/cairo.pc
644 ./pkgconfig/cairo.pc
user@hostname:/usr/lib/x86_64-linux-gnu$ locate cairo.pc
/usr/lib/x86_64-linux-gnu/pkgconfig/cairo.pc
/usr/lib/x86_64-linux-gnu/pkgconfig/pangocairo.pc
user@hostname:/usr/lib/x86_64-linux-gnu$ cat ./pkgconfig/cairo.pc
prefix=/usr
exec_prefix=${prefix}
libdir=${prefix}/lib/x86_64-linux-gnu
...
//etc. - excluded for brevity
但有趣的是,当我尝试通过find
它找到文件时,它指出无法从其目录之外找到该文件,即使它在输出中列出(为简洁起见缩短)
user@hostname:/usr/lib/x86_64-linux-gnu/pkgconfig$ find cairo.pc
cairo.pc
user@hostname:/usr/lib/x86_64-linux-gnu/pkgconfig$ cd ..
user@hostname:/usr/lib/x86_64-linux-gnu$ find ./pkgconfig cairo.pc
./pkgconfig
./pkgconfig/gio-2.0.pc
...
./pkgconfig/gmodule-2.0.pc
./pkgconfig/cairo-ft.pc
./pkgconfig/cairo.pc
./pkgconfig/xau.pc
./pkgconfig/cairo-svg.pc
./pkgconfig/gmodule-export-2.0.pc
...
find: `cairo.pc': No such file or directory
这让我相信,文件系统中的文件存在一些问题或权限阻止找到它(例如坏缓存或类似问题),而不是包/包管理器的错误,但老实说,作为一名 Linux 新手,我不知道从哪里开始
任何想法都将不胜感激
答案1
您以错误的方式运行该命令,例如:
find ./pkgconfig cairo.pc
本来应该:
find ./pkgconfig -name cairo.pc
在您的例子中,您要求find
在两个路径./pkgconfig
和cairo.pc
(文件而不是目录)中进行搜索。如果您已完成:
find ./pkgconfig ./another_folder -name cairo.pc
它会cairo.pc
在那两个位置找到,但在您的情况下,您只在pkgconfig
文件夹中搜索,因此find ./pkgconfig -name cairo.pc
使用正确的命令。
请参阅man find
如何使用 find 命令以及这里了解更多解释。