README.md 3.73 KB
Newer Older
1
# ipfs implementation in go. [![GoDoc](https://godoc.org/github.com/jbenet/go-ipfs?status.svg)](https://godoc.org/github.com/jbenet/go-ipfs) [![Build Status](https://travis-ci.org/jbenet/go-ipfs.svg?branch=master)](https://travis-ci.org/jbenet/go-ipfs)
Juan Batiz-Benet's avatar
Juan Batiz-Benet committed
2 3 4 5 6 7 8

See: https://github.com/jbenet/ipfs

Please put all issues regarding IPFS _design_ in the
[ipfs repo issues](https://github.com/jbenet/ipfs/issues).
Please put all issues regarding go IPFS _implementation_ in [this repo](https://github.com/jbenet/go-ipfs/issues).

Juan Batiz-Benet's avatar
Juan Batiz-Benet committed
9 10
## Install

11
[Install Go 1.2+](http://golang.org/doc/install). Then:
Juan Batiz-Benet's avatar
Juan Batiz-Benet committed
12 13

```
14
go get github.com/jbenet/go-ipfs/cmd/ipfs
Chas's avatar
Chas committed
15 16
cd $GOPATH/src/github.com/jbenet/go-ipfs/cmd/ipfs
go install
Juan Batiz-Benet's avatar
Juan Batiz-Benet committed
17 18
```

Juan Batiz-Benet's avatar
Juan Batiz-Benet committed
19
NOTES:
20

21 22 23 24
* `git` and mercurial (`hg`) are required in order for `go get` to fetch
all dependencies.
* Package managers often contain out-of-date `golang` packages.
  Compilation from source is recommended.
Juan Batiz-Benet's avatar
Juan Batiz-Benet committed
25 26
* go-ipfs depends on cgo. In case you've disabled cgo, you'll need to
  compile with `CGO_ENABLED=1`
27
* If you are interested in development, please install the development
Jeromy's avatar
Jeromy committed
28
dependencies as well.
Juan Batiz-Benet's avatar
Juan Batiz-Benet committed
29 30 31
* **WARNING: older versions of OSX FUSE (for Mac OS X) can cause kernel panics when mounting!**
  We strongly recommend you use the [latest version of OSX FUSE](http://osxfuse.github.io/).
  (See https://github.com/jbenet/go-ipfs/issues/177)
Juan Batiz-Benet's avatar
Juan Batiz-Benet committed
32

Chas Leichner's avatar
Chas Leichner committed
33

Juan Batiz-Benet's avatar
Juan Batiz-Benet committed
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
## Usage

```
ipfs - global versioned p2p merkledag file system

Basic commands:

    add <path>    Add an object to ipfs.
    cat <ref>     Show ipfs object data.
    ls <ref>      List links from an object.
    refs <ref>    List link hashes from an object.

Tool commands:

    config        Manage configuration.
    version       Show ipfs version information.
    commands      List all available commands.

Advanced Commands:

    mount         Mount an ipfs read-only mountpoint.
55
    serve         Serve an interface to ipfs.
Juan Batiz-Benet's avatar
Juan Batiz-Benet committed
56 57 58

Use "ipfs help <command>" for more information about a command.
```
59

60
## Getting Started
Jeromy's avatar
Jeromy committed
61 62 63 64
To start using ipfs, you must first initialize ipfs's config files on your
system, this is done with `ipfs init`. See `ipfs help init` for information on
arguments it takes. After initialization is complete, you can use `ipfs mount`,
`ipfs add` and any of the other commands to explore!
65 66


Jeromy's avatar
Jeromy committed
67 68
NOTE: if you have previously installed ipfs before and you are running into
problems getting it to work, try deleting (or backing up somewhere else) your
Juan Batiz-Benet's avatar
Juan Batiz-Benet committed
69
config directory (~/.go-ipfs by default) and rerunning `ipfs init`.
70 71


72 73
## Contributing

Jeromy's avatar
Jeromy committed
74
go-ipfs is MIT licensed open source software. We welcome contributions big and
Juan Batiz-Benet's avatar
Juan Batiz-Benet committed
75
small! Please make sure to check the
Jeromy's avatar
Jeromy committed
76 77
[issues](https://github.com/jbenet/go-ipfs/issues). Search the closed ones
before reporting things, and help us with the open ones.
78 79 80

Guidelines:

Juan Batiz-Benet's avatar
Juan Batiz-Benet committed
81
- see the [dev pseudo-roadmap](dev.md)
82 83 84 85 86 87 88 89 90
- please adhere to the protocol described in [the main ipfs repo](https://github.com/jbenet/ipfs) and [paper](http://static.benet.ai/t/ipfs.pdf).
- please make branches + pull-request, even if working on the main repository
- ask questions or talk about things in [Issues](https://github.com/jbenet/go-ipfs/issues) or #ipfs on freenode.
- ensure you are able to contribute (no legal issues please-- we'll probably setup a CLA)
- run `go fmt` before pushing any code
- run `golint` and `go vet` too -- some things (like protobuf files) are expected to fail.
- if you'd like to work on ipfs part-time (20+ hrs/wk) or full-time (40+ hrs/wk), contact [@jbenet](https://github.com/jbenet)
- have fun!

91 92
## Todo

93
IPFS is nearing an alpha release. Things left to be done are all marked as [Issues](https://github.com/jbenet/go-ipfs/issues)
94

Chas Leichner's avatar
Chas Leichner committed
95 96 97
## Development Dependencies

If you make changes to the protocol buffers, you will need to install the [protoc compiler](https://code.google.com/p/protobuf/downloads/list).
98 99 100 101

## License

MIT