Моя установка svn работала годами, и теперь внезапно она решила не работать. Я использую svn + ssh. Я могу просто подключиться по ssh к серверу, после чего я могу запустить type svnserve
, который дает мне svnserve is / usr / local / bin / svnserve
, я также могу сделать это с клиента как :
ssh -p 1234 user@myserver "sh -l -c 'type svnserve'"
и получите тот же ответ, что и выше. Однако, когда я запускаю
svn list -v svn+ssh://user@myserver/my_repo
, он дает мне sh: svnserve: command not found
после успешной аутентификации SSH. Я могу перечислить штрафы репо, если сделаю это прямо на сервере без ssh. Кто-нибудь может помочь? Спасибо
п.с. Я единственный пользователь, который использует этот svn-сервер.
Большое вам спасибо за это! <3 Это спасло нашу компанию SVN! :)
Похоже, сочетание недавних обновлений DSM и SVN должно было что-то напортачить. Отслеживая сообщения об ошибках SSH и SVN через Терминал, кажется, что виновником является двоичный файл svnserve, который не найден пользователем компьютера, который запускает процесс SH, который затем пытается запустить svnserve.
Однако существует гораздо более простое (и, разумеется, грубое) решение проблемы, без необходимости использования каких-либо оболочек, скриптов или профилей BASH: просто создайте глобально доступный SymLink для фактического местоположения двоичного файла svnserve в его путь пакета Synology.
svnserve в пакете Synology SVN находится здесь: / var / packages / SVN / target / bin / svnserve
Все, что мне в конечном итоге нужно было сделать, это создать SymLink в / usr / bin / в этот файл, и теперь все снова работает как задумано.
Итак, войдите через SSH, затем
cd /usr/bin
ln -s /var/packages/SVN/target/bin/svnserve svnserve
И это должно помочь. "Работает здесь". :)
Без ваших инструкций мы, вероятно, все еще были бы в панике и искали решение, так что еще раз спасибо за то, что разобрались с этим!
В нашем случае достаточно запустить
ln -s /var/packages/SVN/target/bin/svnserve /usr/bin/svnserve
на Synology.
Я понял
Создайте svnwrapper.sh ( vi svnwrapper.sh
)
#! / Bin / sh
#set umask, чтобы файлы были доступны для групповой записи umask 002
# вызываем "настоящий" svnserve, также передавая местоположение репозитория по умолчанию exec / usr / local / bin / svnserve "$ @ "-r /
сохранить его в каталоге пользователя
например / var / services / homes / my_user
- это на Synolgy NAS
chmod 755 svnwrapper.sh
cd / usr / bin
ln -s / var / services / homes / my_user /svnwrapper.sh svnserve
создать .bashrc ( vi .bashrc
) в / var / services / homes / my_user и chmod 755 .bashrc
содержимое. bashrc - это
#! / bin / sh
export PATH = "/ sbin: / bin: / usr / sbin: / usr / bin: / usr / syno / sbin: / usr / syno / bin: / usr / local / sbin: / usr / local / bin: $ PATH "
Обратите внимание на exec / usr / local / bin / svnserve" $ @ "-r /
в svnwrapper, это позволит вам используйте полный путь в репо на клиенте, замените последний /
на путь, с которого вы хотите начать репозиторий.