Команда svnserve не найдена

Моя установка 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-сервер.

1
задан 10 April 2021 в 05:41

3 ответа

Большое вам спасибо за это! <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

И это должно помочь. "Работает здесь". :)

Без ваших инструкций мы, вероятно, все еще были бы в панике и искали решение, так что еще раз спасибо за то, что разобрались с этим!

0
ответ дан 23 April 2021 в 23:24

В нашем случае достаточно запустить

ln -s /var/packages/SVN/target/bin/svnserve /usr/bin/svnserve

на Synology.

0
ответ дан 23 April 2021 в 23:24

Я понял

  1. Создайте svnwrapper.sh ( vi svnwrapper.sh )

    #! / Bin / sh

    #set umask, чтобы файлы были доступны для групповой записи umask 002

    # вызываем "настоящий" svnserve, также передавая местоположение репозитория по умолчанию exec / usr / local / bin / svnserve "$ @ "-r /

  2. сохранить его в каталоге пользователя например / var / services / homes / my_user - это на Synolgy NAS

  3. chmod 755 svnwrapper.sh

  4. cd / usr / bin

  5. ln -s / var / services / homes / my_user /svnwrapper.sh svnserve

  6. создать .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, это позволит вам используйте полный путь в репо на клиенте, замените последний / на путь, с которого вы хотите начать репозиторий.

0
ответ дан 23 April 2021 в 23:24

Другие вопросы по тегам:

Похожие вопросы: