现在的位置: 首页 > 综合 > 正文

svn_auth系统由windows迁移到linux下遇到的问题

2012年06月25日 ⁄ 综合 ⁄ 共 1859字 ⁄ 字号 评论关闭

  最近在做svn权限管理系统,要求在windows下和linux下均可运行,由于前期的代码编写都是基于windos的,所以今天对代码进行了改写,以适应linux系统的运行,linux的测试环境为ubuntu。在此几下中间的修改过程和遇到的问题。

 

1.换行符问题

  已知的各个操作系统的换行符号如下:

  

OS Line Break
widows \r\n
linux\unix \n
MAC \r

     一般操作系统上的运行库会自动决定文本文件的换行格式. 如一个程序在windows上运行就生成CR/LF换行格式的文本文件,而在Linux上运行就生成LF格式换行的文本文件. 在一个平台上使用另一种换行符的文件文件可能会带来意想不到的问题, 特别是在编辑程序代码时. 有时候代码在编辑器中显示正常, 但在编辑时却会因为换行符问题而出错. 很多文本/代码编辑器带有换行符转换功能, 使用这个功能可以将文本文件中的换行符在不同格式单互换.

回车和换行历史

关于“回车”(carriage return)和“换行”(line feed)这两个概念的来历和区别。
在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。

于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。一个叫做“回车”,告诉打字机把打印头定位在左边界;另一个叫做“换行”,告诉打字机把纸向下移一行。

这就是“换行”和“回车”的来历,从它们的英语名字上也可以看出一二。

后来,计算机发明了,这两个概念也就被般到了计算机上。那时,存储器很贵,一些科学家认为在每行结尾加两个字符太浪费了,加一个就可以。于是,就出现了分歧。

Unix系统里,每行结尾只有“<换行>”,即“\n”;Windows系统里面,每行结尾是“<换行><回 车>”,即“\n\r”;Mac系统里,每行结尾是“<回车>”。一个直接后果是,Unix/Mac系统下的文件在Windows里打 开的话,所有文字会变成一行;而Windows里的文件在Unix/Mac下打开的话,在每行的结尾可能会多

    那么怎样去屏蔽这种差异呢?

    既然rails是跨平台的,那么ruby语言输出换行符的时候肯定会自动判断是那种系统,并输出相应的换行符,我们可以利用这点来实现。即:用ruby语言中的puts输出一行,会自动换行。

 

2. 路径问题

   在windows的命令行提示符下,目录的分隔符是“\”,但“\”同时也是转义字符,并且无法在unix、linux下运行,所以ruby支持windows下使用“/”作为分隔符,但是注意:win32ole之类的功能不能这样用。

   所以对目录的访问和创建,我们可以通过ruby的Dir、File类来操作,分隔符用“/”,这样就可以避免了。但是有一点需要注意,Dir创建目录时不可创建父目录,这时可以用FileUtils类来代替,FileUtils类支持自动创建父目录。

 

3.基于apache的svn版本控制系统

     svn版本控制系统的环境是apache+subversion,通过域用户认证进行按路径授权,在windows下的域用户认证是通过sspi实现的,但是在linux下找不到相应的sspi文件,网上关于这方面的结论是sspi仅有windows版本,不存在相应的linux版本,后来通过svn管理员获知,公司目前的svn库是通过openldap实现的域用户认证,同时openldap在windows、linux下均可运行。

      这里需要强调一点的是,linux下的apache组成和windows下的不同。

  windows下是一键安装式的,所有的配置都在httpd.conf中,module等文件也都中规中矩的在特定文件夹中。

      在linux中,配置文件有多个,且日志、配置文件都不在同一个目录中,但是主要的配置文件是/etc/apache2/apache2.conf中,其余的配置文件都是通过include引入的,而且apache2.conf中制定了apache需要的mod文件。特别指明一点,mods-avaliabe是可以获取的mod文件,但是不一定适用,如果你的mod文件需要在文件中价值,需要用链接的方式放在mods-enabled中,这个在apache2.conf可以看出来。

【上篇】
【下篇】

抱歉!评论已关闭.