github.com/zignig/go-ipfs@v0.0.0-20141111235910-c9e5fdf55a52/README.md (about) 1 # ipfs implementation in go. 2 [![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) 3 4 Ipfs is a global, versioned, peer-to-peer filesystem. It combines good ideas from 5 Git, BitTorrent, Kademlia, SFS, and the Web. It is like a single bittorrent swarm, 6 exchanging git objects. IPFS provides an interface as simple as the HTTP web, but 7 with permanence built in. You can also mount the world at /ipfs. 8 9 For more info see: https://github.com/jbenet/ipfs 10 11 Please put all issues regarding IPFS _design_ in the 12 [ipfs repo issues](https://github.com/jbenet/ipfs/issues). 13 Please put all issues regarding go IPFS _implementation_ in [this repo](https://github.com/jbenet/go-ipfs/issues). 14 15 ## Install 16 17 [Install Go 1.3+](http://golang.org/doc/install). Then: 18 19 ``` 20 go get github.com/jbenet/go-ipfs/cmd/ipfs 21 cd $GOPATH/src/github.com/jbenet/go-ipfs/cmd/ipfs 22 go install 23 ``` 24 25 NOTES: 26 27 * `git` is required in order for `go get` to fetch 28 all dependencies. 29 * Package managers often contain out-of-date `golang` packages. 30 Compilation from source is recommended. 31 * If you are interested in development, please install the development 32 dependencies as well. 33 * *WARNING: older versions of OSX FUSE (for Mac OS X) can cause kernel panics when mounting!* 34 We strongly recommend you use the [latest version of OSX FUSE](http://osxfuse.github.io/). 35 (See https://github.com/jbenet/go-ipfs/issues/177) 36 37 38 ## Usage 39 40 ``` 41 ipfs - global versioned p2p merkledag file system 42 43 Basic commands: 44 45 init Initialize ipfs local configuration. 46 add <path> Add an object to ipfs. 47 cat <ref> Show ipfs object data. 48 ls <ref> List links from an object. 49 refs <ref> List link hashes from an object. 50 51 Tool commands: 52 53 config Manage configuration. 54 update Download and apply go-ipfs updates. 55 version Show ipfs version information. 56 commands List all available commands. 57 58 Advanced Commands: 59 60 mount Mount an ipfs read-only mountpoint. 61 serve Serve an interface to ipfs. 62 net-diag Print network diagnostic 63 64 Plumbing commands: 65 66 block Interact with raw blocks in the datastore 67 object Interact with raw dag nodes 68 69 70 Use "ipfs help <command>" for more information about a command. 71 ``` 72 73 ## Getting Started 74 To start using ipfs, you must first initialize ipfs's config files on your 75 system, this is done with `ipfs init`. See `ipfs help init` for information on 76 the optional arguments it takes. After initialization is complete, you can use 77 `ipfs mount`, `ipfs add` and any of the other commands to explore! 78 79 ### Some things to try 80 81 Basic proof of 'ipfs working' locally: 82 83 echo "hello world" > hello 84 ipfs add hello 85 # This should output a hash string that looks something like: 86 # QmT78zSuBmuS4z925WZfrqQ1qHaJ56DQaTfyMUF7F8ff5o 87 ipfs cat <that hash> 88 89 90 ### Troubleshooting 91 If you have previously installed ipfs before and you are running into 92 problems getting a newer version to work, try deleting (or backing up somewhere 93 else) your config directory (~/.go-ipfs by default) and rerunning `ipfs init`. 94 This will reinitialize the config file to its defaults and clear out the local 95 datastore of any bad entries. 96 97 For any other problems, check the [issues list](http://github.com/jbenet/go-ipfs/issues) 98 and if you dont see your problem there, either come talk to us on irc (freenode #ipfs) or 99 file an issue of your own! 100 101 102 ## Contributing 103 104 go-ipfs is MIT licensed open source software. We welcome contributions big and 105 small! Please make sure to check the 106 [issues](https://github.com/jbenet/go-ipfs/issues). Search the closed ones 107 before reporting things, and help us with the open ones. 108 109 Guidelines: 110 111 - see the [dev pseudo-roadmap](dev.md) 112 - 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). 113 - please make branches + pull-request, even if working on the main repository 114 - ask questions or talk about things in [Issues](https://github.com/jbenet/go-ipfs/issues) or #ipfs on freenode. 115 - ensure you are able to contribute (no legal issues please-- we'll probably setup a CLA) 116 - run `go fmt` before pushing any code 117 - run `golint` and `go vet` too -- some things (like protobuf files) are expected to fail. 118 - 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) 119 - have fun! 120 121 ## Todo 122 123 IPFS is nearing an alpha release. Things left to be done are all marked as [Issues](https://github.com/jbenet/go-ipfs/issues) 124 125 ## Development Dependencies 126 127 If you make changes to the protocol buffers, you will need to install the [protoc compiler](https://code.google.com/p/protobuf/downloads/list). 128 129 ## License 130 131 MIT