Ruby 如何在ubuntu上安装rfuse?

Ruby 如何在ubuntu上安装rfuse?,ruby,fuse,Ruby,Fuse,已解决-见下文。 我正试图在Ubuntu12.04Vagrant映像上安装gem。在它的状态下,它检查保险丝并失败 我安装了apt-getfuse和fuse-utils,以及/lib/libfuse.2存在。我尝试了以下课程,其中: 复制失败 使用nm验证库中是否存在主函数(我不知道这是否有效) 尝试使用LD\u library\u PATH确保找到库(也不确定这是否有效) 我现在陷入困境,因为我不确定这是如何失败的。它不是在找图书馆吗?如果是,是否没有找到正确的函数?它在哪里找图书馆?我还需要

已解决-见下文。

我正试图在Ubuntu12.04Vagrant映像上安装gem。在它的状态下,它检查保险丝并失败

我安装了
apt-get
fuse
fuse-utils
,以及
/lib/libfuse.2
存在。我尝试了以下课程,其中:

  • 复制失败
  • 使用
    nm
    验证库中是否存在主函数(我不知道这是否有效)
  • 尝试使用
    LD\u library\u PATH
    确保找到库(也不确定这是否有效)
  • 我现在陷入困境,因为我不确定这是如何失败的。它不是在找图书馆吗?如果是,是否没有找到正确的函数?它在哪里找图书馆?我还需要什么其他技术来调试这个

    vagrant@n1:~$ ruby2.1 -rmkmf -e 'have_library("fuse")'
    checking for main() in -lfuse... no
    vagrant@n1:~$ nm -D -C -g /lib/libfuse.so.2 | grep main
    0000000000016080 T cuse_lowlevel_main
    0000000000016570 T fuse_main
    0000000000016840 T fuse_main
    0000000000016860 T fuse_main_compat1
    0000000000016840 T fuse_main_compat2
    0000000000016880 T fuse_main_real
    0000000000016890 T fuse_main_real
    0000000000016830 T fuse_main_real
    0000000000016880 T fuse_main_real_compat22
    0000000000016830 T fuse_main_real_compat25
    vagrant@n1:~$ env LD_LIBRARY_PATH=/lib ruby2.1 -rmkmf -e 'have_library("fuse")'
    checking for main() in -lfuse... no
    
    vagrant@n1:~$ uname -a
    Linux n1 3.2.0-23-generic #36-Ubuntu SMP Tue Apr 10 20:39:51 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
    vagrant@n1:~$ file /lib/libfuse.so.2.8.6
    /lib/libfuse.so.2.8.6: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=0xdb7e3872302adb18b73703be89224938e5575441, stripped
    vagrant@n1:~$ file $(which ruby2.1)
    /usr/bin/ruby2.1: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=0x9a5173cfb87a0bdb27026d7913fcff5729652848, stripped
    
    下面是一个设置我正在测试的机器的文件:

    $script = <<SCRIPT
    
    sudo apt-get update
    sudo apt-get install python-software-properties -y
    sudo apt-add-repository ppa:brightbox/ruby-ng -y
    sudo apt-get update
    sudo apt-get install ruby2.1 ruby2.1-dev fuse fuse-utils -y
    
    SCRIPT
    
    # Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
    VAGRANTFILE_API_VERSION = "2"
    
    Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
      config.vm.box = "hashicorp/precise64"
    
      config.vm.provision "shell", inline: $script
    
      config.vm.define "n1" do |n1|
          n1.vm.hostname = "n1"
          n1.vm.network "private_network", ip: "172.20.20.10"
      end
    end
    
    我尝试了
    ld-lfuse--verbose
    ,并获得了有关失败的更多详细信息,包括它在哪里查找库:

    attempt to open /lib/libfuse.so failed
    attempt to open /lib/libfuse.a failed
    
    这两个都不存在!我不知道为什么不能,但我试着把它符号化
    sudo ln-s/lib/libfuse.so.2/lib/libfuse.so
    ,现在
    ld
    起作用了


    继续gem安装,我还缺少两个库:
    sudoapt-get-install-y libfuse-dev-make
    。通过这些添加,我可以安装和使用gem。

    您的mkmf调用应该在当前目录中生成一个mkmf.log。其中应该详细说明它如何调用gcc,以及到底什么不起作用。您可以提取这些命令并继续向下钻取。

    FWIW适用于我(使用ruby1.8),这让我达到了目的。将更新文章的全部细节。
    attempt to open /lib/libfuse.so failed
    attempt to open /lib/libfuse.a failed