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