User Tools

Site Tools


fernuni:1914:ori

This is an old revision of the document!


Ori

Installation

Das beschriebene Vorgehen in diesem Artikel wurde auf folgenden Distributionen erfolgreich getestet

  • Debian GNU/Linux 7.8
  • Linux Mint 17.1 Rebecca

Paketquellen holen mit git

$ git clone http://bitbucket.org/orifs/ori.git
Nach »ori« wird geklont
remote: Counting objects: 7078, done.
remote: Compressing objects: 100% (2214/2214), done.
remote: Total 7078 (delta 5553), reused 6294 (delta 4828)
Objekte werden empfangen: 100% (7078/7078), 1.44 MiB | 407.00 KiB/s, done.
Unterschiede werden aufgelöst: 100% (5553/5553), done.
Verbundenheit wird überprüft … Fertig.

Abhängigkeiten laut README-Datei

  • C++11 (Required)
  • openssl (tested with 1.0.1+) (Required)
  • boost headers (tested with 1.48+) (Required)
  • libevent 2.0 (Required)
  • FUSE (API Version 26+)
  • liblzma (for LZMA compression)
  • mDNSResponder (for Multipull Support)
  • libxml2 (S3 Backup)
  • libedit (oridbg only)
$ aptitude install g++ libboost-dev libevent-dev fuse avahi-daemon libxml2-dev libedit-dev

Außerdem noch folgende Pakete nachinstallieren

$ aptitude install pkg-config scons uuid-dev libfuse-dev libssl-dev

Dann kompilieren

$ scons
...
scons: done building targets.
# scons install 
...
scons: Building targets ...
Install file: "build/ori/ori" as "/usr/local/bin/bin/ori"
Install file: "build/oridbg/oridbg" as "/usr/local/bin/bin/oridbg"
Install file: "build/orifs/orifs" as "/usr/local/bin/bin/orifs"
Install file: "build/orisync/orisync" as "/usr/local/bin/bin/orisync"
Install file: "docs/ori.1" as "/usr/local/bin/share/man/man1/ori.1"
Install file: "docs/oridbg.1" as "/usr/local/bin/share/man/man1/oridbg.1"
Install file: "docs/orifs.1" as "/usr/local/bin/share/man/man1/orifs.1"
Install file: "docs/orisync.1" as "/usr/local/bin/share/man/man1/orisync.1"

Leider werden bin ausführbaren Dateien in einem falschen Pfad abgelegt (bin ist doppelt). Die Dateien müssen daher von Hand verschoben werden.

# cd /usr/local/bin && mv bin/* . && rmdir bin

Achtung: Unter Debian Wheezy hat nur der Benutzer root Zugriff auf die die Gerätedatei /dev/fuse. Dies muss geändert werden.

# chgrp fuse /dev/fuse
# chmod g+rw /dev/fuse

Danach muss der Benutzer noch der Gruppe fuse hinzugefügt werden

# usermod -aG fuse <Benutzername>

Anwendung

Anbindung eines entfernten Repositories

Auf dem Ursprungs-Peer muss zunächst ein neues, leeres Ori-Repository erzeugt werden. Dazu erstellt man ein Verzeichnis mit demselben Namen, welches das Repository erhalten soll. Im Anschluss wird das Repository erzeugt

$ mkdir ~/Fernuni/Seminar1914
$ cd ~/Fernuni
$ ori newfs Seminar1914

Zur Überprüfung kann man sich alle Repositories anzeigen lassen

$ ori list 
Name                            File System ID
Seminar1914                     afd8cf79-84d8-4a98-bf8e-984564c51967

Nach dem Mounten kann man Dateien in das Repository hineinkopieren

$ cd ~/Fernuni
$ orifs Seminar1914
$ mount 
...
orifs on /home/martin/Fernuni/Seminar1914 type fuse.orifs (rw,nosuid,nodev,user=martin)

Möchte man nun auf einem zweiten Knoten eine neue Replik anlegen, wird der entsprechende Prozess mit

$ ori replicate martin@ori.mb-oss.de:Seminar1914

In diesem Fall liegt das zu replizierende Repository auf einem Remote-Server mit dem URL ori.mb-oss.de. Die Daten werden via SSH-Protokoll übertragen. Das Repository wird automatisch angelegt. War die Replizierung erfolgreich, kann das Dateisystem analog zum ersten Peer eingehängt werden.

$ mkdir ~/Fernuni/Seminar1914 && cd ~/Fernuni
$ orifs Seminar1914

Änderungen übertragen

Remote -> local

Werden auf dem Remote Repository neue Dateien hinzugefügt, müssen die Änderungen zunächst committed werden. Dazu erstellt man zunächst an der Quelle einen Snapshot

$ ori snapshot
Committed 8766035d3a1fdb7337e2867ffd49f278dd1fb29bab5a34c87e8b0fa8b0cffa49

Anschließend können diese mit einer pull Anforderung auf den lokalen Rechner übertragen werden

$ ori pull
Pulled up to 8766035d3a1fdb7337e2867ffd49f278dd1fb29bab5a34c87e8b0fa8b0cffa49
$ ori checkout 8766035d3a1fdb7337e2867ffd49f278dd1fb29bab5a34c87e8b0fa8b0cffa49
Checkout success!

Die angezeigt Nummer ist der HEAD. Man kann sich den aktuellen HEAD mit dem Kommando

--- Repository ---
Root: /home/martin/.ori/Seminar1914.ori
UUID: afd8cf79-84d8-4a98-bf8e-984564c51967
Version: ORI1.1
HEAD: 07ec371715c95f7c373880482ae4e42e311e211768cbe74eb5bd85dc06ad1fe0

jederzeit anzeigen lassen.

fernuni/1914/ori.1433860573.txt.gz · Last modified: 2015/06/09 14:36 by Martin