“Ubuntu”分类下文章 »

nov 28

Apache/Subversion: SSL negotiation failed: SSL error: parse tlsext

我的 SVN 服务器升级到 FreeBSD 8.0 Release 之后,原先 Apache + SSL + Subversion 的环境,在客户端(包括 Ubuntu 9.10 和 Mac OS X 1.5.8)做任何 SVN 操作的时候,会得到标题给出的提示。

查了下,是因为 TLSv1 协议的问题,不知是 OpenSSL 的 bug 还是 Subversion 的 bug,总之无法正常工作。

修改 Apache 配置文件,屏蔽掉 TLSv1 加密方式:

SSLProtocol -ALL +SSLv3

SSLProtocol +ALL -SSLv2 -TLSv1

SSLProtocol ALL -TLSv1

反正只要没有 TLSv1 就能正常工作,经测试,暂时还未发现新问题。

dirk 发表于 2009-11-28 Saturday
nov 08

利用周末时间,把家里机器的 Ubuntu 系统升级到了最新发布的 9.10。

其实,说升级不太贴切,因为我在升级后,发现有些新东西升级后没有生效,比如新的 Network Manager Applet:管理无线网络和 VPN 非常方便的工具;还有蓝牙也直接启用了,与手机传送文件非常方便;最后还有似乎要集成所有通讯的 Empathy 工具。这都是改进用户体验的东西,但在升级后的系统中没有马上体现出来(至少我没找到,哈)。最后,不得不重新安装了系统:幸好我的数据和工作分区是独立的,只需要格掉系统分区即可,顺便也把系统分区格式化为 EXT4 文件系统。Ubuntu 是从 9.04 开始支持 EXT4 文件系统,一个相当不错的文件系统,对于桌面应用来说,值得一用。

这个新版本,给予我以下几个比较大的变化:

  • 原来的“添加/删除程序”变成了“Ubuntu Software Center”,至少从安装速度上感觉快了一些;
  • FireFox 升级到了 3.5.4;(恩,我正在用它写这篇日记)
  • 很多游戏都更新了,我儿子最喜欢的 Freedroid RPG 更新到了最新版本,结果原来的存档和游戏地图都变了,很不适应;
  • 学习苹果公司的 MobileMe 服务,Ubuntu 开始提供 2G 容量的“Ubuntu One”在线存储服务;
  • 个人主文件夹默认创建了类似“视频”、“图片”、“文档”、“下载”、“公共的”,感觉又有抄袭苹果系统的嫌疑?
  • 启动界面变了,有点接近 XP 系统,就是先让选择登录帐户,而不是直接输入用户名;
  • 我原来需要费力折腾的无线网卡终于直接可以驱动了;
  • 系统启动管理器更新到了 Grub2 ;(恩,这个折腾了我很久,不过最后还是搞定了,也不复杂,哈)
  • 增加了“电脑清洁工”工具软件,不过我还没看到有什么用;
  • 输入法默认是一个叫 iBus 的东西,我不习惯或者不会用,马上装回 SCIM 了。

这里 有更多新特性介绍,有些其实我一般不怎么用,所以还没来得及体验。

说实话,这么多年,一个版本一个版本的连续用下来,我觉得 Ubuntu 在很大程度上借鉴了苹果系统的优点。这是好事,也许有一天,我不必羡慕苹果那个华丽丽的系统了。继续努力。哈!

说到这里,我想必须要提一下 Ubuntu 新分支: Ubuntu Netbook Remix ,一款为上网本专门设计的系统。其实我没有上网本,只是家里有台给家人上网用的台式机,配置一般,我在安装 Ubuntu Netbook Remix 后,觉得相当不错,界面简洁直观,但又不失强大功能,因为它并没有作出任何限制,依然包含着基本的 Ubuntu 管理工具,只是在桌面上增加了一个直观的应用程序罗列界面;超大图标,确实适合上网本。哈!

有条件,一定好好摆弄摆弄这款 Netbook Remix 系统。

最后提一下,感觉大陆的 Ubuntu 源比台湾的源差多了,还是台湾的源速度超快!大家可以通过测试选择最合适的。

dirk 发表于 2009-11-08 Sunday
oct 31

Ubuntu

我申请免费 Ubuntu CD 的帐号达到了最大数量,这里是 Canonical 公司的官方解释。

心里多少有点“淡淡的疼”?似乎,习惯了免费午餐也不好哦。哈!

dirk 发表于 2009-10-31 Saturday
oct 23
GFW

随着被墙的越来越多, 出离愤怒的我 ,也不得不开始查找爬墙的工具。

幸好,国外有不少便宜的 VPS,而我刚好拥有一个;透过VPS,通过 SSH Tunneling,再加上一个好用的代理工具,就可以方便的达到翻墙目的。

首先确保你的 VPS 在墙外,或者你能拥有一个墙外系统的 SSH 帐号。

在你本地系统(或者你的家庭网关?)中使用 SSH 建立一个隧道:

ssh -qTfNnD localhost:8888 username@your.vps.host.name

之后,SSH 会在本地的 8888 端口建立了一个 SOCKS 5 隧道。(桌面系统我只使用 Ubuntu 和 Macintosh,所以,如果你使用 Windows,请自己研究相应的 SSH 客户端。)

在你的浏览器中,设置为 localhost:8888 的 SOCKS 5 代理就可以浏览被墙的网站了。

这种方式,有个缺点是所有网站都会这么绕一大圈,想要只针对被墙的网站才使用此代理,需要一些更加方便的工具。我在 Firefox 下用得就是 FoxyProxy 这个插件,在 FoxyProxy 中建立一个白名单,把我要浏览的被墙网站加到白名单中,符合白名单的就启用通过 VPS + SSH Tunneling 的代理,否则不通过代理直接访问。

可以说是相当完美的解决方案。最后一个有待改进的地方是,每当新发现被墙网站时需要手工加到白名单,有时间的时候,想办法试试能否便捷的白名单快速增加方法。

恩,发个申明:

  • 以上方法仅供学习研究之用,请勿用于“非法”、“不正当”途径,任何后果,自行负责,与本站无关。
  • 本站不提供任何 SSH 帐号服务,请勿索要任何相关信息。
dirk 发表于 2009-10-23 Friday
oct 02

SVN users who wish to ignore multiple files with distinct names in the same folder beware : you must use a file and batch-process.

It’s not difficult to figure out that to tell SVN to ignore a file, you could use:

svn propset svn:ignore [filename] [folder]

So if I have a file ‘settings.py’ in folder config, in the config folder I would simply type:

svn propset svn:ignore settings.py .

But what if I also have another file, say ‘me.py’, in the same folder that I want to ignore? On top of that, what if I have other files with a .py extension that I don’t want to ignore? The following will not work:

svn propset svn:ignore “settings.py me.py” .

(incorrect syntax)

svn propset svn:ignore “*.py” .

(but i don’t want to ignore some .py files)

nor would the following, because svn for some odd reason seems to only take one propset assignment from the commandline – meaning only one of the files will be ignored:

svn propset svn:ignore settings.py .
svn propset svn:ignore me.py .

turns out you must make a file with the filenames on separate lines, then call with the -F parameter. For example in the above case, I would create a file “ignore.me” with settings.py and me.py on separate lines, then call

svn propset svn:ignore -F ignore.me .

Annoying. SVN should let you set the same property on multiple files with multiple command-line calls.

dirk 发表于 2009-10-02 Friday
jul 31

一直以来,在 Solaris 和 Linux 下都习惯了 bash 的风格,比如命令补全、历史命令编辑、nohup 后台运行,等等。

现在基本上只使用 FreeBSD ,而 FreeBSD 默认的shell并不是 bash,bash 需要额外 ports 安装,而且 bash ports 是安装在 /usr/local/bin/bash 的,我一般都把 /usr/local 从根分区分离出去,这样的话,如果系统有问题需要进入单用户模式的时候,bash 是不可用的。

研究了一下,如果csh经过一定的设置,也是很好用的: 1、设置命令补全,修改 /etc/csh.cshrc 文件:

set autolist

2、显示类似 [dirk@trinity /usr/local/etc]# 这样的提示符,修改 /etc/csh.cshrc 文件:

set prompt = '[%B%n@%m%b %B%~%b%] #'

3、让 ls 命令显示目录的时候带 / 斜杠区分普通文件,修改 /etc/csh.cshrc 文件:

alias ls ls -F

4、让 csh 具有历史命令编辑功能,还是 /etc/csh.cshrc 文件:

bindkey "^W" backward-delete-word
bindkey -k up history-search-backward
bindkey -k down history-search-forward

5、最后,使用 script 命令替代 nohup 命令:

script -a script.log "command"
dirk 发表于 2009-07-31 Friday
jul 31

Ubuntu 升级到7.04后发现一个很怪异的问题,在终端下执行 vi 或者 vim 并退出后,终端提示符以及后续输入的东西都会变成乱码,但使用 gvim 却没有问题。

刚开始以为是终端编码设置问题,倒腾了几次,失败;于是猜测是版本升级问题,当时也就不想花时间研究了,猜想估计下次升级就可以修正了。这样一直拖了半年的样子,在此期间,能用 Emacs 的就用 Emacs,实在简单的编辑就用一下 gvim。

今天想看看 vim 下语法高亮显示的问题,发现在 Ubuntu 下将符号链接用得很极致,大量命令都是通过 /etc/alternatives 下的符号链接来进行配置。然后就发现我的 vi 和 vim 都链接到了 /usr/bin/vim.python,看看 /usr/bin/ 目录,竟然基本的 vim 也是链接到此。我在想,应该有一个实现基本功能的 vim 吧。apt-cache 一把,发现我没有安装“vim”这个包,现有系统安装的都是额外的扩展程序,诸如 vim.python,vim.ruby,vim.gnome 等等。

OK,安装完“vim”这个包,多了一个 /usr/bin/vim.basic 这个程序,通过更改设置,将默认 vi 和 vim 链接到 vim.basic 此程序,解决 vi/vim 退出后终端乱码问题。

sudo update-alternatives --config vi
sudo update-alternatives --config vim

由此,编辑某些小东西不需要启动 gvim 和 emacs 这种大东西了。

dirk 发表于 2009-07-31 Friday
jul 31

Ubuntu 是建立在 Debian 基础上的 Linux 发行版本,保留了 Debian 的优秀特性,比如 Dpkg 和 APT 机制,对于原来的 Debian 用户来说,可以无障碍的迁移到 Ubuntu,而对于 Ubuntu 新手,熟悉 APT 和 Dpgk 是很重要的一步。

1、下载并安装所有包裹,同时包括升级操作,如果某个包裹被设置了 hold (停止标志,就会被搁在一边,即不会被升级):

sudo apt-get install

2、卸载指定包裹以及任何倚赖这个包裹的其它包裹:

sudo apt-get remove [--purge]
  • —purge 指明这个包裹应该被完全清除(包括配置文件),更多信息请看 dpkg -P。

3、升级来自 Ubuntu/Debian 镜像的包裹列表,如果你想安装当天的任何软件,至少每天运行一次,而且每次修改了 /etc/apt/sources.list 后,必须执行:

sudo apt-get update
sudo apt-get upgrade [-u]

sudo apt-get dist-upgrade [-u]

升级所有已经安装的包裹为最新可用版本,不会安装新的或移除老的包裹;如果一个包改变了倚赖关系而需要安装一个新的包裹,那么它将不会被升级,而是标志为 hold。 apt-get update 不会升级被标志为 hold 的包裹 (这个也就是 hold 的意思)。请看下文如何手动设置包裹为 hold。建议同时使用 ‘-u’ 选项,因为这样你就能看到哪些包裹将会被升级。 dist-upgrade 和 upgrade 类似,除了 dist-upgrade 会安装和卸载包裹来满足倚赖关系,因此具有一定的危险性。

4、根据关键字搜索包裹:

sudo apt-cache search keywords

5、显示包裹的完整描述:

sudo apt-cache show package_name

6、显示包裹细节信息,包括和其它包裹的关系:

sudo apt-cache showpkg package_name

APT 有几个图形前端:dselect,console-apt,aptitude,gnome-apt(其中一些在使用前得先安装)。其中 dselect 无疑是最强大的,也是最古老,最难驾驭,具体可以参考 Debian 手册。

7、如果你手动下载了一个 .deb 包,通过以下命令安装 Debian 包裹文件:

sudo dpkg -i debfilename

8、列出包裹包含的内容:

sudo dpkg -c debfilename

9、从 .deb 文件中提取包裹信息:

sudo dpkg -I debfilename

10、卸载一个已安装的包裹:

sudo dpkg -r packagename

11、完全清除一个已安装的包裹。和 remove 不同的是,remove 只是删掉数据和可执行文件,purge 另外还删除所有的配制文件:

sudo dpkg -P packagename

12、列出包裹安装的所有文件清单。(同时请看 dpkg -c 来检查一个 .deb 文件的内容):

sudo dpkg -L packagename

13、显示已安装包裹的信息:

sudo dpkg -s

14、重新配制一个已经安装的包裹,如果它使用的是 debconf (debconf 为包裹安装提供了一个统一的配制界面),你能够重新配制 debconf 它本身:

sudo dpkg-reconfigure packagename

15、获取软件包裹状态:

sudo dpkg --get-selections | grep keyname

16、设置软件包裹状态,比如 HOLD 某个包裹不允许升级:

echo "packagename hold" | sudo dpkg --set-selections

17、从 HOLD 状态恢复软件包裹标志位:

echo "packagename install" | sudo dpkg --set-selections

18、修正依赖关系损坏的包裹:

sudo apt-get -f install

更多相关帮助可以参考 Debian 文档,或者包含中文版的 Debian 参考手册

dirk 发表于 2009-07-31 Friday
jul 31

在 Ubuntu 下可以使用如下简单命令实现 man page 到 PDF 文件的转换:

man -t tcsh | ps2pdf - > tcsh.pdf

另外,可以用以下命令将生成的 PDF 文件进行优化,减小尺寸,方便 Web 下载:

pdfopt tcsh.pdf tcsh_optimized.pdf
dirk 发表于 2009-07-31 Friday
sep 27

距上次在 Windows 下编译 Magickwand for PHP 差不多过去快一年了, ImageMagick 升级到了 6.3.x 系列, Magickwand for PHP 也发布了最终的 1.0.5 版本,原先的 DLL 已经不能使用了。这期间,不断有人写信过来索要新版本,而 ImageMagick 官方论坛却始终没有人更新。

说实话,我现在完全在 Linux/FreeBSD 下开发,所以已经彻底不再使用 Magickwand for Windows 了;而且这个编译工作比较费时间,不太愿意做了;今天又花费了我一整天时间生成了一个最新(也是最后的)版本,使用 PHP 5.2.4 + ImageMagick 6.3.5 + MagickWand 1.0.5 + VC6 编译生成。

»» 最终文件请到此页面下载 ««

  • 编译环境:Windows 2000,Visual Studio 6.0,PHP-5.2.4,ImageMagick-6.3.5,Magickwand-1.0.5;
  • 测试环境:在 Windows 2000 + Apache 2.0.59 + PHP 5.2.4 环境下测试通过;

在此郑重申明:这将是我提供的最后一个版本,以后不再花费无谓的时间在这上面(感觉官方论坛对 MagickWand for Windows 没有任何兴趣)。我建议,需要做 MagickWand 开发的朋友,尽量转到 Linux/FreeBSD 下开发,软件的编译和安装更加方便,相关资料也更好找。

Update@2007-09-27 22:03

一个叫 Cully 的新西兰朋友下载我生成的 DLL 后,发现处理上传图片会产生一个错误:

Fatal error: magickreadimage(): C API cannot read the format "D:\PHP5\tempupload\0704I02C0681.jpg" (reason: UnableToOpenBlob `D:E:\PHP5\tempupload\0704I02C0681.jpg':  Invalid argument) [on C source line 217]

研究了一下 MagickWand 的源代码,同时也对比了一下 0.1.9 的旧代码,发现 MagickWand 作者将原先针对 Win32 平台的代码删除了,Windows 下的文件路径带有盘符(冒号),这个和 ImageMagick 辨认图片格式发生冲突,致使新的 MagickWand 会错误的处理文件路径为图像格式,引起读取失败。我将部分旧代码合并到新版本后发现可以修正 Cully 的问题,但我没有把握里面有多少东西需要修正。暂时放弃吧。

我现在不敢断言,但怀疑 MagickWand 的作者可能想要放弃 Windows 平台,或者说,他们就没有在 Windows 下进行测试。That’s bad news.

Update@2007-09-28 09:31

经过排查,发现只有在 read_image 的时候做了特殊处理,所以我直接制作了一个 补丁 ,重新编译后,发给 Cully 测试通过。OK,发布最后一次更新,所有下载文件更新到最新补丁版本。

另外,我也将自己制作的 MSVC6 的工程文件也放到了下载目录中,有兴趣的朋友可以自己拿回去自己编译(自己制作一个工程文件真的那么难么?呵呵)。

dirk 发表于 2007-09-27 Thursday