8

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?

4
  • 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
    Commented Jul 22, 2014 at 9:55
  • @Wieland Yup. Fixed it with # reflector | awk -e '! /rsync/ {print}' > /etc/pacman.d/mirrorlist Commented Jul 22, 2014 at 17:26
  • @Wieland I should probably leave a comment about that on the reflector package. Commented Jul 22, 2014 at 17:27
  • 2
    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
    Commented Jul 22, 2014 at 21:26

2 Answers 2

10

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.

1
  • 1
    Thank you. I updated my pacman mirrorlist so I don't get those error messages anymore. Commented Jul 22, 2014 at 15:00
0

Additional notes

Even if rsync is set to XferCommand in pacman.conf, it may not be possible to update the packages.

This is when the rsync server does not allow access to files with the *.db extension. In some cases, the rsync command can retrieve the core.db.tar.gz file, but not the core.db file. In this case, you should choose https or http.

Also, the mirror server update script will often not meet your expectations even if you sort by RATE if you do not specify the region(country).

Summary

1.For mirrorlist, choose https or http protcol.

2.The rsync server operator should configure the settings about the *.db file extension.

3.If you want to update the mirrorlist automatically with a script, specify the region,country, and protcol.

at all.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .