Я впервые настраиваю сервер NAS с Git, поэтому, пожалуйста, простите за нубские вопросы (это также значит, что я буду очень благодарен за любые подробные объяснения, которые вы мне дадите, потому что я в этом деле как рыба, выброшенная на берег).
Вот что я уже сделал:
- Пункт списка
- Настройка NAS-сервера
- Установил git, следуя этим инструкциям:http://www.wonko.de/2010/04/set-up-git-on-synology-nas.html(Я дошел до конца шага 5)
- Заставил git работать на моем локальном компьютере (сделал
git init
и сделал первоначальный коммит)
Прямо сейчас я пытаюсь понять, как выполнить шаг 6 этого руководства (http://www.wonko.de/2010/04/set-up-git-on-synology-nas.html), чтобы я мог использовать git clone
и git push
отправлять коммиты моей локальной системы на мой NAS.
Я прочитал комментарии под этим постом и попробовал следующее:
Создал файл под названием
environment
saved в моей локальной домашней папке:.ssh/environment
и ввел туда следующее:PATH=/opt/bin:/opt/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/syno/sbin:/usr/syno/bin:/usr/local/sbin:/usr/local/bin
Зашел в свой NAS с помощью
ssh://root@ipaddresstonas
и набрал:cd /usr/bin
ln -s /opt/bin/git*
Однако я продолжаю получать следующие результаты:
Терминал на моей локальной машине:
$ git remote -v
nas ssh://[email protected]/volume1/path/to/test (fetch)
nas ssh://[email protected]/volume1/path/to/test (push)
$ git push nas master
[email protected]'s password:
sh: git-receive-pack: not found
fatal: The remote end hung up unexpectedly
А когда я пытаюсь набрать $PATH
на локальной машине:
$ $PATH
-bash: /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/usr/local/git/bin: No such file or directory
На моем NAS:
nas> cd /volume1/path/to/test
nas> ls
test.git
nas> $PATH
-sh: /opt/bin:/opt/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/syno/bin: not found
Еще одно замечание: я использую Synology DS212J, который, по-моему, использует «BusyBox», если это как-то поможет.
Я совсем запутался в том, как настроить git для работы с моим NAS... как мне отправить данные на мой NAS, как клонировать (или сделать svn checkout
что-то подобное) на другой компьютер и т. д.
решение1
Путь в Unix — это переменная, которая содержит расположение различных программ.
Если вы введете команду вроде whoami
, оболочка проверит все папки, перечисленные в вашем $PATH.
Продолжайте и введите which whoami
свой shell. Вы увидите, что whoami, скорее всего, находится в /usr/bin/whoami
.
Имея /usr/bin
в своем пути, вы можете просто набрать whoami
вместо /usr/bin/whoami
. Это своего рода ярлык.
Статья, которую вы читаете, показывает, что git-upload-pack
устанавливает в место, в котором оболочка автоматически не ищет исполняемые файлы. Вам нужно добавить /opt/bin
и /opt/sbin
к вашему пути, чтобы оболочка могла «найти»git-upload-pack
Есть несколько способов добавить каталог в путь. Я предпочитаю поместить его в /etc/profile.d, однако, похоже, busy box не «смотрит» в этом каталоге. Вместо этого его нужно будет добавить в файл ~/.ssh/environment. Файл окружения анализируется, когда пользователь подключается к серверу по ssh.
Шаг 6
Используйте текстовый редактор для редактирования следующего файла (вероятно, он еще не существует)
/home/<yourUser>/.ssh/environment
Добавьте следующую строку в /home//.ssh/environment
export PATH=$PATH:/opt/bin:/opt/bin
Затем отредактируйте следующий файл (для этого вам понадобятся права root):
/etc/ssh/sshd_config
В этом файле вы найдете фразу#PermitUserEnvironment no
Удалить комментарий (#) и изменить нет на да
Перезапустите службу SSH или просто перезагрузите все устройство.
Вы можете проверить, что это сработало, но выполните следующую команду
echo $PATH |grep '/opt/bin'
Если что-то возвращает, значит все должно работать.
решение2
настроить ключ rsa. Добавьте исходный IP в список доверенных на удаленном компьютере. Сгенерируйте ключ без пароля.Запустите git daemon на другой машине.
Проверьте свою аутентификацию ssh
на клиентском компьютере.