====== 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.