Kubo:IPFS 在 GO 中的实现
IPFS 的第一个实现。
Kubo 是第一个 IPFS 实施方案,也是当今使用最广泛的实施方案。实现星际文件系统- 用于内容寻址的 Web3 标准,可与 HTTP 互操作。因此由 IPLD 的数据模型和用于网络通信的 libp2p 提供支持。 Kubo 是用 Go 编写的。
功能集
将 IPFS 节点作为网络服务运行,该网络服务是 LAN 和 WAN DHT 的一部分
用于可信和不可信内容检索的 HTTP 网关( /ipfs
和/ipns
)功能
用于委托路由查找的 HTTP 路由 V1 ( /routing/v1
) 客户端和服务器实现
HTTP Kubo RPC API ( /api/v0
) 用于访问和控制守护进程
基于 ( /api/v0
) RPC API 的命令行界面
用于管理 Kubo 节点的 WebUI
对公共节点运营商的内容屏蔽支持
查看列表
IPFS 是一个全局的、版本化的、点对点的文件系统。它结合了以前系统(例如 Git、BitTorrent、Kademlia、SFS 和 Web)的好创意。它就像一个单一的 BitTorrent 群,交换 git 对象。 IPFS 提供了一个像 HTTP Web 一样简单的接口,但具有内置的永久性。您还可以将世界挂载到 /ipfs。
有关更多信息,请参阅:https://docs.ipfs.tech/concepts/what-is-ipfs/
在打开问题之前,请考虑使用以下位置之一,以确保您在正确的位置打开线程:
此存储库中的 kubo(以前称为 go-ipfs)实现错误。
ipfs/docs issues 中的文档问题。
IPFS设计中的 ipfs/specs 问题。
ipfs/notes问题的新思路探索。
在 IPFS 论坛上提出问题并与社区其他成员会面。
或者与我们聊天。
GitHub 上的里程碑
久保是什么?
什么是IPFS?
下一个里程碑
目录
安全问题
最低系统要求
安装
安装Go
下载并编译IPFS
故障排除
交叉编译
Mac端口
尼克斯
自制
巧克力味
舀
ArchLinux
Gentoo Linux
尼克斯
索鲁斯
开放SUSE
吉克斯
折断
Ubuntu PPA
更新中
使用 ipfs 更新
使用 IPFS 下载版本
码头工人
官方预构建二进制文件
非官方 Linux 软件包
非官方 Windows 软件包
非官方 MacOS 软件包
从源代码构建
入门
用法
一些值得尝试的事情
故障排除
套餐
发展
已实施子系统图
CLI、HTTP-API、架构图
测试
开发依赖
开发者笔记
维护者信息
贡献
执照
请关注SECURITY.md
。
IPFS 可以在大多数 Linux、macOS 和 Windows 系统上运行。我们建议在至少具有 4 GB RAM 和 2 个 CPU 核心的计算机上运行它(kubo 是高度并行的)。在内存较少的系统上,它可能不完全稳定,您需要自行承担风险。
IPFS 的规范下载说明位于:https://docs.ipfs.tech/install/。如果您对 IPFS 开发不感兴趣,强烈建议您遵循这些说明。
官方镜像发布于https://hub.docker.com/r/ipfs/kubo/:
?发布
latest
和release
标签始终指向最新的稳定版本
vN.NN
指向特定的发布标签
这些是生产级图像。
?我们还提供实验性开发人员版本
master-latest
始终指向master
分支的HEAD
master-YYYY-DD-MM-GITSHA
指向master
分支的特定提交
这些标签由开发人员用于内部测试,不适用于最终用户或生产用途。
$ docker pull ipfs/kubo:latest$ docker run --rm -it --net=主机 ipfs/kubo:latest
要自定义节点,请通过-e
或通过在/container-init.d
中安装脚本来传递必要的配置。
了解更多信息 https://docs.ipfs.tech/install/run-ipfs-inside-docker/
官方二进制文件发布于 https://dist.ipfs.tech#kubo:
从那里:
单击页面右侧的蓝色“下载 Kubo”。
打开/解压存档。
将 kubo ( ipfs
) 移动到您的路径( install.sh
可以为您完成)。
如果您无法访问 dist.ipfs.tech,您还可以从以下位置下载 kubo (go-ipfs):
该项目的 GitHub 发布页面
/ipns/dist.ipfs.tech
位于 dweb.link 网关
IPFS 有一个更新工具,可以通过ipfs update
访问。该工具没有与 IPFS 一起安装,以保持该逻辑独立于主代码库。要安装ipfs-update
工具,请在此处下载。
列出 Kubo (go-ipfs) 实现的可用版本:
$ ipfs cat /ipns/dist.ipfs.tech/kubo/versions
然后,要查看上一个命令 ( $VERSION
) 中版本的可用构建:
$ ipfs ls /ipns/dist.ipfs.tech/kubo/$版本
要下载版本的给定构建:
$ ipfs get /ipns/dist.ipfs.tech/kubo/$VERSION/kubo_$VERSION_darwin-386.tar.gz # darwin 32 位构建$ ipfs get /ipns/dist.ipfs.tech/kubo/$VERSION/kubo_ $VERSION_darwin-amd64.tar.gz # darwin 64 位构建$ ipfs get /ipns/dist.ipfs.tech/kubo/$VERSION/kubo_$VERSION_freebsd-amd64.tar.gz # freebsd 64 位构建$ ipfs get / ipns/dist.ipfs.tech/kubo/$VERSION/kubo_$VERSION_linux-386.tar.gz # linux 32位构建$ ipfs get /ipns/dist.ipfs.tech/kubo/$VERSION/kubo_$VERSION_linux-amd64 .tar.gz # linux 64 位 build$ ipfs get /ipns/dist.ipfs.tech/kubo/$VERSION/kubo_$VERSION_linux-arm.tar.gz # linux arm build$ ipfs get /ipns/dist.ipfs. tech/kubo/$VERSION/kubo_$VERSION_windows-amd64.zip # Windows 64 位版本
ArchLinux
Gentoo Linux
尼克斯
索鲁斯
开放SUSE
吉克斯
折断
Ubuntu PPA
# pacman -S 久保
https://wiki.gentoo.org/wiki/Kubo
# 出现-a net-p2p/kubo
https://packages.gentoo.org/packages/net-p2p/kubo
使用纯功能包管理器 Nix,您可以像这样安装 kubo (go-ipfs):
$ nix-env -i kubo
您还可以使用包的属性名称(也是kubo
来安装该包。
Solus 包
$ sudo eopkg install kubo
您还可以通过 Solus 软件中心安装它。
go-ipfs 社区包
go-ipfs 的社区包并没有过时。
不再支持,请参阅 kubo#8688 中的基本原理。
Launchpad 上的 PPA 主页。
sudo add-apt-repository ppa:twdragon/ipfs 须藤apt更新 sudo apt install ipfs-kubo
sudo suecho 'deb https://ppa.launchpadcontent.net/twdragon/ipfs/ubuntu <> main' >> /etc/apt/sources.list.d/ipfsecho 'deb-src https://ppa. launchpadcontent.net/twdragon/ipfs/ubuntu < > main' >> /etc/apt/sources.list.d/ipfsexitsudo apt update sudo apt install ipfs-kubo
其中<
是 Ubuntu 发行版的代号(例如,22.04 LTS 为jammy
)。在首次安装期间,程序包维护脚本可能会自动询问您要使用哪个网络配置文件、CPU 计费模型和/或现有节点配置文件。
注意:此方法也适用于任何兼容的基于 Debian 的发行版,其中包含libc6
,并且 APT 作为包管理器。
巧克力味
舀
不再支持,请参阅 kubo#9341 中的基本原理。
Scoop 在其“额外”存储桶中将 kubo 作为kubo
提供。
PS> 勺桶添加额外内容 PS> 舀安装 kubo
Mac端口
尼克斯
自制
ipfs 包当前指向 kubo (go-ipfs) 并且正在维护中。
$ sudo port install ipfs
在 macOS 中,您可以使用纯功能包管理器 Nix:
$ nix-env -i kubo
您还可以使用包的属性名称(也是kubo
来安装该包。
Homebrew 公式 ipfs 也得到维护。
$ brew install --formula ipfs
kubo 的构建系统需要 Go 和一些标准 POSIX 构建工具:
GNU 使
git
GCC(或其他一些兼容 Go 的 C 编译器)(可选)
要在不使用 GCC 的情况下进行构建,请使用CGO_ENABLED=0
进行构建(例如, make build CGO_ENABLED=0
)。
如果需要更新:下载最新版本的 Go。
您需要将 Go 的 bin 目录添加到$PATH
环境变量中,例如,通过将这些行添加到/etc/profile
(对于系统范围的安装)或$HOME/.profile
:
export PATH=$PATH:/usr/local/go/bin export PATH=$PATH:$GOPATH/bin
(如果遇到问题,请参阅 Go 安装说明)。
$ git clone https://github.com/ipfs/kubo.git $ cd kubo $ make install
或者,您可以运行make build
来构建 go-ipfs 二进制文件(将其存储在cmd/ipfs/ipfs
中),而无需安装它。
注意:如果您收到类似“致命错误:stdlib.h:没有这样的文件或目录”的错误,则说明您缺少 C 编译器。使用CGO_ENABLED=0
重新运行make
或安装 GCC。
针对不同平台的编译就像运行一样简单:
make build GOOS=myTargetOS GOARCH=myTargetArchitecture
有单独的说明可用于在 Windows 上进行构建。
需要git
才能让go get
获取所有依赖项。
包管理器通常包含过时的golang
包。确保go version
报告至少为 1.10。有关如何安装 go 的信息,请参阅上文。
如果您对开发感兴趣,请同时安装开发依赖项。
Shell 命令补全可以使用ipfs commands completion
子命令之一生成。阅读 docs/command-completion.md 了解更多信息。
请参阅 Misc 文件夹,了解如何将 IPFS 连接到 systemd 或您的发行版使用的任何初始化系统。
要开始使用 IPFS,您必须首先在系统上初始化 IPFS 的配置文件,这是通过ipfs init
完成的。有关它所采用的可选参数的信息,请参阅ipfs init --help
。初始化完成后,您可以使用ipfs mount
、 ipfs add
以及任何其他命令来探索!
“ipfs 在本地工作”的基本证明:
echo "hello world" > hello ipfs add hello # This should output a hash string that looks something like: # QmT78zSuBmuS4z925WZfrqQ1qHaJ56DQaTfyMUF7F8ff5o ipfs cat
有关与 Kubo 的编程交互,请参阅我们的 HTTP/RPC 客户端列表。
如果您以前安装过 IPFS,并且在获取新版本时遇到问题,请尝试删除(或备份到其他位置)您的 IPFS 配置目录(默认为 ~/.ipfs)并重新运行ipfs init
。这会将配置文件重新初始化为其默认值,并清除本地数据存储中的任何错误条目。
请将一般问题和帮助请求直接发送到我们的论坛。
如果您认为自己发现了错误,请检查问题列表,如果在那里没有看到您的问题,请通过 Matrix 聊天与我们交谈,或者提交您自己的问题!
请参阅 GO 文档中的 IPFS。
一些可以帮助您开始使用代码库的地方:
主文件:./cmd/ipfs/main.go
CLI 命令:./core/commands/
Bitswap(数据交易引擎):go-bitswap
库文件2p
libp2p:https://github.com/libp2p/go-libp2p
DHT:https://github.com/libp2p/go-libp2p-kad-dht
IPFS: Add
命令揭秘
WIP :这是此特定实现的各个子系统的高级架构图。更新他们的互动方式。欢迎任何有建议的人在这里评论我们如何改进!
起源
描述:点的意思是“可能会消失”。 “旧版”部分是一些命令的薄包装,用于在新系统和旧系统之间进行转换。 “守护进程”图上的灰色部分表明代码都是相同的,只是我们根据是在客户端还是服务器上运行来打开一些部分和关闭一些部分。
make test
如果更改协议缓冲区,则需要安装协议编译器。
在 docs 上查找更多供开发人员使用的文档
Kubo 由造船厂维护。
该存储库是 Shipyard GO Triage 分类的一部分。
发布流程
我们❤️所有贡献者;如果没有你,这个项目就不会是现在这个样子!如果您想提供帮助,请参阅 CONTRIBUTING.md。
该存储库遵循 IPFS 行为准则。
IPFS 社区成员在此处为讨论论坛类别提供 Kubo 支持。
需要 IPFS 本身的帮助吗?了解如何获取帮助和支持,请访问 https://ipfs.tech/help。
该项目根据 Apache 2.0 和 MIT 条款获得双重许可:
Apache 许可证,版本 2.0(LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
MIT 许可证(LICENSE-MIT 或 http://opensource.org/licenses/MIT)