Ubuntu 一些问题处理方案积累

11 Dec 2012

Case1 Ubuntu 12.04 ssh 登录慢

Ubuntu 12.04 ssh 登录很慢,半天才提示输入密码。ssh -v user@ip 跟踪了一下,发现是 GSSAPIAuthentication 认证尝试等待的时间较长。

查找系统默认情况下 ssh_config 的配置里,GSSAPIAuthentication 选项是 yes,解决方案:

Step1 更改 ssh 的配置参数:

在 /etc/ssh/ssh_config 文件中修改 GSSAPIAuthentication yes(在倒数第二行) 为 GSSAPIAuthentication no

Step2 重启 ssh 服务:

1 $ sudo /etc/init.d/ssh restart

Case2


Win7+VMware+Ubuntu Server 配置过程

05 Nov 2012

引出

最近要将爬虫部署到集群上,故先在虚拟机上配置好一个系统镜像,再批量安装到集群上

平台环境

  • Windows 7
  • VMware 7
  • Ubuntu Server 12.04
  • JDK 7

Step1

把 Ubuntu Server 12.04 的 iso 镜像安装到虚拟机上

Step2 Network connection

虚拟机提供了4种网络连接方式,下面主要讲解前两种:

  • Bridged
  • NAT
  • Host-only
  • Custom

Bridged 桥接

配置成桥接网络连接模式的虚拟机就当作主机所在以太网的一部分,虚拟系统和宿主机器的关系,就像连接在同一个 Hub 上的两台电脑,可以像主机一样可以访问以太网中的所有共享资源和网络连接,可以直接共享主机网络的互联网接入线路访问互联网。

主机与虚拟机之间,以及各虚拟机之间都可以互访。

对应虚拟机就被当成主机所在以太网上的一个独立物理机来看待,各虚拟机通过默认的 VMnet0 网卡与主机以太网连接,虚拟机间的虚拟网络为 VMnet0 。这时你的虚拟机就像局域网中的一个独立的物理机一样。虚拟机中的操作系统可以 PING 通别的主机,反过来别的主机也可以 PING 虚拟机。想让它们相互通讯,你就需要为虚拟系统配置 IP 地址和子网掩码,否则就无法通信。

NAT

使用 NAT 模式,就是让虚拟系统借助 NAT (网络地址转换)功能,通过宿主机器所在的网络来访问公网。也就是说,使用 NAT 模式可以实现在虚拟系统里访问互联网。

NAT 模式下的虚拟系统的 TCP/IP 配置信息是由 VMnet8(NAT) 虚拟网络的 DHCP 服务器提供的,无法进行手工修改,因此虚拟系统也就无法和本局域网中的其他真实主机进行通讯。

采用NAT模式最大的优势是虚拟系统接入互联网非常简单,你不需要进行任何其他的配置,只需要宿主机器能访问互联网即可。

通常使用虚拟机上网就用 NAT 模式就好,简单不用配置。本次我需要用桥接模式,下面具体讲解一下:

Step2-1

在你安装上了虚拟机后要确保你也安装了桥接的协议,在“网络连接”可以看到有两个虚拟出来的网络:VMnet1、VMnet8

Step2-2

在“VMware Network Adapter VMnet1”属性中选择“VMware Bridge Protocol”协议

Step2-3

在虚拟机中的网络适配器(Network Adapter)中选择桥接(Bridged)的方式

到此虚拟机上的一些配置就完成了。下面开始配置 Ubuntu Server:

Step2-4 配置静态 IP 地址

首先在 Ubuntu 中的 /etc/network/interfaces 文件配置静态的 IP 地址,在使用桥接时,要把虚拟机中的 IP 地址配置成和主机在一个网段中,这样也就相当于占用了一个独立的 IP 地址。

1 $ sudo vim /etc/network/interfaces

重新载入设置:

1 $ sudo /etc/init.d/networking restart

Step2-5 配置DNS

打开/etc/resolv.conf

内容是一段警告:说这个文件是 resolvconf 程序动态创建的,不要直接手动编辑,修改将被覆盖。

果不其然,修改后重启就失效了,下面有两个解决方案:

方法一

通过修改:/etc/resolvconf/resolv.conf.d/base(这个文件默认是空的)

在里面插入:
nameserver 8.8.8.8
nameserver 8.8.4.4

如果有多个DNS就一行一个,修改好保存,然后执行:

1 $ resolvconf -u

再看/etc/resolv.conf,最下面就多了2行:

1 $ cat /etc/resolv.conf
2 # Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
3 #     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
4 nameserver 8.8.8.8
5 nameserver 8.8.4.4

可以看到我们的设置已经加上了,然后再 ping 一个域名,当时就可以解析了,无需重启。

方法二

通过修改 /etc/network/interfaces,在它的最后增加一句:

dns-nameservers 8.8.8.8

8.8.8.8是 Google 提供的 DNS 服务,这里只是举一个例子,你也可以改成电信运营商的 DNS。重启后 DNS 就生效了,这时候再看 /etc/resolv.conf,最下面就多了一行:

1 $ cat /etc/resolv.conf
2 # Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
3 #     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
4 nameserver 8.8.8.8 

>>Ubuntu下修改DNS重启也能用的方法

Step2-6 修改时区(中国上海)

默认安装的时区为美国东部时区EST

1 $ date
2 Mon Dec 10 23:18:16 EST 2012

修改为上海时区:

1 $ sudo cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

重启OK


Ubuntu+Java7 转生

18 Sep 2012

转生

Ubuntu 下有一个自带的 OpenJDK,但是不怎么好用,一般都还是会安装 JDK,因为 Oracle 收购了 SUN 公司,Java 也随之嫁到了 Oracle。故下面的这条命令不能用了:

1 $ sudo apt-get install sun-java6-jdk

只能从 Orcale Java 官网 上下载相应的压缩包

Step1

将下载好的文件 jdk1.7.03 解压在自己的文件下,比如 /home/chxt/java

Step2

1 $ sudo vim /etc/environment

在文件最后添加:

export JAVA_HOME=/home/chxt/java/jdk1.7.03
export JRE_HOME=/home/chxt/java/jdk1.7.03/jre
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

Step3

1 $ sudo vim /etc/profile

在文件最后添加:

export JAVA_HOME=/home/chxt/java/jdk1.7.03
export JRE_HOME=/home/chxt/java/jdk1.7.03/jre
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin

Step4

1 $ source /etc/environment
2 $ source /etc/profile
3 $ java -version

看到版本号证明已经安装成功

另一种配置方案(对当前使用用户)

1 $ vim ~/.bashrc

在文件最后添加:

export JAVA_HOME=/home/chxt/java/jdk1.7.03
export JRE_HOME=/home/chxt/java/jdk1.7.03/jre
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin

1 $ source ~/.bashrc

>>Ubuntu下安装JDK,Eclipse和Android SDK


Eclipse+SVN 解密

18 Sep 2012

Subclipse or Subversive

Eclipse 下连接 SVN 库有两种插件 —— Subclipse 与 Subversive ,可以说这两种插件都是非常优秀的插件,而对于使用者来说,选择使用哪种插件确实是个挺头疼的选择。

Subclipse,与 SVN 联系紧密,我们可以称之为 SVN 官方的 eclipse 插件。而 Subversive 则是 eclipse 官方的 SVN 插件。

Subclipse 是 SVN 直接支持的项目,在很早的时候就已经出现了。而 Subversive 最先是由一个第三方公司 Polarion 开发的。早先有传闻 Subclipse 将会成为 Eclipse Foundation 成员的传闻,可是最后却出现了令人大跌眼镜的结果,Subversive 率先成为了 Eclipse 的子项目。这中间到底出现什么情况,我们就不得而知了。或许 Eclipse 与 SVN 两个都非常成功的开源项目间,某些协议出现一些争议了吧。

不管是 Subclipse 还是 Subversive ,它们使用的 SVN 连接器不外乎这两种,JavaHL 和 SVNKit ,SVNKit 是 Subversion 的纯 Java 连接库版本,整个连接底层都是由 Java 实现的,不需要额外的支持。而 JavaHL 则使用的是 Subversion 原生的连接库,加上了 Java 调用库。这两种连接库给人表征的感觉应该是 JavaHL 在连接稳定性和速度上应该占优,而 SVNKit 则应该更省事,适用性更广。如果非要推荐一个的话,我还是建议先选择 JavaHL,如果 JavaHL 无法在你的系统中正常工作,再选择 SVNKit 。

如果非要来比较两种插件的话,只能以难分高下来做评判。说实在的,Google 过很多次两者比较这方面的文章,希望能让我有个很明确的抉择,就使用 Subclipse 或 Subversive ,其实最后得到的结果都是两者差不多的。写这篇文章的主要目的,不是告诉你它们两者难分高下,随便选一个就可以了,而是想总结一下自己使用它们的经验,而能指导一下应该偏向于选择哪个。

Subclipse vs Subversive

从两个插件使用的易用性上来说,只能真的说是难分高下。相对来说,Subversive 可能是属于 Eclipse 官方的缘故,似乎与 Eclipse 整合方面做得更加出色,相对来说在 Eclipse 中的操作会更让人感觉舒服一些,比如项目分支布局等等。而 Subclipse 则相对来说和 Subversion 联系更加紧密,Subversion 的更新、特有功能等等这方面的支持则远远超出了 Subversive 。

如何选择?可以从这几方面考虑:

  • Eclipse 是否是你操作 SVN 的唯一途径?如果是,偏向于选择 Subversive;如果不是,比如还要经常使用 TortoiseSVN ,则偏向与选择 Subclipse 。Subclipse 的操作更倾向于与 TortoiseSVN 习惯,而 Subversive 的操作更倾向于 Eclipse 习惯操作。
  • SVN是否是你的唯一版本管理系统(或最重要的管理系统),你是否对 SVN 的新功能、新特性比较感兴趣?如果是,偏向于选择 Subclipse ;否则,偏向于选择 Subversive。

你的 SVN 操作是否会比较简单?比如你是否仅仅使用的仅仅是简单的检出/提交,等等操作,也不愿意把时间花费在研究 SVN 的高级特性上。如果是,偏向于选择 Subversive,如果否,则建议选择 Subclipse 。

以上几点是否可以对你选择那个插件有所帮助呢?其实这两个插件都很不错,对于我们日常使用来说,哪个都能很好完成我们的任务,如果你还是不能确定,就别再费神在这上面花工夫了,也不用再在网上寻找两者比较了,随便选一个就行了。

我使用的是 Windows + Subclipse + JavaHL / Linux + Subclipse + SVNKit,下面具体讲解一下配置过程

Step1

首先需要安装 Subclipse,建议直接使用 Eclipse 自带的 Marketplace 安装,Help → Eclipse Marketplace → 搜索 Subclipse 安装

如果是 Windows Eclipse 这一步就可以了,用自带的 JavaHL;如果是 Linux Eclipse 则还需要第二步

Step2

在 SVNKit 官网下载 上查找相应的 Eclipse 更新网站地址,我使用的是 http://eclipse.svnkit.com/1.7.x,然后在 Eclipse 里安装

>>>Eclipse SVN插件比较 Subclipse vs Subversive
>>>eclipse配置svn客户端


Ubuntu下的谷歌拼音输入法

17 Sep 2012

最近研究基于 Hadoop 的全网爬虫,又用回到了 Ubuntu 系统下。实验室统一要用长期稳定版,由于不习惯于12.04的结构,故还是选择了10.04(好古老的),而输入法自然是最最要优先解决的,爱 GooglePinyin 就看这里

libgooglepinyin

推荐使用 libgooglepinyin 项目,它支持IBus下添加 GooglePinyin 输入法

Step1 安装依赖

1 $ sudo apt-get install cmake build-essential opencc mercurial ibus

Step2 安装 libgooglepinyin 库

1 $ hg clone http://code.google.com/p/libgooglepinyin/
2 
3 $ cd libgooglepinyin
4 
5 $ mkdir build; cd build
6 $ cmake .. -DCMAKE_INSTALL_PREFIX=/usr
7 
8 $ make
9 $ sudo make install

Step3 安装 ibus-googlepinyin 外壳

1 $ hg clone http://code.google.com/p/libgooglepinyin.ibus-wrapper/ ibus-googlepinyin
2 
3 $ cd ibus-googlepinyin
4 
5 $ mkdir build; cd build
6 $ cmake .. -DCMAKE_INSTALL_PREFIX=/usr
7 
8 $ make
9 $ sudo make install

Step4 启用 IBus

在“语言支持”中切换到 ibus 并重启,打开 IBUS设置→输入法→选择输入法→汉语→GooglePinyin,然后将其上升到顶。亲切的 GooglePinyin 就会在 Ctrl+Space 的切换下现出原形了

补充

SCIM 下也有 GooglePinyin,但稳定性不高

在 Ubuntu10.04 系统 Eclipse 中输入双引号或者分号等,会出现键盘失效,无法输入字符的问题,但是在别的地方又能输入,点击一下别的地方再回到 Eclipse 中又能动,很快就又死了,原因是 Eclipse 选择的当前输入法( input method )与用户自行安装的输入法兼容性问题。解决方法如下:
在 Eclipse 的工作区 右键–> Input Method –> SCIM Input Method 即可。


<< Previous Page Next Page >>
Fork me on GitHub