Git von ipkg auf Synocommunity umstellen

By | 20. Februar 2015

Einleitung

Nach einer Aktualisierung des Synology NAS funktionieren in der Regel weder ipkg noch alle per ipkg installierten Pakete. Dies liegt daran, dass bei der ipkg-Installation oft mit symbolischen Links gearbeitet wird, die leider ein Update nicht überstehen (http://www.synology-wiki.de/index.php/IPKG). Auch das git-Paket ist bei mir immer betroffen. Seit kurzem gibt es nun auch ein git-Paket der Synocommunity, das sich über die DSM-Paketverwaltung installieren lässt. Das heartbleed-Update des NAS ist nun ein willkommener Anlass, die git-Installation umzustellen.

Wichtig:

  • Die folgende Anleitung, setzt voraus dass git schon einmal lief, ein gituser auf dem NAS existiert, openSSL installiert ist und läuft
  • Die genannten Pfade gehen von einem Synology NAS aus und einer git-Installation mit ipkg aus. git liegt dann unter /opt/bin/git, nach der unten beschrieben Installationsprozedur liegt git dann unter /usr/local/git/bin
  • Ab DSM 4.3 gibt es ein offizielles git-Paket von Synology zur einfachen Installation über die Paketverwaltung

Installation prüfen

Als root auf dem NAS anmelden (dazu musss SSH aktiviert werden):

ssh SERVERIP -l root

Zuerst nachprüfen, ob ipkg vorhanden ist:

ls /opt

Wenn das Verzeichnis nicht existiert wurde der symbolische Link gelöscht. Deshalb prüfen, ob ipkg generell noch auf dem Volume ist:

ls /volume1/@optware/bin

Hier sollte ipkg auftauchen.

Den symobolischen Link neu setzen:

ln -s /volume1/@optware /opt

Datei /root/.profile und /etc/rc.local überprüfen, NAS neu starten: siehe http://www.jufer.info/projekte/synology_nas/restore_ipkg_after_dsm_upgrade

Jetzt prüfen ob git per ipkg installiert wurde:

/opt/bin/ipkg list_installed

Hier muss git auftauchen. git nun deinstallieren:

/opt/bin/ipkg remove git

git ist nun deinstalliert. ipkg sollte aber auf dem NAS bleiben, weil es für spätere Installtionen nützlich ist.

Git installieren über synocommunity

Nun kan man versuchen, über die eigene Programmier-IDE wie Eclipse oder Netbeans oder Git-GUI einen Push auf das git-repository zu starten. Wenn das klappt – Gratulation!

“git-upload-pack” Fehler beheben

Wenn man Pech hat, meldet die IDE: “git-upload-pack: not found”.  Das Problem ist oft ein Fehler in der PATH-Angabe – ausgelöst durch einen Zugriff auf den Server mit SSH. PATH sorgt dafür, dass Dateien direkt ohne ihren kompletten Pfad aufgerufen werden können. Meldet sich der git-client von außen am NAS per SSH an, kennt er die korrekten Pfade für git und git-upload-pack nicht. Deshalb muss der Pfad auf dem Server richtig gesetzt werden.

Dafür gibt es unter UNIX mehrere Möglichkeiten, so hat z. B. jeder User auf einem UNIX-System in der Datei .profile eine Pfadangabe. Wenn wir uns also mit einem User auf dem NAS anmelden, muss der Pfad für diesen User das Verzeichnis auf das git-upload-pack enthalten. Erschwerend kommt bei der hinzu, dass wir uns in der Regel bei git per SSH auf dem Server anmelden und auch der Dienst SSH eigene Pfadangaben haben kann. Zusätzlich ist der SSH-Dämon normalerweise auf dem Synology NAS nicht konfiguriert, /etc/profile oder ~/.profile aus zulesen.  Deshalb gibt es zwei favorisierte Lösungen:

  • Mit symbolischen Links arbeiten, ohne Pfade anzugeben
  • SSH so konfigurieren, dass User-Umgebungen (“environments”) beachtet werden und User-Pfade gesetzt werden

Symbolische Links scheiden aufgrund der schlechten Erfahrungen aus. Daher wird im Folgenden Lösung zwei weiter verfolgt:

Die sshd-Konfiguration aufrufen und mit vi ändern:

vi /etc/ssh/sshd_config

Dort die Zeile suchen:

#PermitUserEnvironment no

und ändern in:

PermitUserEnvironment yes

Nun mit dem git-User per SSH anmelden:ssh SERVER-IP -l MYGITUSER

Verzeichnis anlegen:

md .ssh
cd .ssh
vi

Folgenden Pfad eingeben (Abhängig davon wo git-user-pack liegt), z. B.:

PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/syno/sbin:/usr/syno/bin:/usr/local/sbin:/usr/local/bin:/usr/local/git/bin
Als “environment” speichern – ohne Dateindung und logout.

Jetzt den sshd neu starten oder das NAS neu starten. Abschließend prüfen, ob der Pfad für den git-User nun auf das git-upload-pack zeigt:

ssh MYGITUSER@SERVER-IP echo \$PATH

Nun sollte die IDE oder GitX einen Push auf das repository ausführen können.