{"id":368,"date":"2007-04-10T20:54:21","date_gmt":"2007-04-10T10:54:21","guid":{"rendered":"http:\/\/www.somethinkodd.com\/oddthinking\/2007\/04\/10\/installing-in-unison\/"},"modified":"2007-10-07T19:52:48","modified_gmt":"2007-10-07T09:52:48","slug":"installing-in-unison","status":"publish","type":"post","link":"https:\/\/www.somethinkodd.com\/oddthinking\/2007\/04\/10\/installing-in-unison\/","title":{"rendered":"Installing in Unison"},"content":{"rendered":"<p>I installed <a href=\"http:\/\/www.cis.upenn.edu\/~bcpierce\/unison\/\">Unison<\/a> a few days ago. It is a very useful application &#8211; it keeps folders on different machines synchronised. I have been using it to edit files locally, and have them hosted by my web-server when I am ready.<\/p>\n<p>It is built on <a href=\"http:\/\/samba.anu.edu.au\/rsync\/\">rsync<\/a> technology, and it minimises the traffic between the two machines. I was very impressed the first time I saw it detect that a new file destined for the web-server was already present in another subdirectory on the same server, and did a local disk-copy rather than transfer files across to the other side of the world.<\/p>\n<p>Mainly, it processes <em>all<\/em> the files I changed, rather than merely the ones I remember changing, which is reducing my debug time.<\/p>\n<p>Installing it was a trial. I&#8217;ve heard people claiming that installing software on Linux is easy now. I&#8217;m thinking not so much. The amount of background knowledge that was required to install Unison was immense. I tried, after the fact, to list some of it.<\/p>\n<p>All I needed to understand to install and configure Unison was:<\/p>\n<ul>\n<li>How to run <code>make<\/code> the gnu way.<\/li>\n<li>How to run <code>make<\/code> the almost gnu way.<\/li>\n<li>How to run <code>make<\/code> the old-style (non-gnu) way.<\/li>\n<li>The difference between End-Of-Line markers between Windows and Unix.<\/li>\n<li>The definition of comments in OCAML make files.<\/li>\n<li>How the different between End-Of-Line markers can turn an innocuous comment into Makefile killer.<\/li>\n<li>That Unison build needs OCAML&#8217;s optional components.<\/li>\n<li>What the hell a GTK is. (I never did get the GUI version running.)<\/li>\n<li>Impact of spaces in directory names in Bash.<\/li>\n<li>How to cut-and-paste in DOS Command Box.<\/li>\n<li>How to cut-and-paste in a Cygwin shell.<\/li>\n<li>How installs work on Linux.<\/li>\n<li>How installs work on Linux when you are not root.<\/li>\n<li>How paths work in DOS.<\/li>\n<li>How paths work in Linux.<\/li>\n<li>Quoting in DOS.<\/li>\n<li>Quoting in Bash.<\/li>\n<li>Quoting when calling a Bash shell from DOS.<\/li>\n<li>How to write a Batch file.<\/li>\n<li>How to write a Bash shell command.<\/li>\n<li>Which of my three installed ssh implementations to use.<\/li>\n<li>That PuTTY&#8217;s command-line is <code>plink<\/code>.<\/li>\n<li>That <code>plink<\/code> is like <code>ssh<\/code> except takes different parameters.<\/li>\n<li>The difference between native and non-native Ocaml executeables.<\/li>\n<li>Cygwin&#8217;s installation process.<\/li>\n<li>Which of Cygwin&#8217;s download servers is closest to me.<\/li>\n<li>Where the MSVC build of Unison maps the Unix home directory.<\/li>\n<li>Where the Cygwin build of Unison maps the Unix home directory.<\/li>\n<li>Impact of case-sensitivity of file names when synching.<\/li>\n<li>How to create Windows shortcuts.<\/li>\n<li>How to uncompress and untar, on Windows and Linux.<\/li>\n<li>That IE sometimes confuses .tar.gz files with .tar.tar file.<\/li>\n<li>The format of an SSH URI. (Never did work out why my first few attempts failed.)<\/li>\n<li>Unison&#8217;s elaborate command-line syntax.<\/li>\n<li>Unison&#8217;s even more elaborate profile file format, and its rules of precedence.<\/li>\n<li>Yet another regular expression syntax (Still not completely sorted out.).<\/li>\n<li>What &#8220;standard input&#8221; is, and why I can ignore the error message about it.<\/li>\n<li>How to use Pageant, and what happens if you neglect to restart it after a reboot.<\/li>\n<\/ul>\n<ul>\n<p>That&#8217;s a lot of expertise required to run a simple tool. It seemed a bit over the top that I was racking my brain trying to remember a lecture I did almost 20 years ago about the order of evaluation of quotes in <code>bash<\/code>.<\/p>\n<p>I think my hours of effort will have paid for itself in only a couple of years!<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>I installed <a href=\"http:\/\/www.cis.upenn.edu\/~bcpierce\/unison\/\">Unison<\/a> a few days ago. It is a very useful application &#8211; it keeps folders on different machines synchronised. I have been using it to edit files locally, and have them hosted by my web-server when I am ready.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_s2mail":"","footnotes":""},"categories":[25,34],"tags":[84,376,69],"class_list":["post-368","post","type-post","status-publish","format-standard","hentry","category-insufficiently-advanced-technology","category-software-development","tag-oddthinking","tag-review","tag-software"],"_links":{"self":[{"href":"https:\/\/www.somethinkodd.com\/oddthinking\/wp-json\/wp\/v2\/posts\/368","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.somethinkodd.com\/oddthinking\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.somethinkodd.com\/oddthinking\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.somethinkodd.com\/oddthinking\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.somethinkodd.com\/oddthinking\/wp-json\/wp\/v2\/comments?post=368"}],"version-history":[{"count":0,"href":"https:\/\/www.somethinkodd.com\/oddthinking\/wp-json\/wp\/v2\/posts\/368\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.somethinkodd.com\/oddthinking\/wp-json\/wp\/v2\/media?parent=368"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.somethinkodd.com\/oddthinking\/wp-json\/wp\/v2\/categories?post=368"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.somethinkodd.com\/oddthinking\/wp-json\/wp\/v2\/tags?post=368"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}