I'm on Arch. When pacman tries to download a package from an ftp server, It fails with the error message

Protocol rsync not supported or disabled in libcurl

This has been bugging me for a little while now, but I can't remember what I did to cause it (Pacman just downloads from an http server instead, so I've been able to ignore it). I have both rsync and libcurl installed, and they apparently played well together before. I can't find any libcurl or curl config files and found no mention of rsync in the man page. How can I go about enabling rsync?

  • 2
    pacman shouldn't try to download via rsync from an ftp server. It's more likely that you have enabled an rsync server in your /etc/pacman.d/mirrorlist file. – Wieland Jul 22 '14 at 9:55
  • @Wieland Yup. Fixed it with # reflector | awk -e '! /rsync/ {print}' > /etc/pacman.d/mirrorlist – stewSquared Jul 22 '14 at 17:26
  • @Wieland I should probably leave a comment about that on the reflector package. – stewSquared Jul 22 '14 at 17:27
  • 1
    You could just use reflectors --protocol option like so: reflector --protocol http. In theory, you could also use that to include ftp servers, but the API used by reflector (archlinux.org/mirrors/status/json) doesn't include those anymore. – Wieland Jul 22 '14 at 21:26

libcurl does not support the rsync protocol.

From the libcurl FAQ: Section 3.21

   3.21 Protocol xxx not supported or disabled in libcurl

   When passing on a URL to curl to use, it may respond that the particular
   protocol is not supported or disabled. The particular way this error message
   is phrased is because curl doesn't make a distinction internally of whether
   a particular protocol is not supported (i.e. never got any code added that
   knows how to speak that protocol) or if it was explicitly disabled. curl can
   be built to only support a given set of protocols, and the rest would then
   be disabled or not supported.

   Note that this error will also occur if you pass a wrongly spelled protocol
   part as in "htpt://example.com" or as in the less evident case if you prefix
   the protocol part with a space as in " http://example.com/".

libcurl doesn't know the rsync protocol at all, not even a hint. BUT, since it was designed to 'guess' the protocol from the designator in a URL, trying to use rsync://blah.blah will give you the error you see, since it guesses you meant 'rsync', but it doesn't know that one, so it returns the error.

It'll give you the same error if you tried lornix://blah.blah, I doubt I'm a file transfer protocol either. (If I am, please let me know!)

Libcurl does support an impressive set of protocols, but rsync isn't one of them.

| improve this answer | |
  • 1
    Thank you. I updated my pacman mirrorlist so I don't get those error messages anymore. – stewSquared Jul 22 '14 at 15:00

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.