如何判断是否安装了DavFS?

如何判断是否安装了DavFS?

显然这是一个菜鸟问题,但我正在尝试在 Linux 中安装 webdav 文件夹,并尝试判断 davfs 是否已经安装。谷歌搜索显示此命令据称列出了所有已安装的文件系统:

cat /proc/filesystems

问题是,在安装 davfs 之前(屏幕截图中未显示)和安装之后(如图所示)运行该命令,显示了已安装 fs 的完全相同的列表,这确实不是显示 davfs:

在此输入图像描述

有没有更好的方法来显示 davfs 是否确实安装了?

答案1

由于您用于apt安装,因此您可以简单地搜索它:

apt search davfs

davfs2/stable 1.5.5-1 amd64
  mount a WebDAV resource as a regular file system

正如您所看到的,在我的例子中,该包在存储库中找到,但未安装。与例如相反vim

 apt search vim 

vim/stable,now 2:8.1.0875-5 amd64 [installed]
  Vi IMproved - enhanced vi editor

或者(还有更多保存 - 它也适用于不是来自存储库但也通过.deb-files 手动安装的包)用于dpgk列出所有本地并 grep 包名称

dpkg -l | grep davfs

(在我的例子中为空)

dpkg -l | grep vim

ii  vim    2:8.1.0875-5   amd64  Vi IMproved - enhanced vi editor

其中ii表示“已安装”。

答案2

/proc/filesystems仅显示内核支持的文件系统。 DavFS 支持是使用实现的保险丝在用户空间中,因此它不会显示在那里。最好的检查方法可能只是检查mount.davfs二进制文件是否存在(例如使用which)。

答案3

/proc/filesystems只列出内核当前已知的文件系统。但是在 a 上mount(src, dst, fstype, ...),内核将尝试动态加载相应的内核模块(如果可用且尚未加载)。

某些文件系统例如nfsaufs需要帮助程序来设置安装。那将会是mount.fsname。在 Debian bullseye 上,mount当要求使用 挂载 FS 时,该命令所做的第一件事就是按顺序-t fsname查找mount.fsnamein /sbin,/sbin/fs.d和。/sbin/fs

davfs2是在用户空间实现的文件系统。内核驱动程序fusemount.davfs2负责启动用户空间程序并将其连接到fuse.

因此,要检查 a 是否fsname可用,您可以执行以下操作:

has_fs() {
  [ -e "/sbin/mount.$1" ]        || # helper found in /sbin
    [ -e "/sbin/fs.d/mount.$1" ] || # helper found in /sbin/fs.d
    [ -e "/sbin/fs/mount.$1" ]   || # helper found in /sbin/fs
    < /proc/filesystems FS=$1 awk '
      $NF == ENVIRON["FS"] {found = 1; exit}
      END {if (!found) exit 1}'  || # currently available in kernel
    modprobe -c | FS=fs_$1 awk '
      $1 == "alias" && $2 == ENVIRON["FS"] {found = 1; exit}
      END {if (!found) exit 1}'     # available via a kernel module
}

不同系统上挂载助手的搜索路径可能不同。请注意,助手的可用性是一个强有力的指示,但不能保证驱动程序可用(或者您将能够安装该类型的 FS)。

相关内容