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