summaryrefslogtreecommitdiff
path: root/doc/bugs/unable_to_sync_complains_of_missing_git-upload_and_receive_pack.mdwn
blob: 777c4f6e8603d9b37be1c8c0566ab113d195128f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
### Please describe the problem.
Syncing two standalones: amd64 and armel.

Sync works from armel to amd64.

Sync fails (missing git-upload-pack, git-receive-pack) from amd64 to armel.

### What steps will reproduce the problem?
git-annex sync :)

### What version of git-annex are you using? On what operating system?
git-annex version: 5.20131224-g6ca5271 on both

### Please provide any additional information below.

#### on server "rose" (amd64)

[[!format sh """
$ git-annex version
git-annex version: 5.20131224-g6ca5271
build flags: Assistant Webapp Pairing S3 WebDAV Inotify DBus XMPP Feeds Quvi TDFA
key/value backends: SHA256E SHA1E SHA512E SHA224E SHA384E SHA256 SHA1 SHA512 SHA224 SHA384 WORM URL
remote types: git gcrypt S3 bup directory rsync web webdav glacier hook
local repository version: 3
default repository version: 3
supported repository versions: 3 5
upgrade supported from repository versions: 0 1 2 4

$ git-annex sync
(merging synced/git-annex into git-annex...)
commit  ok
pull synology   
ash: git-upload-pack: not found
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
failed
push synology 
ash: git-receive-pack: not found
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

  Pushing to synology failed.

  (non-fast-forward problems can be solved by setting receive.denyNonFastforwards to false in the remote\'s git config)
failed
git-annex: sync: 2 failed
$ cat .git/config
[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
[branch "master"]
[annex]
        uuid = c0e4106e-2631-11e2-9749-1bfa37a61069
        version = 3
[remote "synology"]
        url = greg@server:/volume1/photo/
        fetch = +refs/heads/*:refs/remotes/synology/*
        annex-ssh-options = "-i /home/greg/.ssh/annex.rose_rsa"
        annex-uuid = ca735977-973c-44bc-9257-915b2c875e39

greg@rose:~/.ssh$ cat authorized_keys
command="/home/greg/.ssh/git-annex-shell" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDT1yE96E/JQNPt0ziiNYJRvndCvLK4uG5h/SNYoAIBF1uH6L7VYAt3HWVqSyi3BcV70WDZ/yWgtNzbrcir46JpvEHMcvYaXLbANwoDGNjG/gsz7kP/8VUxZ6hG3P3ICuwnqVum5+rYXm6oj3xzWPfTRhhRoDZLOQdevSNpdGNaa/lSg8Vuq2suHwjQlQb8AIUuCZmS5cm6XwoUq/jJtN4LTuTPqMjzA6NkdhWM2Kigi9jPQBFborkYBPMphmZwBZiVnhsH1XpaOff+mP03D2gF/huC+b1vbWQstjuehUbY59rvJ4ijbOW8Uq2ep7dwLagmILtX5GbL+GS64pAn9sIP annex-DiskStation

greg@rose:~/.ssh$ cat git-annex-shell   
#!/bin/sh  
set -e  
exec /home/greg/bin/git-annex.linux/runshell git-annex-shell -c "$SSH_ORIGINAL_COMMAND"

greg@rose:~/bin/git-annex.linux$ ls
bin          gconvdir   git-annex.MANIFEST  git-core          lib      LICENSE   README    templates
etc          git        git-annex-shell     git-receive-pack  lib64    linker    runshell  usr
favicon.png  git-annex  git-annex-webapp    git-upload-pack   libdirs  logo.svg  shimmed
"""]]

#### on "synology" (armel)

[[!format sh """
/volume1/downloads/git-annex.linux $ ./runshell
$ git-annex version
git-annex version: 5.20131224-g6ca5271
build flags: Assistant Webapp Pairing Testsuite S3 WebDAV Inotify DBus XMPP DNS Feeds Quvi TDFA CryptoHash
key/value backends: SHA256E SHA1E SHA512E SHA224E SHA384E SKEIN256E SKEIN512E SHA256 SHA1 SHA512 SHA224 SHA384 SKEIN256 SKEIN512 WORM URL
remote types: git gcrypt S3 bup directory rsync web webdav glacier hook
local repository version: 5
default repository version: 3
supported repository versions: 3 5
upgrade supported from repository versions: 0 1 2 4

$ which git-receive-pack
/volume1/downloads/git-annex.linux/bin/git-receive-pack

$ which git-upload-pack
/volume1/downloads/git-annex.linux/bin/git-upload-pack

$ git-annex sync
commit  (Recording state in git...)
ok
pull rose 
From server:/home/greg/Media/Pictures/Photos
   d761e6e..4454a51  git-annex  -> rose/git-annex
   c4f0719..a4c73e4  master     -> rose/master
ok
push rose 
Counting objects: 134, done.
Compressing objects: 100% (58/58), done.
Writing objects: 100% (58/58), 4.81 KiB | 0 bytes/s, done.
Total 58 (delta 38), reused 0 (delta 0)
warning: There are too many unreachable loose objects; run 'git prune' to remove them.
To greg@server:/home/greg/Media/Pictures/Photos
   4454a51..812c393  git-annex -> synced/git-annex
ok

$ cat .git/config
[core]
        repositoryformatversion = 0
        filemode = true
        bare = true
        logallrefupdates = true
[branch "master"]
[annex]
        uuid = ca735977-973c-44bc-9257-915b2c875e39
        version = 5
        direct = true
[remote "rose"]
        url = greg@server:/home/greg/Media/Pictures/Photos
        fetch = +refs/heads/*:refs/remotes/rose/*
        annex-ssh-options = "-i /var/services/homes/greg/.ssh/annex_rsa"
        annex-trustlevel = trusted
        annex-uuid = c0e4106e-2631-11e2-9749-1bfa37a61069

$ cat /volume1/homes/greg/.ssh/authorized_keys
...partial...
command="/var/services/homes/greg/.ssh/git-annex-shell" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCYvOZK2rO+3cF1wxxxrXptZ/QbRaOy36p9RtFmE5MKxgBRJ7n/8nMfBGaj3KDXcdJG+dTUsmLY5VeULuM4omtfJrF2MFYZDw2N0Qgq1bnYZ+q4OlpHfI3h77dAxyvM1MXYJvewXsjh8XoQJYqE8Pj4C05YsAJrqQJqqQqVZceD4TPvbKgnQhQIE2mCVXfItucJv0TOOBmKguOQGUB4Jp00IvFsnxpCLDeLFIODjRpXQqcMX9cZ9/6OYLznTck/MdbA5KTev1gVwiGwtYFGqY/DJ7q6zqfE+UU2aKS/M0r0Qjvr2+Q4+CuzVYc+hPURC8phmdP+HjtFcVsEcpsl6p79 annex-rose

/volume1/homes/greg/.ssh $ cd /volume1/homes/greg/.ssh/
/volume1/homes/greg/.ssh
/volume1/homes/greg/.ssh $ ls        
annex_rsa        authorized_keys  id_rsa           known_hosts
annex_rsa.pub    git-annex-shell  id_rsa.pub
/volume1/homes/greg/.ssh $ cd /var/services/homes/greg/.ssh/
/volume1/homes/greg/.ssh $ pwd
/var/services/homes/greg/.ssh

/volume1/homes/greg/.ssh $ cat git-annex-shell 
#!/bin/sh
set -e
exec /volume1/downloads/git-annex.linux/runshell git-annex-shell -c "$SSH_ORIGINAL_COMMAND"

/volume1/downloads/git-annex.linux $ ls
LICENSE             git-annex-shell     linker
README              git-annex-webapp    logo.svg
bin                 git-annex.MANIFEST  runshell
etc                 git-core            shimmed
favicon.png         git-receive-pack    templates
gconvdir            git-upload-pack     usr
git                 lib
git-annex           libdirs
"""]]





### After some debugging with Joey...
12:24 <     joeyh> git does not use annex-ssh-options
12:24 <     joeyh> the way the assistant sets this up is it makes up a new hostname, and in .ssh/config, makes that hostname use the real domain name, and the key
12:25 <     joeyh> there's clearly a bug here.. the assistant only does that when there is no passwordless ssh key already set up. But in this wacky way of installing git and git-annex on a server, it needs to always do it
12:26 <     joeyh> probably the assistant should probe if ssh server git-receive-pack works, and if not, always set up its special config
12:26 <     joeyh> alternatively, the standalone tarball could have an actual installation step, rather than just being unpacked

Based on that I added (on the amd64/rose machine):
[[!format sh """
greg@rose:~/.ssh$ cat config
Host synology
    HostName yep.org #obviously redacted
    IdentityFile /home/greg/.ssh/annex.rose_rsa

$ git remote show -n synology
* remote synology
  Fetch URL: greg@synology:/volume1/photo/
  Push  URL: greg@synology:/volume1/photo/
  HEAD branch: (not queried)
  Local ref configured for 'git push' (status not queried):
    (matching) pushes to (matching)
"""]]

Now, to do a simple test with git:

[[!format sh """
$ git remote show synology
git-annex-shell: git-shell failed
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
"""]]

> [[done]]; `git push` and `git pull` don't use annex-ssh-options,
> and so that's not a good way to configure the dedicated key. 
> Instead, set it up like the assistant does, with a dummy hostname in the
> url that is configured in .ssh/config to use the real domain and the
> dedicated key. --[[Joey]]