资讯专栏INFORMATION COLUMN

IPFS安装与概览

leanxi / 1759人阅读

摘要:安装与概览由于我使用的实现为,所以首先要安装配置环境。六安装辅助工具和,前者是一个桌面客户端,后者是一个浏览器插件,可以在及等浏览器上安装。你可以新开一个终端使用下等功能好了,本次对的安装配置到此结束,后续会更新更多内容。

IPFS安装与概览

由于我使用的IPFS实现为go-ipfs,所以首先要安装配置Golang环境。

我使用的系统为Ubuntu18.04,后面所有操作均在此系统下完成,下面的教程改自学长给的文档。

本文允许转载,转载前请私信我,并且转载发布要附带源地址以及我的ID。

如你发现本文有错误,可评论私信告知。

一、安装Go

下载最新的Go语言版本,目前我用的版本为1.11.1,从官网下载时可能需要挂梯子,官网下载地址为golang下载。

下好linux版本的二进制文件后,将其解压至/usr/local目录下(你也可以解压到其他地方,只要把path设置好)

sudo tar xf go1.11.1.linux-amd64.tar.gz -C /usr/local

在/home目录,创建一个go目录,用做gopath

mkdir ~/go

配置好路径和环境,对/etc/profile和~/.zshrc(如果你用bash就是~/.bashrc)进行操作

$sudo vim /etc/profile
export    GOROOT=/usr/local/go
export    GOPATH=/HOMEPATH/go    
export    PATH=$PATH:$GOROOT/bin:$GOPATH/bin
$source /etc/profile
$vim ~/.zshrc
export  GOROOT=/usr/local/go                                                
export  GOPATH=/home/xcshuan/go                                             
export  PATH=$PATH:$GOROOT/bin:$GOPATH/bin
$source ~/.zshrc

看go语言是否安装成功

$go version
go version go1.11.1 linux/amd64

二、安装IPFS

下载IPFS的go实现源码

go get -u github.com/ipfs/go-ipfs

进入源码目录编译安装

cd ~/go/src/github.com/ipfs/go-ipfs
make install

Note1:若是⼀直处于下载gx,连接ipfs.io,可以架梯子,或者在/etc/hosts中添加

209.94.78.78 ipfs.io

Note2: 编译的过程会在~/go/src/gx/ipfs⽬录下,下载很多包,所以第⼀次编译过程⽐较⻓

Note3: 遇到golang.org/x/yyyy包下载超时,可以在github.com/golang下载相应的包后放在~/go/src/golang.org/x/下⾯

查看IPFS是否安装成功,在终端输入即可看到帮助信息

$ipfs
USAGE
  ipfs - Global p2p merkle-dag filesystem.

  ipfs [--config= | -c] [--debug= | -D] [--help=] [-h=] [--local= | -L] [--api=]  ...

SUBCOMMANDS
  BASIC COMMANDS
    init          Initialize ipfs local configuration
    add     Add a file to IPFS
    cat      Show IPFS object data
    get      Download IPFS objects
    ls       List links from an object
    refs     List hashes of links from an object
  
  DATA STRUCTURE COMMANDS
    block         Interact with raw blocks in the datastore
    object        Interact with raw dag nodes
    files         Interact with objects as if they were a unix filesystem
    dag           Interact with IPLD documents (experimental)
  
  ADVANCED COMMANDS
    daemon        Start a long-running daemon process
    mount         Mount an IPFS read-only mountpoint
    resolve       Resolve any type of name
    name          Publish and resolve IPNS names
    key           Create and list IPNS name keypairs
    dns           Resolve DNS links
    pin           Pin objects to local storage
    repo          Manipulate the IPFS repository
    stats         Various operational stats
    p2p           Libp2p stream mounting
    filestore     Manage the filestore (experimental)
  
  NETWORK COMMANDS
    id            Show info about IPFS peers
    bootstrap     Add or remove bootstrap peers
    swarm         Manage connections to the p2p network
    dht           Query the DHT for values or peers
    ping          Measure the latency of a connection
    diag          Print diagnostics
  
  TOOL COMMANDS
    config        Manage configuration
    version       Show ipfs version information
    update        Download and apply go-ipfs updates
    commands      List all available commands
    cid           Convert and discover properties of CIDs
  
  Use "ipfs  --help" to learn more about each command.
  
  ipfs uses a repository in the local file system. By default, the repo is
  located at ~/.ipfs. To change the repo location, set the $IPFS_PATH
  environment variable:
  
    export IPFS_PATH=/path/to/ipfsrepo
  
  EXIT STATUS
  
  The CLI will exit with one of the following values:
  
  0     Successful execution.
  1     Failed executions.
$ipfs version
ipfs version 0.4.18-dev

可见目前ipfs还不是正式版

三、安装zsh

zsh是比bash要好用许多的,用OhMyZsh来傻瓜式安装,在命令行下输入以下语句然后输入密码即可。

$sudo apt install zsh
$sh -c "$(wget https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"

然后安装一些插件,

 $vim ~/.zshrc
 //找到下面这一句
 plugins=(
    git
)
//将其修改为
plugins=(
 git extract last-working-dir zsh-autosuggestions
 wd zsh-syntax-highlighting
 )

安装autojump,这是一个十分强大的目录跳转插件,建议安装,安装流程如下

$sudo apt-get install autojump
$cd
$git clone https://github.com/joelthelion/autojump.git
$cd autojump
$python ./install.py 
//最后会有一个提示,让你把那句话复制到~/.zshrc里去,每个人都不一样
vim ~/zshrc
复制刚刚那段到最后
source ~/.zshrc
四、编程环境

编辑器 or IDE

可以使用微软的VScode或者jetbrain的Goland来编辑源码,我使用的是VScode

在VScode里安装Go插件,打开一个.go文件VScode会提示你安装一些Go的插件,这些插件有助于源码阅读编辑,建议安装,但是其中有几个会安装失败,此时需要架梯子进行,如果依然失败,在架梯子的前提下,将VScode里的安装命令复制到终端执行,即可成功安装,失败可多次尝试。

安装zsh,zsh比自带的bash要好用好看很多,有很多插件,建议用OhMyZsh安装,教程自查,Github上有一个zsh的ipfs补全插件,可以选择安装,如果用bash的话,可以在~/go/src/github.com/ipfs/go-ipfs/misc/completion目录下找到ipfs-completion.bash,把这个文件复制到~/.ipfs,然后在home目录新建.bash_completion文件,在文件里加上source ~/.ipfs/ipfs-completion.bash这句,即可在终端补全IPFS指令。

五、简化代码

安装完IPFS后,我们可以看到在$GOPATH/src下面有两个文件夹和ipfs有关,分别是~/go/src/github.com/ipfs和~/go/src/gx/ipfs,第一个为主ipfs文件夹,后一个是由许多包组成的文件夹,后一个为前一个提供底层支持,诸如文件仓库的管理,网络协议之类的都在后一个文件夹,而命令行界面在第一个文件夹。

进入~/go/src/gx/ipfs文件夹,我们发现里面都是Qm开头编码命名的文件夹,再点进去才能看到如go-libp2p-nat的正常文件夹名,Qm编码文件夹很影响代码阅读,我们可以删去它。

在前面make install成功以后,首先终端进入go/src/gx/ipfs和go/src/github.com/ipfs/go-ipfs两个文件夹中运⾏

git init 
git add. 
git commit -m "begin" --allow-empty

这样能保证出问题还可以git reset --hard回滚回去。

go/src/gx/ipfs⽬目录下,将Qmxxx目录中的内容移动出来

cd go/src/gx/ipfs
cp -r */* . 
mkdir -p ../bak
mv Qm../bak 

使用通配符,用VScode全局替换所有代码中的“gx/ipfs/Qmxxx/yy”为“gx/ipfs/yy”(否则go-ipfs找不到修改后的package了),包括go/src/gx/ipfs和go/src/github.com/ipfs/go-ipfs在vscode中使用replace功能,这两个文件夹下的所有文件都得替换。

"gx/ipfs/Qm.*?/
替换为
"gx/ipfs/ 

注意1,VScode默认未开启全局搜索功能,请百度开启方法。

注意2,请使用正则模式查找替换

注意3,此次替换设计几千次正则查找,速度非常慢,请耐心等待。

修改go/src/github.com/ipfs/go-ipfs⽬目录下的Rules.mk,注释掉下⾯面三⾏

#include mk/gx.mk
...
#deps: gx-deps
#.PHONY: deps

在go/src/github.com/ipfs/go-ipfs目录下make install编译通过

此时新建一个工作区,讲gx/ipfs和go-ipfs两个文件夹都放入工作区中,方便代码阅读编辑。

六、安装辅助工具

ipfs-desktop和IPFS-companion,前者是一个桌面客户端,后者是一个浏览器插件,可以在firefox、Chrome及Safari等浏览器上安装。

七、使用测试

首先终端运行ipfs init

$ipfs init

ipfs就会默认新建一个~/.ipfs文件夹,里面会存一些信息,代表你这个节点已初始化成功

$cd ~/.ipfs
$tree
├── api
├── blocks(文件夹)
├── config
├── datastore(文件夹)
├── datastore_spec
├── ipfs-completion.bash
├── keystore(文件夹)
└── version

然后运行ipfs daemon即可启动ipfs的驻留程序

在浏览器打开http://localhost:5001/webui或者使用ipfs companion可以查看一些内容,如下图所示

可以开一个终端执行ipfs id查看自己节点的信息。

$ipfs id
{
    "ID": "Qme**Fp",
    "PublicKey": "CAASpgI**AAE=",
    "Addresses": [
        "/ip4/127.0.0.1/tcp/4001/ipfs/Qme**5hKrFp",
        "/ip4/192.168.1.125/tcp/4001/ipfs/Qme**T5hKrFp",
        "/ip6/::1/tcp/4001/ipfs/Qme**T5hKrFp",
        "/ip4/222.20.72.127/tcp/4001/ipfs/Qme**qKT5hKrFp"
    ],
    "AgentVersion": "go-ipfs/0.4.18-dev/29**961",
    "ProtocolVersion": "ipfs/0.1.0"
}

你可以新开一个终端使用下ipfs add、ipfs get、ipfs cat、ipfs block put、ipfs block get等功能

好了,本次对ipfs的安装配置到此结束,后续会更新更多内容。

IPFS官方文档
go-ipfs实现

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/24377.html

相关文章

  • 基于以太坊的视频直播平台 Livepeer白皮书中文概览

    摘要:说明的视频片段分发现在没做出什么成果作者还提了一句,协议有望成为直播内容的传播协议。仿佛也没能掩饰住不知道怎么分发视频片段的尴尬说了这么多,看了代码发现视频片段还是通过分发总结最终将建立一个可扩展的,即用即付的直播网络 Background Livepeer旨在构建带有激励机制的视频直播分布式网络 Blockchain 以太坊 智能合约和交易基于Ethereum以太坊网络 DP...

    Eric 评论0 收藏0
  • 沙利文发布首个2021去中心化云计算市场趋势概览 安迈云布局切中未来趋势_云资讯

    摘要:针对这一新的技术趋势,会上来自弗若斯特沙利文高级分析师头豹研究院副理事贾雁发布了行业首个去中心化云计算市场趋势全面分析了当前去中心化市场的规模和走势。基础架构作为整个环境的底层,通过去中心化能够更好的保护每个人的隐私安全和数据安全。 在刚刚结束的万物新生 云生多态 2021Web 3.0云响力峰会上分布式计算、分布式存储以及去中心化技术成为了整场关注的焦...

    ACb0y 评论0 收藏0
  • IPFS 使用全记录

    摘要:通常的做法是分享者将文件用接收者的公钥加密,接收者从网络下载后用私钥解密。而在命令的完整形式是注意其中的,如果不带这个参数,那么久表示使用默认的也就是节点。 IPFS是什么 IPFS(InterPlanetary File System)是一个内容寻址、版本化、点对点的分布式文件系统。 内容寻址 - 文件不是以URL寻址,而是根据文件内容的Hash值寻址,一旦内容确定,文件地址也就确...

    yagami 评论0 收藏0
  • 【董天一】如何在IPFS里面上传一张图片

    摘要:之前有好几人问过小编,想在里面上传一张图片。如何做今天小编就讲一下如何在里面上传下载文件。这个时候你可以在浏览器里面输入你的哈希值就可以看到你的文件了,比如,这个小编刚才上传的文件。 作者简介:董天一 ,IPFS/Filecoin中国区技术布道人 ,《IPFS指南》作者。毕业于北京大学软件与微电子学院曾担任甲骨文亚洲研发中心(中国)数据库开发工程师。资深区块链技术开发者,现致力于IPF...

    awesome23 评论0 收藏0

发表评论

0条评论

leanxi

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<