Benutzer-Werkzeuge

Webseiten-Werkzeuge


comp:rsshrpm

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
comp:rsshrpm [2008-11-23 1726]
werner neuer Patch für scp und sftp-server
comp:rsshrpm [2009-01-19 1756] (aktuell)
werner Link zum Buildservice
Zeile 1: Zeile 1:
 +====== RSSH als RPM ======
  
 +Es gibt das schöne Tool rssh (http://www.pizzashack.org/rssh/index.shtml). Es wird als Shell für einen User eingetragen und erlaubt diesem User, Dateien per ''scp'', ''sftp'', ''rsync'', ''cvs'' und/oder ''rdist'' zu übertragen, aber es erlaubt ihm nicht, sich am System anzumelden. Wer was darf, wird in ''/etc/rssh.conf'' festgelegt. Saubere Sache, das! :-)
 +
 +Die Software wurde im Januar 2006 zuletzt aktualisiert und ist jetzt perfekt, sagt der Autor. Mag sein, aber die Installationsroutinen sind es leider nicht.
 +
 +===== Schwachpunkt 1: sftp-server =====
 +
 +Der erste Schwachpunkt bei der Installation ist, dass das Binary sftp-server auf 64 Bit-Systemen nicht gefunden wird, weil es in ''/usr/lib64'' liegt und die Routine nur in ''/usr/lib'' sucht. Habe mich gefragt, warum configure nicht da nachsieht, wo es konfiguriert ist (und dann feststellen müssen, dass die Datei nur von root gelesen werden kann :-(), und mir einen kleinen Patch ausgedacht:
 +
 +<code diff>
 +--- ./configure 2008-11-23 17:17:59.000000000 +0100
 ++++ ../rssh-orig/configure      2006-01-07 03:24:58.000000000 +0100
 +@@ -4984,10 +4984,6 @@
 + fi
 + scp_path=$ac_cv_path_scp_path
 +
 +-if test -z "$scp_path"; then
 +-  scp_path=`which scp`
 +-fi
 +-
 + if test -n "$scp_path"; then
 +   echo "$as_me:$LINENO: result: $scp_path" >&5
 + echo "${ECHO_T}$scp_path" >&6
 +@@ -5032,10 +5028,6 @@
 +   *)
 +   as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 + as_dummy="/usr/libexec:/usr/libexec/openssh:/usr/local/libexec/openssh:/usr/lib/openssh:/usr/lib:/usr/local/libexec:/usr/lib/ssh"
 +-as_arch_helper=`uname -m`
 +-if test "a$as_arch_helper" = "ax86_64"; then
 +-  as_dummy="$as_dummy:/usr/lib64/openssh:/usr/lib64:/usr/lib64/ssh"
 +-fi
 + for as_dir in $as_dummy
 + do
 +   IFS=$as_save_IFS
 +@@ -5054,12 +5046,6 @@
 + fi
 + sftp_path=$ac_cv_path_sftp_path
 +
 +-if test -z "$sftp_path"; then
 +-    if test -r /etc/ssh/sshd_config; then
 +-        sftp_path=`grep sftp-server /etc/ssh/sshd_config | awk '{print $3}'`
 +-    fi
 +-fi
 +-
 + if test -n "$sftp_path"; then
 +   echo "$as_me:$LINENO: result: $sftp_path" >&5
 + echo "${ECHO_T}$sftp_path" >&6
 +</code>
 +
 +In diesem Patch ist außerdem der ''scp''-Teil enthalten -- weiß der Kuckuck, warum ''scp'' vom openSUSE Build System sonst nicht gefunden wird :-/
 +
 +Der Code lässt sich z. B. als ''configure.patch'' abspeichern. Wenn man dann ein ''patch -p0 < configure.patch'' ausführt, sollte der Flicken eingesetzt sein ;-). Oder man fügt die gekennzeichneten Zeilen  manuell ein, je nachdem, was schneller geht :-).
 +
 +===== Schwachpunkt 2: rpmbuild und rssh_chroot_helper =====
 +
 +So weit, so gut. Nun habe ich aus dem [[http://www.pizzashack.org/rssh/download.shtml|zum Download angebotenen]] .src.rpm das Spec-File extrahiert und die gepatchten Sources dazu genommen. Der Build schlägt fehl. Und zwar wird ganz zum Schluss ein "chmod" auf das Binary ''rssh_chroot_helper'' ausgeführt, aber leider wird dabei auf ''/usr/lib64/rssh_chroot_helper'' zugegriffen und nicht auf das Binary, das gerade gebaut wurde :-( Im Bugtracker auf sourceforge.net wird zwar in Bug 1384981 eine Lösung gegeben, aber sie hilft nicht. Stattdessen habe ich Zeile 731 in Makefile.in um das ''$(DESTDIR)'' erweitert, **das** hilft :-).
 +
 +===== Vorgehen: =====
 +
 +  - auf http://www.pizzashack.org/rssh/download.shtml dem Link zum Download des .src.rpm folgen, Datei herunterladen
 +  - als root das .src.rpm installieren. Danach existieren ''/usr/src/packages/SPECS/rssh.spec'' und ''/usr/src/packages/SOURCES/rssh-2.3.2.tar.gz''
 +  - das Source-Archiv auspacken und die beiden oben beschriebenen Änderungen durchführen
 +  - das Source-Archiv löschen und neu erstellen (''tar -cvzf rssh-2.3.2.tar.gz rssh-2.3.2'')
 +  - sicherstellen, dass es sich bei ''/usr/src/packages/SOURCES/rssh-2.3.2.tar.gz'' jetzt um die modifizierten Quellen handelt (Zeitstempel beachten)
 +  - (fakultativ) ändern der Zeile ''Release: 1'' in (z. B.) ''Release: 1m'' (m für modified) in der Datei ''/usr/src/packages/SPECS/rssh.spec''
 +  - ''cd /usr/src/packages''
 +  - ''rpmbuild -ba SPECS/rssh.spec''
 +  - ''rpm -ivh RPMS/$(uname -m)/rssh*.rpm'' :-)
 +
 +Der ''rpmbuild''-Befehl hat sowohl ein .src.rpm als auch ein binäres RPM -- passend zur verwendeten Architektur -- gebaut. Der ''rpm''-Befehl zum Schluss installiert das dann auch :-)
 +
 +**Nachtrag 2009-01-19**: Das Gefreckel hat mich inspiriert, mir einen Account für den openSUSE-Buildservice zu holen. SUSE-Nutzer können das Paket deshalb jetzt auch aus dem Buildservice ziehen, die Basis-URL ist [[http://download.opensuse.org/repositories/home:/werfl]], darunter suche man seine Distri :-)
comp/rsshrpm.txt · Zuletzt geändert: 2009-01-19 1756 von werner