====== 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
===== 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: 8766035d3a1fdb7337e2867ffd49f278dd1fb29bab5a34c87e8b0fa8b0cffa49
jederzeit anzeigen lassen.