| 015.txt - gopherhole - My gopherhole source code. | |
| git clone git://jay.scot/gopherhole | |
| Log | |
| Files | |
| Refs | |
| --- | |
| 015.txt (4200B) | |
| --- | |
| 1 [jay.scot] | |
| 2 [015] | |
| 3 | |
| 4 | |
| 5 --[ An OpenBSD manpage led me down a rabbit hole | |
| 6 | |
| 7 | |
| 8 I learned about OpenRsync [0] this week while I continue to dive into | |
| 9 OpenBSD. I use rsync quite often, for backing up my ~/ to an external | |
| 10 disk, which I hadn't quite got around to doing yet since the switch. It | |
| 11 wasn't until late this week that I read a random article that mentioned | |
| 12 OpenRsync, which was a drop-in replacement for rsync. Fantastic, I can | |
| 13 use this instead of rsync. | |
| 14 | |
| 15 | |
| 16 So off I go and try running the opensync command which, as expected, was | |
| 17 installed and working. Next, I reviewed the man page to see if there | |
| 18 were any new features or slight differences, but this led me to some | |
| 19 confusion. You see, the examples in the man pages give the command to | |
| 20 run as rsync instead of opensync. Here is a section of the man page | |
| 21 | |
| 22 | |
| 23 EXAMPLE: | |
| 24 % rsync -t ../src/bar ../src/baz host:dest | |
| 25 | |
| 26 | |
| 27 So I ran the rsync command, and it also worked. I thought maybe they | |
| 28 have a symlink from rsync to openrsync or something. I didn't really | |
| 29 think much about it and continued testing my backup script, hoping | |
| 30 I didn't have to change anything with it. Time to test it, it worked | |
| 31 perfectly fine, great! For clarity's sake, I changed the script to use | |
| 32 the openrsync command instead of rsync and then this error happened. | |
| 33 | |
| 34 | |
| 35 $ openrsync: -z not supported yet | |
| 36 | |
| 37 | |
| 38 Wait what? I was super confused for a moment are they different | |
| 39 programs? Time to run a few commands to figure out whats going on: | |
| 40 | |
| 41 | |
| 42 $ which rsync | |
| 43 /usr/local/bin/rsync | |
| 44 | |
| 45 $ which openrsync | |
| 46 /usr/bin/openrsync | |
| 47 | |
| 48 $ rsync --version | |
| 49 rsync version 3.2.5 protocol version 31 | |
| 50 | |
| 51 $ openrsync --version | |
| 52 openrsync: protocol version 27 | |
| 53 | |
| 54 $ pkg_info -m | grep rsync | |
| 55 rsync-3.2.5pl0 mirroring/synchronization over low bandwidth lin… | |
| 56 | |
| 57 | |
| 58 Aha! So at some point I must have manually installed GNU rsync via | |
| 59 pkg_add. I removed the rsync package and tried to figure out how the | |
| 60 rsync command the manpage gave was supposed to work. Did I break | |
| 61 something when installing the GNU rsync version? The next step was | |
| 62 downloading the OpenBSD source and looking at the Makefile for opensync. | |
| 63 | |
| 64 | |
| 65 $ git clone https://github.com/openbsd/src.git openbsd-src | |
| 66 $ cd openbsd-src/usr.bin/opensync | |
| 67 $ /bin/ksh: cd: /home/jay/src/openbsd-src/usr.bin/opensync - | |
| 68 No such file or directory | |
| 69 | |
| 70 | |
| 71 Okay, what is going on? I dig around a bit more and find usr.bin/rsync | |
| 72 and take a look at the Makefile, which makes things clearer. OpenRsync | |
| 73 is built under usr.bin/rsync, but compiled as openrsync. I also noticed | |
| 74 that the manpage is called rsync.1 but then symlinked to openrsync.1, | |
| 75 seems odd. | |
| 76 | |
| 77 | |
| 78 So the end result is the manpage example is wrong and combined with me | |
| 79 having already installed GNU rsync at somepoint added to the confusion! | |
| 80 I wasn't expecting that, time to figure out how to submit a patch so | |
| 81 that anyone as daft as me doesn't run into the same rabbit hole. I edit | |
| 82 the man page and change the rsync examples to openrsync, confirming it | |
| 83 still builds etc. Then read over the great guide on submitting the patch | |
| 84 [1]. | |
| 85 | |
| 86 | |
| 87 I am surprised that this has not been spotted before, so before I submit | |
| 88 the patch, I search the tech mailing list. Sure enough, there was a diff | |
| 89 posted about a year ago [2] with the updated commands. The reply to the | |
| 90 patch was the following: | |
| 91 | |
| 92 | |
| 93 > sorry, i think this one got overlooked! you can check in the | |
| 94 > archives, but i think the consensus was that when it's ready | |
| 95 > openrsync will be renamed but, for now, the examples should | |
| 96 > stay, even if out of kilter. | |
| 97 | |
| 98 > i'm sure another dev can pick this up if i'm way off the mark. | |
| 99 | |
| 100 > jmc | |
| 101 | |
| 102 | |
| 103 There it is, openrsync will be renamed to rsync at some point which also | |
| 104 explains why the manpage is called rsync and symlinked to openrsync in | |
| 105 the source directory. No need to submit the patch after all. | |
| 106 | |
| 107 | |
| 108 I had fun with this, I learned about the patch process for OpenBSD, had | |
| 109 a brief look into the OpenBSD source code, and learned about a new tool. | |
| 110 Though my TODO list has a few extra items, I really should look into | |
| 111 AnonCVS and maybe upgrade my system to -current if I intend on | |
| 112 submitting patches. | |
| 113 | |
| 114 | |
| 115 0. https://man.openbsd.org/openrsync | |
| 116 1. https://www.openbsd.org/faq/faq5.html#Diff | |
| 117 2. gopher://jay.scot/0/files/misc/openrsync-patch.txt | |
| 118 | |
| 119 | |
| 120 .EOF |