<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Fwolf's Blog &#187; Ubuntu - Fwolf's Blog</title>
	<atom:link href="http://www.fwolf.com/blog/post/tag/ubuntu/feed" rel="self" type="application/rss+xml" />
	<link>http://www.fwolf.com/blog</link>
	<description>随心·随意·随缘·努力～</description>
	<lastBuildDate>Sun, 29 Aug 2010 14:52:23 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Ubuntu 升级到 10.04 lucid</title>
		<link>http://www.fwolf.com/blog/post/5</link>
		<comments>http://www.fwolf.com/blog/post/5#comments</comments>
		<pubDate>Wed, 07 Jul 2010 07:06:46 +0000</pubDate>
		<dc:creator>Fwolf</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[lucid]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[ooo]]></category>
		<category><![CDATA[samba]]></category>
		<category><![CDATA[sshfs]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[upgrade]]></category>

		<guid isPermaLink="false">http://www.fwolf.com/blog/post/5</guid>
		<description><![CDATA[本来能够直接从 9.04 升级上来的，但由于我启用了 sshfs，而 mount 在网络启动之前执行，所以系统升级完启动后就挂在 mount sshfs 那里不动了，一开始不知道，以为不行了，就直接重新安装了 10.04，也好，4、5年了，该重装一会了。 启用 Ctrl+Alt+Backspace 快捷键重启 X System-&#62;Preferences-&#62;Keyboard-&#62;Layouts-&#62;Options，打开 Key sequence to kill the X server 并选中 Control+Alt+Backspace，立即生效，或者执行命令： $ setxkbmap -option terminate:ctrl_alt_bksp 这个是每次启动 X 之后执行才生效。 设置系统默认输入法 System-&#62;Administration-&#62;Language Support 中，Install/Remove Languages 中装上中文语言支持，安装 fcitx，然后在 Keyboard input method system 里选上 fcitx，重启 X。 Mysql 服务启动的问题 无法启动或者重启，修改 /etc/init/mysqld.conf，在 start on (net-device-up 后面添加内容如下： start on [...]]]></description>
			<content:encoded><![CDATA[<p>本来能够直接从 9.04 升级上来的，但由于我启用了 sshfs，而 mount 在网络启动之前执行，所以系统升级完启动后就挂在 mount sshfs 那里不动了，一开始不知道，以为不行了，就直接重新安装了 10.04，也好，4、5年了，该重装一会了。</p>

<h4>启用 <code>Ctrl+Alt+Backspace</code> 快捷键重启 X</h4>

<p><code>System-&gt;Preferences-&gt;Keyboard-&gt;Layouts-&gt;Options</code>，打开 <code>Key sequence to kill the X server</code> 并选中 <code>Control+Alt+Backspace</code>，立即生效，或者执行命令：</p>


<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ setxkbmap <span style="color: #660033;">-option</span> terminate:ctrl_alt_bksp</pre></div></div>


<p>这个是每次启动 X 之后执行才生效。</p>

<h4>设置系统默认输入法</h4>

<p><code>System-&gt;Administration-&gt;Language Support</code> 中，<code>Install/Remove Languages</code> 中装上中文语言支持，安装 fcitx，然后在 <code>Keyboard input method system</code> 里选上 fcitx，重启 X。</p>

<h4>Mysql 服务启动的问题</h4>

<p>无法启动或者重启，修改 <code>/etc/init/mysqld.conf</code>，在 <code>start on (net-device-up</code> 后面添加内容如下：</p>


<div class="wp_syntax"><div class="code"><pre class="conf" style="font-family:monospace;">start on (net-device-up IFACE=eth0</pre></div></div>


<p>如果提示 <code>Can't create test file</code> 类似的信息导致无法启用，是由于用户变更了 datadir，而系统没有赋予 mysql 读写那个目录的权限所致。修改 <code>/etc/apparmor.d/usr.sbin.mysqld</code> 添加下面的内容：</p>


<div class="wp_syntax"><div class="code"><pre class="config" style="font-family:monospace;">/your new datadir/ r,
/your new datadir/** rwk,</pre></div></div>


<p>并 <code>/etc/init.d/apparmor restart</code> 后 mysql 就能启动了。注意上面的 datadir 如果是 ln 指向，需要填写真实路径。</p>

<p>mysql 还有个烦人的问题，就是 bind-address 默认只是本机，如果想改成 ip 或者 0.0.0.0 代表所有地址，还不能着急，先 bind 127.0.0.1 启动一会，然后停止服务修改 bind-address，不然 <code>sudo service mysql</code> 脚本又会出现问题。</p>

<p>好像 mysql 的自动启动取消了？在 <code>/etc/rc.local</code> 中加一句 <code>service mysql start</code>。</p>

<h4>启动时检查完磁盘就没有反应的问题</h4>

<p>多半是由于 fstab 中有挂载 cifs/smbfs/sshfs 的行为，其实这个时候磁盘还没有检查完，而且永远也检查不完，因为网络还没有启用，那些需要网络挂载驱动器的行为就陷入了永远的等待状态，昏死的设定。</p>

<h4>显卡驱动安装参考</h4>

<ul>
<li><a href="https://help.ubuntu.com/community/RadeonDriver">Ubuntu Documentation > Community Documentation > RadeonDriver </a></li>
<li><a href="http://free3d.org/">3D Graphics hardware performance using Free Software drivers (X.Org DRI)</a></li>
</ul>

<h4>Openoffice.org 字体列表中不显示中文字体名称</h4>

<p>只显示为英文，这个需要修改 <code>/etc/environment</code>：</p>


<div class="wp_syntax"><div class="code"><pre class="conf" style="font-family:monospace;">LANG=&quot;en_US.UTF-8&quot;
LANGUAGE=&quot;en_US:en_GB:en&quot;
LC_CTYPE=&quot;zh_CN.UTF-8&quot;</pre></div></div>


<p>如果输入法又变成 ibus，<code>sudo im-switch -s fcitx</code> 后重启 X 即可。openoffice 是根据当前环境来决定是显示字体的中文名称还是英文名称的。</p>

<h4>Samba 共享中的 symbolic link 无法被访问</h4>

<p>需要在 <code>/etc/samba/smb.conf</code> 中添加下面几句内容：</p>


<div class="wp_syntax"><div class="code"><pre class="conf" style="font-family:monospace;">[global]
    follow symlinks = yes
    wide links = yes
    unix extensions = no</pre></div></div>


<h3>一点使用感觉</h3>

<ul>
<li>很多操作都是在窗口模式下实现，反而用 cli 不知该怎么作了。</li>
<li>易用性倒是好多了，却同时搞得一些复杂操作麻烦或者出问题了，比如 mysql 服务启动的问题，比如 fatab 里面加上个 sshfs 就无法启动的问题等等。</li>
</ul>

<h4>参考</h4>

<ul>
<li><a href="https://wiki.ubuntu.com/X/Config/DontZap">X/Config/DontZap</a></li>
<li><a href="http://www.ihacklog.com/linux/ubuntu/install-and-setup-ubuntu-10-04-lts-lucid-lynx.html">折腾Ubuntu 10.04 LTS (Lucid Lynx)</a></li>
<li><a href="http://www.osdtp.org/2010/02/26/ooo-faq-about-languages-and-fontnames/">OOo 系列语言相关问题</a></li>
<li><a href="http://ubuntuforums.org/showthread.php?t=1480858">Symbolic links in Samba Share in 10.04</a></li>
</ul>

	Tags: <a href="http://www.fwolf.com/blog/post/tag/lucid" title="lucid" rel="tag">lucid</a>, <a href="http://www.fwolf.com/blog/post/tag/mysql" title="mysql" rel="tag">mysql</a>, <a href="http://www.fwolf.com/blog/post/tag/ooo" title="ooo" rel="tag">ooo</a>, <a href="http://www.fwolf.com/blog/post/tag/samba" title="samba" rel="tag">samba</a>, <a href="http://www.fwolf.com/blog/post/tag/sshfs" title="sshfs" rel="tag">sshfs</a>, <a href="http://www.fwolf.com/blog/post/tag/ubuntu" title="Ubuntu" rel="tag">Ubuntu</a>, <a href="http://www.fwolf.com/blog/post/tag/upgrade" title="upgrade" rel="tag">upgrade</a><br />

	<h4>Related posts</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.fwolf.com/blog/post/428" title="升级到Ubuntu Intrepid后感觉到的一些变化 (2009-01-06)">升级到Ubuntu Intrepid后感觉到的一些变化</a> (0)</li>
	<li><a href="http://www.fwolf.com/blog/post/426" title="升级到8.10 intrepid过程中libc6依赖性死循环问题的解决 (2009-01-04)">升级到8.10 intrepid过程中libc6依赖性死循环问题的解决</a> (6)</li>
	<li><a href="http://www.fwolf.com/blog/post/152" title="[Ubuntu]使用点滴 (2006-07-08)">[Ubuntu]使用点滴</a> (7)</li>
	<li><a href="http://www.fwolf.com/blog/post/442" title="Ubuntu升级到9.04 Jaunty的变化和遇到的问题 (2009-05-15)">Ubuntu升级到9.04 Jaunty的变化和遇到的问题</a> (2)</li>
	<li><a href="http://www.fwolf.com/blog/post/403" title="Ubuntu从Gutsy升级到Hardy，php5-sybase又掉链子 (2008-06-12)">Ubuntu从Gutsy升级到Hardy，php5-sybase又掉链子</a> (2)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.fwolf.com/blog/post/5/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Ubuntu升级到9.04 Jaunty的变化和遇到的问题</title>
		<link>http://www.fwolf.com/blog/post/442</link>
		<comments>http://www.fwolf.com/blog/post/442#comments</comments>
		<pubDate>Fri, 15 May 2009 15:20:55 +0000</pubDate>
		<dc:creator>Fwolf</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[fluxbox]]></category>
		<category><![CDATA[font]]></category>
		<category><![CDATA[jaunty]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[upgrade]]></category>
		<category><![CDATA[xorg]]></category>

		<guid isPermaLink="false">http://www.fwolf.com/blog/post/442</guid>
		<description><![CDATA[长按键盘自动连续击键的间隔缩短了。 显卡驱动没有问题，终于能够摆脱8.10里像涂了墨水一样的中文字乱码了。 Firefox的速度好像也快了不少，或许也是显卡驱动的原因？ Fluxbox apps文件中Position设置LOWERLEFT/BOTTOMLEFT原来时从屏幕最下方算间距，现在时从工具栏上方开始算，所以原来的值要减去工具栏的高度（25）。 消失很久的启动时的Splash屏又回来了，不过是Xubuntu的小老鼠（我用的WM是Fluxbox），想取消的话，删掉usplash及其相关的包即可。 如果在没有正式发布的时候就升级了，每天的更新比正式发布后要多得多，每天都要下载一大堆包升级，得考虑好，当然你也可以忍着不频繁升级。 Fluxbox任务栏上当前聚焦的窗口和其他窗口的风格是一样的，区分不开了，更换任何styles都无效。 Firefox窗口的标题栏里中文字显示为方块 先这个是Gnome的问题，所有窗口标题栏中包含中文时都是方块，而Fluxbox工具栏上是能够正确显示中文的。尝试更换不同的fluxbox styles发现menu.title.font设置为dejavu字体时窗口标题栏就能正常显示中文了，其他的窗口内容、网页中文全部显示正常。 终于让我找到原因了，又是一个哭笑不得的问题，在我自定义风格里，使用了dejavusans这个字体，而这个字体现在好像在系统中找不到了，因此它就像出错后就不再往下执行了一样，导致后面overlay里定义的新字体也不生效，窗口栏上的中文就成方块了。换其他style之所以能正常显示窗口标题栏上的中文，是因为他们没用dejavusans这个字体。最后的解决方案，把这个自定义style里的dejavusans替换成dejavu -_-! 字体大小dpi优化 字体DPI设置会根据显示器进行优化，而不再局限于默认的96DPI，还可以在System → Preferences → Appearance → Fonts → Details里自行定义。原来是在.Xresources里设置的Xft.dpi:96，不知道还有用没。目前发现的问题是窗口标题栏中的文字比以前大了一些。 我的Fluxbox还遇到了一个问题，屏幕尺寸、位置计算出现了错误，原先我是/etc/gdm/Init/Default中用xrandr -s 1024x768强制重设分辨率，现在把这行禁用后发现桌面的“尺寸”比1024大，鼠标移动到屏幕边缘后会自动移动，但显示不全。 $ xdpyinfo &#124;grep resolution resolution: 78x78 dots per inch 78是显示器真正的dpi数，但按这个设置又显得字太小了。最后，把xorg.conf里大于1024的分辨率都删掉，这样就可以去掉上面xrandr那句了，显示也正常了，dpi仍然用的是96。 上某些网站中文字模糊（像粗体字那样的模糊） 打开/etc/fonts/conf.d/44-wqy-zenhei.conf，找到下面这行： &#60;edit name=&#34;antialias&#34; mode=&#34;assign&#34;&#62;&#60;bool&#62;true&#60;/bool&#62;&#60;/edit&#62; 把true改成false后重启X即可。 Ctrl+Alt+Backspace关闭X的组合键被禁用了 编辑/etc/X11/xorg.conf，在最后加上： Section &#34;ServerFlags&#34; Option &#34;DontZap&#34; &#34;no&#34; EndSection Tags: fluxbox, font, jaunty, Ubuntu, [...]]]></description>
			<content:encoded><![CDATA[<ul>
<li>长按键盘自动连续击键的间隔缩短了。</li>
<li>显卡驱动没有问题，终于能够摆脱8.10里像涂了墨水一样的中文字乱码了。</li>
<li>Firefox的速度好像也快了不少，或许也是显卡驱动的原因？</li>
<li>Fluxbox apps文件中Position设置LOWERLEFT/BOTTOMLEFT原来时从屏幕最下方算间距，现在时从工具栏上方开始算，所以原来的值要减去工具栏的高度（25）。</li>
<li>消失很久的启动时的Splash屏又回来了，不过是Xubuntu的小老鼠（我用的WM是Fluxbox），想取消的话，删掉<code>usplash</code>及其相关的包即可。</li>
</ul>

<p>如果在没有正式发布的时候就升级了，每天的更新比正式发布后要多得多，每天都要下载一大堆包升级，得考虑好，当然你也可以忍着不频繁升级。</p>

<h4>Fluxbox任务栏上当前聚焦的窗口和其他窗口的风格是一样的，区分不开了，更换任何styles都无效。</h4>

<h4>Firefox窗口的标题栏里中文字显示为方块</h4>

<p>先这个是Gnome的问题，所有窗口标题栏中包含中文时都是方块，而Fluxbox工具栏上是能够正确显示中文的。尝试更换不同的fluxbox styles发现<code>menu.title.font</code>设置为dejavu字体时窗口标题栏就能正常显示中文了，其他的窗口内容、网页中文全部显示正常。</p>

<p>终于让我找到原因了，又是一个哭笑不得的问题，在我自定义风格里，使用了dejavusans这个字体，而这个字体现在好像在系统中找不到了，因此它就像出错后就不再往下执行了一样，导致后面overlay里定义的新字体也不生效，窗口栏上的中文就成方块了。换其他style之所以能正常显示窗口标题栏上的中文，是因为他们没用dejavusans这个字体。最后的解决方案，把这个自定义style里的dejavusans替换成dejavu -_-!</p>

<h4>字体大小dpi优化</h4>

<p>字体DPI设置会根据显示器进行优化，而不再局限于默认的96DPI，还可以在System → Preferences → Appearance → Fonts → Details里自行定义。原来是在<code>.Xresources</code>里设置的<code>Xft.dpi:96</code>，不知道还有用没。目前发现的问题是窗口标题栏中的文字比以前大了一些。</p>

<p>我的Fluxbox还遇到了一个问题，屏幕尺寸、位置计算出现了错误，原先我是<code>/etc/gdm/Init/Default</code>中用<code>xrandr -s 1024x768</code>强制重设分辨率，现在把这行禁用后发现桌面的“尺寸”比1024大，鼠标移动到屏幕边缘后会自动移动，但显示不全。</p>


<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">	$ xdpyinfo <span style="color: #000000; font-weight: bold;">|</span><span style="color: #c20cb9; font-weight: bold;">grep</span> resolution
	  resolution:    78x78 dots per inch</pre></div></div>


<p>78是显示器真正的dpi数，但按这个设置又显得字太小了。最后，把<code>xorg.conf</code>里大于1024的分辨率都删掉，这样就可以去掉上面<code>xrandr</code>那句了，显示也正常了，dpi仍然用的是96。</p>

<h4>上某些网站中文字模糊（像粗体字那样的模糊）</h4>

<p>打开<code>/etc/fonts/conf.d/44-wqy-zenhei.conf</code>，找到下面这行：</p>


<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;">	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;edit</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;antialias&quot;</span> <span style="color: #000066;">mode</span>=<span style="color: #ff0000;">&quot;assign&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #000000; font-weight: bold;">&lt;bool<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>true<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/bool<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;/edit<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>


<p>把true改成false后重启X即可。</p>

<h4>Ctrl+Alt+Backspace关闭X的组合键被禁用了</h4>

<p>编辑<code>/etc/X11/xorg.conf</code>，在最后加上：</p>


<div class="wp_syntax"><div class="code"><pre class="ini" style="font-family:monospace;">	Section <span style="color: #933;">&quot;ServerFlags&quot;</span>
		Option <span style="color: #933;">&quot;DontZap&quot;</span> <span style="color: #933;">&quot;no&quot;</span>
	EndSection</pre></div></div>


	Tags: <a href="http://www.fwolf.com/blog/post/tag/fluxbox" title="fluxbox" rel="tag">fluxbox</a>, <a href="http://www.fwolf.com/blog/post/tag/font" title="font" rel="tag">font</a>, <a href="http://www.fwolf.com/blog/post/tag/jaunty" title="jaunty" rel="tag">jaunty</a>, <a href="http://www.fwolf.com/blog/post/tag/ubuntu" title="Ubuntu" rel="tag">Ubuntu</a>, <a href="http://www.fwolf.com/blog/post/tag/upgrade" title="upgrade" rel="tag">upgrade</a>, <a href="http://www.fwolf.com/blog/post/tag/xorg" title="xorg" rel="tag">xorg</a><br />

	<h4>Related posts</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.fwolf.com/blog/post/170" title="[Ubuntu]明明白白安装中文字体 (2006-05-17)">[Ubuntu]明明白白安装中文字体</a> (20)</li>
	<li><a href="http://www.fwolf.com/blog/post/403" title="Ubuntu从Gutsy升级到Hardy，php5-sybase又掉链子 (2008-06-12)">Ubuntu从Gutsy升级到Hardy，php5-sybase又掉链子</a> (2)</li>
	<li><a href="http://www.fwolf.com/blog/post/414" title="接多显示器的一点提示 (2008-07-17)">接多显示器的一点提示</a> (0)</li>
	<li><a href="http://www.fwolf.com/blog/post/428" title="升级到Ubuntu Intrepid后感觉到的一些变化 (2009-01-06)">升级到Ubuntu Intrepid后感觉到的一些变化</a> (0)</li>
	<li><a href="http://www.fwolf.com/blog/post/426" title="升级到8.10 intrepid过程中libc6依赖性死循环问题的解决 (2009-01-04)">升级到8.10 intrepid过程中libc6依赖性死循环问题的解决</a> (6)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.fwolf.com/blog/post/442/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Git起步</title>
		<link>http://www.fwolf.com/blog/post/429</link>
		<comments>http://www.fwolf.com/blog/post/429#comments</comments>
		<pubDate>Wed, 25 Mar 2009 18:18:10 +0000</pubDate>
		<dc:creator>Fwolf</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Svn/Git]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[cgi]]></category>
		<category><![CDATA[config]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[gitosis]]></category>
		<category><![CDATA[gitweb]]></category>
		<category><![CDATA[hooks]]></category>
		<category><![CDATA[lucid]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[webdav]]></category>

		<guid isPermaLink="false">http://www.fwolf.com/blog/post/429</guid>
		<description><![CDATA[我的学习路径：git basic, http webdav, git-svn, gitosis, gitweb，下面是一些学习记录。 http webdav方式访问 ubuntu下安装非常简单，用apt装上git-core包即可。git仓库的外部访问，首先就是最熟悉的用http协议走apache上的webdav服务，方便啊。git自身的身份认证和权限分配弱了一些，不过可以借助apache实现用户分配，passwd文件直接用svn的也没问题。apache配置示例如下： Alias /git "/big2/git" &#60;Location /git/test.git&#62; DAV on AuthType Basic AuthName "Test git freely" AuthUserFile "/big2/svn/svnpasswd" #Require user Fwolf Require valid-user &#60;/Location&#62; 但这样远不如使用ssh/git协议访问仓库速度快和稳定，但更适合公开/对外发布。另外和svn的webdav方式不同，git webdav是一种dumb transport，不仅慢而且比较傻，只能进行简单的存、取文件操作，所以hooks是不起作用的（很多文章中说的提交后要在hooks/post-update里启用git-update-server-info，指的是git/ssh方式更新后，为webdav对外发布作准备）不会自动进行和git相关的其它处理。 最好用的还是gitosis，后面会提到。有些内容先以webdav方式下来记，使用的时候根据不同的方式转换用户角色即可。 创建服务端的仓库 其实和svn创建仓库也是比较类似的，找一空目录，比如叫test.git，执行： $ git --bare init $ sudo chown www-data:www-data * -R 客户端就可以下载了，但还有些问题： $ git clone https://domain.tld/git/test.git gittest Initialized empty [...]]]></description>
			<content:encoded><![CDATA[<p>我的学习路径：git basic, http webdav, git-svn, gitosis, gitweb，下面是一些学习记录。</p>

<h3>http webdav方式访问</h3>

<p>ubuntu下安装非常简单，用apt装上git-core包即可。git仓库的外部访问，首先就是最熟悉的用http协议走apache上的webdav服务，方便啊。git自身的身份认证和权限分配弱了一些，不过可以借助apache实现用户分配，passwd文件直接用<a href="66">svn的</a>也没问题。apache配置示例如下：</p>

<pre><code>Alias /git "/big2/git"
&lt;Location /git/test.git&gt;
    DAV on
    AuthType Basic
    AuthName "Test git freely"
    AuthUserFile "/big2/svn/svnpasswd"
    #Require user Fwolf
    Require valid-user
&lt;/Location&gt;
</code></pre>

<p>但这样远不如使用ssh/git协议访问仓库速度快和稳定，但更适合公开/对外发布。另外和svn的webdav方式不同，git webdav是一种<code>dumb transport</code>，不仅慢而且比较傻，只能进行简单的存、取文件操作，所以hooks是不起作用的（很多文章中说的提交后要在<code>hooks/post-update</code>里启用<code>git-update-server-info</code>，指的是git/ssh方式更新后，为webdav对外发布作准备）不会自动进行和git相关的其它处理。</p>

<p>最好用的还是gitosis，后面会提到。有些内容先以webdav方式下来记，使用的时候根据不同的方式转换用户角色即可。</p>

<h3>创建服务端的仓库</h3>

<p>其实和<a href="63">svn创建仓库</a>也是比较类似的，找一空目录，比如叫<code>test.git</code>，执行：</p>

<pre><code>$ git --bare init
$ sudo chown www-data:www-data * -R
</code></pre>

<p>客户端就可以下载了，但还有些问题：</p>

<pre><code>$ git clone https://domain.tld/git/test.git gittest
Initialized empty Git repository in /home/fwolf/dev/gittest/.git/

error: server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt
</code></pre>

<p>首先遇到的是证书错误，git使用curl，所以证书的处理和svn也不一样，用firefox浏览git网站，在Page Info->View Certificate->Details中把网站的根证书(Issued By/root)导出为一个pem文件，然后将这个pem文件的内容添加到<code>/etc/ssl/certs/ca-certificates.crt</code>的末尾就可以了。接着遇到的是401身份验证错误：</p>

<pre><code>error: The requested URL returned error: 401
</code></pre>

<p>git不像svn会自动提示用户名/密码，因为它用的是webdav的原生功能，所以需要在<code>$HOME</code>下创建文件<code>.netrc</code>（记得将权限修改为600）：</p>

<pre><code>machine domain.tld
login Fwolf
password your_passwd
</code></pre>

<p>最后，还是仓库本身不完善的问题：</p>

<pre><code>warning: remote HEAD refers to nonexistent ref, unable to checkout.
</code></pre>

<p>在服务器上仓库目录，执行<code>$ git update-server-info</code>并再次chown到www-data就行了。初次push得指明服务器上的origin对应本地master分支/branch：</p>

<pre><code>$ git push origin master
</code></pre>

<p>而下载之前，还要设置下载后放到那个分支、与哪个分支的现有内容进行merge：</p>

<pre><code>$ git config branch.master.remote origin
$ git config branch.master.merge master
$ git pull  # 注意如果服务器是新建的空repo，得随便push点东西才好pull
</code></pre>

<h3>gitosis</h3>

<p>还是通过apt安装，gitosis使用SSH key来认证用户，但用户不需要在主机上开账号，而是公用主机上的一个受限账号。首先创建这个账号（名称可变）：</p>

<pre><code>sudo adduser \
    --system \
    --shell /bin/sh \
    --gecos 'git user' \
    --group \
    --disabled-password \
    --home /big2/gitosis \
    git
</code></pre>

<p>然后生成自己用户的ssh密钥，可以在git用户的$HOME下操作：</p>

<pre><code>ssh-keygen -t rsa
</code></pre>

<p>不要密码，可以起名叫git_rsa[.pub]，然后用公钥来初始化gitosis的目录：</p>

<pre><code>$ sudo -H -u git gitosis-init &lt; /home/fwolf/.ssh/git_rsa.pub 
Initialized empty Git repository in /big2/gitosis/repositories/gitosis-admin.git/
Reinitialized existing Git repository in /big2/gitosis/repositories/gitosis-admin.git/
</code></pre>

<p>可以看出gitosis自己也在用git仓库的形式存储东西，传递公钥进去是为了配置自动登录，将公钥写入git用户的<code>$HOME/.ssh/authorized_keys</code>。接下来就启用gitosis仓库的post-update hook：</p>

<pre><code>$ sudo chmod 755 repositories/gitosis-admin.git/hooks/post-update
</code></pre>

<p>其实用apt安装的gitosis，这个post-update早已指向其它文件并具有x属性了。</p>

<p>一点提示：把gitosis的repositories和自己原先的git repo目录弄到一起，以后方便，因为gitosis自己的管理也是要通过git来提交的，在客户端先修改<code>$home/.ssh/config</code>：</p>

<pre><code>Host git.domain.tld
Compression yes
IdentityFile ~/.ssh/git_rsa # 注意这个是私钥，不是pub公钥
</code></pre>

<p>然后从客户端clone gitosis的配置文档：</p>

<pre><code>$ git clone git@git.domain.tld:gitosis-admin.git
</code></pre>

<p>注意实际上这个<code>gitosis-admin.git</code>应该是在git用户的$HOME下的<code>repositories</code>目录下，但这么写才能下载。clone得到一个配置文件<code>gitosis.conf</code>和目录<code>keydir/</code>，对了，git配置的修改、上传也是通过git提交，并且由于刚才设置的post-update hook，立即生效。所以现在就能够远程修改、提交配置了。下面是一份比较完整的自说明的<code>gitosis.conf</code>：</p>

<pre><code># example: http://eagain.net/gitweb/?p=gitosis.git;a=blob;f=example.conf
[gitosis]

## Allow gitweb to show all known repositories. If you want gitweb,
## you need either this or a [repo foo] section for each repository
## you want visible in gitweb.
gitweb = no

[group gitosis-admin]
writable = gitosis-admin
# member is key file name, without (.pub)
members = fwolf

# user group
[group all]
# members = jdoe alice bob @anothergroup
members = fwolf
# this user group is writeable to ... repo, eg: test.git.
# writeable = foo bar baz/thud
writeable = test
#readonly = somerepo

[repo test]
## Allow gitweb to show this repository.
gitweb = yes
## Oneline description of the project, mostly for gitweb.
description = Fwolf's test git repository
## Owner of this repository. Used in gitweb list of projects.
owner = Fwolf
## Allow git-daemon to publish this repository.
#daemon = yes
daemon = no
</code></pre>

<p>平时就是为其它用户添加SSH key，然后用<code>git@git.domain.tld:repo.git</code>来连接服务器，gitosis会自动比对服务器上的pub key，判断出用户是谁。</p>

<h3>gitweb</h3>

<p>用apt安装，得到<code>/usr/lib/cgi-bin/gitweb.cgi</code>，由于<code>cgi-bin</code>已经由ubuntu设置好了，apache只要设置一下资源文件路径即可：</p>

<pre><code>Alias /gitweb "/usr/share/gitweb"
</code></pre>

<p>然后修改<code>/etc/gitweb.conf</code>：</p>

<pre><code># path to git projects (&lt;project&gt;.git)
$projectroot = "/big2/git";

$site_name = "Fwolf's Git Repositories";
@git_base_url_list = ("ssh://git\@git.domain.tld");

# directory to use for temp files
$git_temp = "/tmp";

# target of the home link on top of all pages
#$home_link = $my_uri || "/";

# html text to include at home page
$home_text = "indextext.html";

# file with project list; by default, simply scan the projectroot dir.
$projects_list = "/big2/gitosis/gitosis/projects.list";
# Avoid use guess repo's address and edit url manually
$strict_export = 1;

# stylesheet to use
$stylesheet = "/gitweb/gitweb.css";
# logo to use
$logo = "/gitweb/git-logo.png";
# the 'favicon'
$favicon = "/gitweb/git-favicon.png";
</code></pre>

<p>重启apache后就能够用<code>http://git.domain.tld/cgi-bin/gitweb.cgi</code>访问了。</p>

<h3>git-svn混用</h3>

<p>首先还要安装git-svn包，git和svn混用的好处就是既可以用git进行本地提交和灵活的分支，又能够用svn实现集中管理和分发，缺点我想可能就是svn的revision号在git里没有了，另外git有些太灵活，不是很好入门。</p>

<p>首先导入svn的现有项目到一个空目录：</p>

<pre><code>$ git svn clone --username your-name -s https://domain.tld/svn/repo
# older versions of git: replace "-s" with "-Ttrunk -bbranches -ttags"
</code></pre>

<p>就这么简单，很多工作git-svn都代劳了，剩下就当正常的git目录使用即可，比如为他们指定git仓库的位置，并下载文件：</p>

<pre><code>$ git config remote.origin.url https://domain.tld/git/test.git
$ git config remote.origin.fetch +refs/heads/*:refs/remotes/origin/*
$ git config branch.master.remote origin
$ git config branch.master.merge refs/heads/master
$ git checkout master   #回到master分支
$ git pull
</code></pre>

<p>向svn仓库提交：</p>

<pre><code>$ git svn dcommit
</code></pre>

<p>从svn仓库接受更新：</p>

<pre><code>$ git svn rebase
</code></pre>

<p>在git-svn的使用中还发现，如果在机器A上使用git-svn，但是在另外一台机器B上用纯git进行了push，那么B上的commit是不会被git-svn认出来并dcommit的，只有pull下来，然后再假commit一下才能让git-svn看到。</p>

<h3>仓库地址变更</h3>

<p>服务器上直接修改仓库目录名和apache设置，客户端上：</p>

<pre><code>$ git config remote.origin.url https://domain.tld/git/testnew.git
$ git pull  # 这个必须要做，不然不能push
Merge made by recursive.
$ git push
</code></pre>

<h3>git-svn方式下变更svn的地址</h3>

<p>首先要修改所有commit中的地址：</p>

<pre><code>$ git filter-branch --msg-filter 'sed "s/domain_old\/trunk/domain_new\/trunk/g"' $(cat .git/packed-refs | awk '// {print $2}' | grep -v 'pack-refs')
</code></pre>

<p>然后删掉缓存，修改地址，重新下载：</p>

<pre><code>$ rm -rf .git/svn
# 编辑`.git/config`修改`[svn-remote "svn"]`的url。
$ git svn rebase (--all)
</code></pre>

<p>我还曾经遇到过这样的错误：</p>

<pre><code>$ git svn rebase
Unable to determine upstream SVN information from working tree history
</code></pre>

<p>不太好处理，这里有些<a href="http://basementcoders.com/?p=63">参考信息</a>，我是在一个repo里pull另外一个仓库的内容了，照下面方式处理也不管用：</p>

<ul>
<li>从svn里重新clone出一份</li>
<li>git里创建个branch保存一下</li>
<li>git连接上服务器，pull</li>
<li>git checkout 到刚才创建的branch</li>
<li>git merge &#8211;no-ff master</li>
<li>git svn rebase/dcommit</li>
</ul>

<p>效果不好，不仅产生大量的conflict，而且还是只能在新创建的branch上rebase/dcommit。大概是出现了两“棵”树，怎么也捏不到一起，最后只好重建仓库。</p>

<h3>其它使用技巧/tips</h3>

<ul>
<li>回上个版本 <code>$ git reset --hard HEAD^</code></li>
<li>得到一个文件5个版本以前的状态 <code>$ git checkout HEAD~5 foo.c</code></li>
<li>由于git是分布式的scm，所以<code>$Id</code>被彻底消灭掉了。</li>
<li>不像svn，git能够记录文件的执行属性。</li>
<li>为显示加上颜色 <code>$ git config color.(branch|diff|interactive|status) auto</code>，或者<code>$ git config color.ui true</code></li>
<li>hooks不算仓库的内容，每个repo的hooks可以不同。</li>
<li>当心svn的hooks，如果git里已经commit，却因为svn的hooks使git-svn的dcommit失败，很麻烦。</li>
<li><code>.gitignore</code>里可以用<code>config.php</code>忽略文件，并且用<code>!mt/config.php</code>指明个别文件还是要归入scm管理的。</li>
<li>从现有的客户端目录中生成仓库目录 <code>$ git clone --bare dev_dir repo_dir</code> 每个客户端都是一个完整备份，方便。</li>
<li>用于ignore文件，<code>.gitignore</code>是要提交的版本，<code>.git/info/exclude</code>则是只在你本地生效的版本，不提交。</li>
<li>仅给ssh登录的开发者push/pull的访问权限，将其shell设置为<code>/usr/bin/git-shell</code>（未测试）.</li>
<li><code>info/allowed-users</code>可以控制用户对branch/tag的访问权限（未测试）。</li>
<li><code>git --bare init --shared=group</code>可以让仓库被同group的用户共享，不过有gitosis就不用这个了，我没测试。</li>
</ul>

<h4>参考</h4>

<ul>
<li><a href="http://flavio.castelli.name/howto_use_git_with_svn">Howto use Git and svn together(暂时不想向svn提交的用git-stash处理)</a></li>
<li><a href="http://zhwen.org/?p=articles/git">git使用总结</a></li>
<li><a href="http://google-opensource.blogspot.com/2008/05/develop-with-git-on-google-code-project.html">Develop with Git on a Google Code Project</a></li>
<li><a href="http://www.dualface.com/blog/?p=591">git-svn 使用</a></li>
<li><a href="http://blog.csdn.net/sunrock/archive/2008/06/05/2514204.aspx">git使用笔记收藏</a></li>
<li><a href="http://blog.punkid.cn/2008/03/28/howto-setup-git-repo-on-dreamhost/">在Dreamhost主机上搭建Git</a></li>
<li><a href="http://www.kernel.org/pub/software/scm/git/docs/howto/setup-git-server-over-http.txt">Setting up a git repository which can be pushed into and pulled from over HTTP(S)</a></li>
<li><a href="http://blog.ashchan.com/archive/2008/06/30/tags-on-git/">Tags on Git</a></li>
<li><a href="http://www.wretch.cc/blog/michaeloil/22286355">架設 Git Server(透過http &amp; 不透過http)</a></li>
<li><a href="http://blog.wangbin1979.com/2009/Mar/07">尝试使用git post-receive hook来自动更新blog</a></li>
<li><a href="http://git.or.cz/gitwiki/GitFaq#head-bbd07820198a9b8c6ec4fad4932341b64378a5f6">My HTTP repository has updates, which git clone misses. What happened?</a></li>
<li><a href="http://www.kernel.org/pub/software/scm/git/docs/githooks.html">githooks(5) Manual Page </a></li>
<li><a href="http://debuggable.com/posts/git-tip-auto-update-working-tree-via-post-receive-hook:49551efe-6414-4e86-aec6-544f4834cda3">Git Tip: Auto update working tree via post-receive hook</a></li>
<li><a href="http://scie.nti.st/2007/11/14/hosting-git-repositories-the-easy-and-secure-way">Hosting Git repositories, The Easy (and Secure) Way(架设gitosis)</a></li>
<li><a href="http://robbat2.livejournal.com/218418.html">Gitosis+GitWeb on Gentoo</a></li>
<li><a href="http://blog.chunzi.org/2008/11/24/57">gitweb on ubuntu</a></li>
<li><a href="http://www.robinlu.com/blog/archives/194">如何在svn系统中使用git</a></li>
<li><a href="http://s5unty.blogspot.com/2008/03/git-svn.html">git-svn 常用功能示例</a></li>
<li><a href="http://crazycode.javaeye.com/blog/213212">git-svn使用方式及使用中的问题（已解决）</a></li>
<li><a href="http://crazycode.javaeye.com/blog/311564">使用git bisect快速定位引入错误的版本</a></li>
</ul>

<h4>Update @ 2009-03-27</h4>

<p>使用git-svn的时候，有时候会出现git和svn树不太同步的情况，在进行svn rebase的时候总是重新merge文件，这种现象多是由于以前没有正确rebase引起的，而rebase不成功的一种原因就是git的<code>fast forward</code>。简单理解一下，git是按照树形结构排下来的，如果遇到前后两个节点被判定为“重复”的，git就聪明的作了个<code>fast forward</code>，直接使用后者了。这在git里没事，因为都是一颗树，而对于svn就不行了，它还记录着要从前面那个节点开始呢，所以合并的时候就出现了两个源头的情况，自然会产生问题。所以大体上向svn更新的顺序应该是这样的：</p>

<ul>
<li>git push      # git更新</li>
<li>git pull &#8211;no-ff  # 此处的&#8211;no-ff最为重要，平时可以不用，这里要用</li>
<li>git svn rebase    # 准备提交到svn之前先和当前的树合并</li>
<li>git svn dcommit</li>
<li>git pull &#8211;no-ff</li>
<li># 后面就是检查了，前面操作正常的话不会产生新的有效更新了</li>
<li>git push</li>
<li>git svn dcommit</li>
<li>git svn rebase</li>
<li>git pull</li>
<li>git push</li>
</ul>

<p>附一张比较典型的出错后来回折腾的结果图：
<a href="http://www.flickr.com/photos/fwolf/3389188179/" title="git-svn rebase dcommit error by fwolf, on Flickr"><img src="http://farm4.static.flickr.com/3581/3389188179_7302983664.jpg" width="266" height="467" alt="git-svn rebase dcommit error" /></a></p>

<h4>参考 @ 2009-03-29</h4>

<ul>
<li><a href="http://graysky.org/2008/12/git-branch-auto-tracking/">Git Branch Auto-Tracking</a> 从服务器上pull一个branch以后，方便的track起来</li>
<li><a href="http://blog.ericgoodwin.com/2008/4/10/auto-completion-with-git">Git Auto Completion On OS X</a> 命令自动补全</li>
<li><a href="http://www.zorched.net/2008/04/14/start-a-new-branch-on-your-remote-git-repository/">Start a New Branch on your Remote Git Repository</a></li>
</ul>

<p>有了<code>git track</code>以后，新建要和服务器同步的branch：</p>

<pre><code>$ git branch fwolf
Branch fwolf set up to track local branch refs/heads/master.

$ git track fwolf origin
tracking origin/fwolf

$ git checkout fwolf
Switched to branch "fwolf"

$ git push origin fwolf
Total 0 (delta 0), reused 0 (delta 0)
To git@domain.tld:repo.git
 * [new branch]      fwolf -&gt; fwolf
</code></pre>

<p>而从其它客户端下载这个branch就简单多了：</p>

<pre><code>$ git branch --track fwolf origin/fwolf
Branch fwolf set up to track remote branch refs/remotes/origin/fwolf.
</code></pre>

<p>掌握原理，不用<code>git track</code>也一样可以实现的。</p>

<h4>Update @ 2009-04-18</h4>

<p>MediaTemple使用的是CentOS，安装git也很简单：</p>

<pre><code>$ rpm -Uvh http://mirror.centos.org/centos/5/os/i386/CentOS/python-iniparse-0.2.3-4.el5.noarch.rpm
$ rpm -Uvh http://mirror.centos.org/centos/5/os/i386/CentOS/yum-3.2.19-18.el5.centos.noarch.rpm http://mirror.centos.org/centos/5/os/i386/CentOS/yum-fastestmirror-1.1.16-13.el5.centos.noarch.rpm  # 版本号可能会有变化
$ rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-2.noarch.rpm
$ yum -y update
$ yum install git
</code></pre>

<p>参考：</p>

<ul>
<li><a href="http://www.theonlyjames.com/2008/08/yum-git-dv-3-5/">Installing yum and git on a MediaTemple (dv) 3.5</a></li>
<li><a href="http://uptolife.blogspot.com/2009/03/git.html">装上个git</a></li>
<li><a href="http://gonefish.cn/weblog/easy-install-git-in-centos/">在CentOS上安装Git</a></li>
<li><a href="http://www.themattharris.com/2008/08/06/installing-git-binaries-onto-a-mediatemple-server/">Installing Git binaries onto a MediaTemple server</a></li>
</ul>

<h4>Update @ 2009-04-27</h4>

<p>升级到ubuntu 9.04 jaunty后，客户端push时会遇到错误：</p>

<pre><code>$ git push
/usr/bin/gitosis-serve:5: UserWarning: Unbuilt egg for ClientCookie [unknown version] (/usr/lib/python2.6/dist-packages)
  from pkg_resources import load_entry_point
Traceback (most recent call last):
  File "/usr/bin/gitosis-serve", line 5, in &lt;module&gt;
    from pkg_resources import load_entry_point
  File "/usr/lib/python2.6/dist-packages/pkg_resources.py", line 2562, in &lt;module&gt;  
    working_set.require(__requires__)
  File "/usr/lib/python2.6/dist-packages/pkg_resources.py", line 626, in require
    needed = self.resolve(parse_requirements(requirements))
  File "/usr/lib/python2.6/dist-packages/pkg_resources.py", line 524, in resolve
    raise DistributionNotFound(req)  # XXX put more info here
pkg_resources.DistributionNotFound: gitosis==0.2
fatal: The remote end hung up unexpectedly
</code></pre>

<p>半天查不出原因，只是怀疑和python的版本有关系（2.5/2.6），因为<a href="http://packages.debian.org/lenny/all/gitosis/filelist">gitosis在debian包中的文件</a>，显示应该是对应python 2.5的，不过，试着自己用python（2.6）重新下载安装了一遍gitosis，好了：</p>


<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">	$ git clone git:<span style="color: #000000; font-weight: bold;">//</span>eagain.net<span style="color: #000000; font-weight: bold;">/</span>gitosis
	$ <span style="color: #7a0874; font-weight: bold;">cd</span> gitosis
	$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> python setup.py <span style="color: #c20cb9; font-weight: bold;">install</span></pre></div></div>


<p>不懂Python太吃亏了呀。另外<code>aptitude reinstall gitosis</code>是没用的。</p>

<h4>Update @ 2009-05-15</h4>

<p>从<a href="http://plog.longwin.com.tw/">Tsung</a>那里学来<a href="http://plog.longwin.com.tw/my_note-unix/2009/05/15/git-initial-env-setup-2009">一招</a>，可以更改 Git 默认的信息存放目录 .git ：</p>

<pre><code>修改 Shell 變數 GIT_DIR =&gt; "export GIT_DIR=.test"
</code></pre>

<h4>Update @ 2010-08-03</h4>

<p>升级到 Ubuntu 10.04 Lucid 以后，gitosis 自带的 hook 文件 post-update，就是修改权限等等 commit 后，自动出发 gitosis 更新相关配置的钩子，原来 ln 到的 <code>/usr/share/python-support/gitosis/gitosis-0.2-py2.5.egg/gitosis/templates/admin/hooks/post-update</code> 无效了，更换成 <code>/usr/share/pyshared/gitosis/templates/admin/hooks/post-update</code> 就可以了，参见<a href="https://bugs.launchpad.net/ubuntu/+source/gitosis/+bug/536775">Bug报告</a>。挺让人无语的bug，我折腾了半天还以为是权限设置出了什么问题呢。</p>

	Tags: <a href="http://www.fwolf.com/blog/post/tag/apache" title="Apache" rel="tag">Apache</a>, <a href="http://www.fwolf.com/blog/post/tag/bug" title="bug" rel="tag">bug</a>, <a href="http://www.fwolf.com/blog/post/tag/cgi" title="cgi" rel="tag">cgi</a>, <a href="http://www.fwolf.com/blog/post/tag/config" title="config" rel="tag">config</a>, <a href="http://www.fwolf.com/blog/post/tag/git" title="git" rel="tag">git</a>, <a href="http://www.fwolf.com/blog/post/tag/gitosis" title="gitosis" rel="tag">gitosis</a>, <a href="http://www.fwolf.com/blog/post/tag/gitweb" title="gitweb" rel="tag">gitweb</a>, <a href="http://www.fwolf.com/blog/post/tag/hooks" title="hooks" rel="tag">hooks</a>, <a href="http://www.fwolf.com/blog/post/tag/lucid" title="lucid" rel="tag">lucid</a>, <a href="http://www.fwolf.com/blog/post/tag/svn" title="svn" rel="tag">svn</a>, <a href="http://www.fwolf.com/blog/post/tag/ubuntu" title="Ubuntu" rel="tag">Ubuntu</a>, <a href="http://www.fwolf.com/blog/post/tag/webdav" title="webdav" rel="tag">webdav</a><br />

	<h4>Related posts</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.fwolf.com/blog/post/127" title="利用SVN更新网站 (2006-01-19)">利用SVN更新网站</a> (7)</li>
	<li><a href="http://www.fwolf.com/blog/post/411" title="由一个错误学到的一些php安全配置问题 (2008-07-13)">由一个错误学到的一些php安全配置问题</a> (4)</li>
	<li><a href="http://www.fwolf.com/blog/post/152" title="[Ubuntu]使用点滴 (2006-07-08)">[Ubuntu]使用点滴</a> (7)</li>
	<li><a href="http://www.fwolf.com/blog/post/431" title="[Git]提交后自动发email (2009-03-27)">[Git]提交后自动发email</a> (2)</li>
	<li><a href="http://www.fwolf.com/blog/post/5" title="Ubuntu 升级到 10.04 lucid (2010-07-07)">Ubuntu 升级到 10.04 lucid</a> (2)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.fwolf.com/blog/post/429/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>升级到Ubuntu Intrepid后感觉到的一些变化</title>
		<link>http://www.fwolf.com/blog/post/428</link>
		<comments>http://www.fwolf.com/blog/post/428#comments</comments>
		<pubDate>Tue, 06 Jan 2009 15:43:05 +0000</pubDate>
		<dc:creator>Fwolf</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[ATI]]></category>
		<category><![CDATA[benchmark]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[font]]></category>
		<category><![CDATA[innodb]]></category>
		<category><![CDATA[intrepid]]></category>
		<category><![CDATA[ip]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[nvidia]]></category>
		<category><![CDATA[ping]]></category>
		<category><![CDATA[sysinfo]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[WenQuanYi]]></category>

		<guid isPermaLink="false">http://www.fwolf.com/blog/?p=428</guid>
		<description><![CDATA[第一，一台服务器，双网卡，配置两个ip地址，这两个ip地址同属一个网段，因此网关设置为相同。升级前一切正常，升级后只能让同网段的其它机器ping通，其它网段机器即使防火墙规则允许也ping不通，去掉其中一个ip地址的网关设置后就可以了。 第二是和mysql相关的怪怪的问题，以前mysql设置中都有一项： innodb_flush_log_at_trx_commit=1 升级后，一台P4 1.7 256M内存的机器insert数据正常，另外一台IBM x3650 双5160 3.0GHz cpu 4G内存机器的insert却极慢（10条数据要5秒），不光是比以前Feisty慢，比刚才那台P4机器都要慢很多倍。将此项值调整为2以后恢复正常，insert 1000条数据耗时0.25秒左右。P4机器也将此值调整为2后有改进，但不如x3650明显，insert 1000条数据耗时5秒多。 第三，登录后欢迎屏幕里的那个系统信息我很喜欢： System information as of Tue Jan 6 23:50:02 CST 2009 System load: 0.0 Memory usage: 77% Processes: 118 Usage of /home: 19.4% of 24.03GB Swap usage: 34% Users logged in: 3 如果没有出现，把landscape-common这个包装上，并且平时可以用landscape-sysinfo命令调出类似信息。 Update @ 2009-01-13 字体问题又出现了，网上有很多修改文泉驿字体的方法，我则是/etc/fonts/conf.avail下44-wqy-zenhei.conf和69-language-selector-zh-cn.conf中WenQuanYi Zen Hei或WenQuanYi Bitmap Song前面加上Simsun，字体倒是还是原样（默认宋体），但firefox和其它X程序有时候字体乱成一片，也有说像墨点或者重叠的，反正鼠标选中后就恢复了，有人说是驱动的问题，把nvidia-glx-96换成nvidia-glx-71干脆X就起不来了，其它的173 177 [...]]]></description>
			<content:encoded><![CDATA[<p>第一，一台服务器，双网卡，配置两个ip地址，这两个ip地址同属一个网段，因此网关设置为相同。升级前一切正常，升级后只能让同网段的其它机器ping通，其它网段机器即使防火墙规则允许也ping不通，去掉其中一个ip地址的网关设置后就可以了。</p>

<p>第二是和mysql相关的怪怪的问题，以前mysql设置中都有一项：</p>

<pre><code>innodb_flush_log_at_trx_commit=1
</code></pre>

<p>升级后，一台P4 1.7 256M内存的机器insert数据正常，另外一台IBM x3650 双5160 3.0GHz cpu 4G内存机器的insert却极慢（10条数据要5秒），不光是比以前Feisty慢，比刚才那台P4机器都要慢很多倍。将此项值调整为2以后恢复正常，insert 1000条数据耗时0.25秒左右。P4机器也将此值调整为2后有改进，但不如x3650明显，insert 1000条数据耗时5秒多。</p>

<p>第三，登录后欢迎屏幕里的那个系统信息我很喜欢：</p>

<pre><code>  System information as of Tue Jan  6 23:50:02 CST 2009

  System load:    0.0                Memory usage: 77%   Processes:       118
  Usage of /home: 19.4% of 24.03GB   Swap usage:   34%   Users logged in: 3
</code></pre>

<p>如果没有出现，把<code>landscape-common</code>这个包装上，并且平时可以用<code>landscape-sysinfo</code>命令调出类似信息。</p>

<h4>Update @ 2009-01-13</h4>

<p>字体问题又出现了，网上有很多修改文泉驿字体的方法，我则是<code>/etc/fonts/conf.avail</code>下<code>44-wqy-zenhei.conf</code>和<code>69-language-selector-zh-cn.conf</code>中<code>WenQuanYi Zen Hei</code>或<code>WenQuanYi Bitmap Song</code>前面加上<code>Simsun</code>，字体倒是还是原样（默认宋体），但firefox和其它X程序有时候字体乱成一片，也有说像墨点或者重叠的，反正鼠标选中后就恢复了，有人说是驱动的问题，把<code>nvidia-glx-96</code>换成<code>nvidia-glx-71</code>干脆X就起不来了，其它的173 177 180根本就不支持我的GForce4 MX440。</p>

<p>如果不换Simsun，用网上的方法调整一下文泉驿字体的处理方式，倒是不乱，但字体略显模糊，还能接受。但其它X程序依然有时文字是乱的。查到可能是显卡驱动的问题，只能等待了？</p>

<p>另外注意一点，<code>nvidia-glx-??</code>安装后必须重启系统，只重启X是不起作用的。</p>

<h4>Update @ 2009-01-16</h4>

<p>旧IBM本本，raedon9000的显卡，fglrx不支持，所以卸掉<code>xorg-driver-fglrx</code>后X能起来了，但登录界面无法输入，并且小红点失效，reinstall xserver-xorg-vesa后<code>dpkg-reconfigure xserver-xorg</code>后好了。总体来说反而比N卡好配。</p>

<h4>Update @ 2009-02-08</h4>

<p>如果安装nvidia显卡驱动时出现这样的错误：</p>

<pre><code>  dpkg-divert: `diversion of /usr/lib/xorg/modules/extensions/libGLcore.so to /usr/lib/nvidia/libGLcore.so.xlibmesa by nvidia-glx-96' clashes with `diversion of /usr/lib/xorg/modules/extensions/libGLcore.so to /usr/lib/nvidia/libGLcore.so.xlibmesa by nvidia-glx-71'
  dpkg: error processing /var/cache/apt/archives/nvidia-glx-96_96.43.09-0ubuntu1.1_i386.deb (--unpack):
   subprocess pre-installation script returned error exit status 2
  Errors were encountered while processing:
   /var/cache/apt/archives/nvidia-glx-96_96.43.09-0ubuntu1.1_i386.deb
  E: Sub-process /usr/bin/dpkg returned an error code (1)
</code></pre>

<p>可以试着用<code>dpkg-divert --list|grep GL</code>找到libGLcore.so相关的内容，可能会定义到另外一个包里了：</p>

<pre><code>$ dpkg-divert --list|grep GL
diversion of /usr/lib/xorg/modules/extensions/libGLcore.so to /usr/lib/nvidia/libGLcore.so.xlibmesa by nvidia-glx-71
diversion of /usr/lib/libGL.so.1 to /usr/lib/nvidia/libGL.so.1.xlibmesa by nvidia-glx-96
diversion of /usr/lib/libGL.so.1.2 to /usr/lib/nvidia/libGL.so.1.2.xlibmesa by nvidia-glx-96
</code></pre>

<p>可以看出是nvidia-glx-71没删干净，在这里手工清除就可以了：</p>

<pre><code>$ sudo dpkg-divert --remove /usr/lib/xorg/modules/extensions/libGLcore.so
Removing `diversion of /usr/lib/xorg/modules/extensions/libGLcore.so to /usr/lib/nvidia/libGLcore.so.xlibmesa by nvidia-glx-71'
</code></pre>

<h4>Update @ 2009-02-09</h4>

<p>ati的驱动也出问题了，rv3??核心的显卡全不支持，比如我的<code>Radeon X600</code>，暂时只能删掉fglrx，用其它的驱动替代。删除<code>xorg-driver-fglrx</code>相关的包，装上<code>xserver-xorg-video-ati</code>，然后<code>sudo dpkg-reconfigure xserver-xorg</code>，生成了一个极小的xorg.conf，图形就有了，但据说3D性能几乎没有，办公用没啥大事。</p>

<pre><code>Section "Device"
    Identifier  "Configured Video Device"
    Option      "UseFBDev"      "true"
EndSection

Section "Monitor"
    Identifier  "Configured Monitor"
EndSection

Section "Screen"
    Identifier  "Default Screen"
    Monitor     "Configured Monitor"
    Device      "Configured Video Device"
EndSection
</code></pre>

<p>Firefox工具栏的自定义设置总是丢失的问题原因也<a href="http://forum.ubuntu.com.cn/viewtopic.php?f=73&amp;p=1015447">找到了</a>，可以暂时禁用TabMixPlus扩展，或者是禁用Ubuntu Firefox Modifications，我选择后者。</p>

<p>字体也有一点小问题，比如方正小标宋的“黑体”效果就没有了，重新刷新一下<code>fc-cache -fv</code>就好了。</p>

	Tags: <a href="http://www.fwolf.com/blog/post/tag/ati" title="ATI" rel="tag">ATI</a>, <a href="http://www.fwolf.com/blog/post/tag/benchmark" title="benchmark" rel="tag">benchmark</a>, <a href="http://www.fwolf.com/blog/post/tag/firefox" title="Firefox" rel="tag">Firefox</a>, <a href="http://www.fwolf.com/blog/post/tag/font" title="font" rel="tag">font</a>, <a href="http://www.fwolf.com/blog/post/tag/innodb" title="innodb" rel="tag">innodb</a>, <a href="http://www.fwolf.com/blog/post/tag/intrepid" title="intrepid" rel="tag">intrepid</a>, <a href="http://www.fwolf.com/blog/post/tag/ip" title="ip" rel="tag">ip</a>, <a href="http://www.fwolf.com/blog/post/tag/mysql" title="mysql" rel="tag">mysql</a>, <a href="http://www.fwolf.com/blog/post/tag/nvidia" title="nvidia" rel="tag">nvidia</a>, <a href="http://www.fwolf.com/blog/post/tag/ping" title="ping" rel="tag">ping</a>, <a href="http://www.fwolf.com/blog/post/tag/sysinfo" title="sysinfo" rel="tag">sysinfo</a>, <a href="http://www.fwolf.com/blog/post/tag/ubuntu" title="Ubuntu" rel="tag">Ubuntu</a>, <a href="http://www.fwolf.com/blog/post/tag/wenquanyi" title="WenQuanYi" rel="tag">WenQuanYi</a><br />

	<h4>Related posts</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.fwolf.com/blog/post/152" title="[Ubuntu]使用点滴 (2006-07-08)">[Ubuntu]使用点滴</a> (7)</li>
	<li><a href="http://www.fwolf.com/blog/post/414" title="接多显示器的一点提示 (2008-07-17)">接多显示器的一点提示</a> (0)</li>
	<li><a href="http://www.fwolf.com/blog/post/426" title="升级到8.10 intrepid过程中libc6依赖性死循环问题的解决 (2009-01-04)">升级到8.10 intrepid过程中libc6依赖性死循环问题的解决</a> (6)</li>
	<li><a href="http://www.fwolf.com/blog/post/170" title="[Ubuntu]明明白白安装中文字体 (2006-05-17)">[Ubuntu]明明白白安装中文字体</a> (20)</li>
	<li><a href="http://www.fwolf.com/blog/post/442" title="Ubuntu升级到9.04 Jaunty的变化和遇到的问题 (2009-05-15)">Ubuntu升级到9.04 Jaunty的变化和遇到的问题</a> (2)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.fwolf.com/blog/post/428/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Intrepid中的php-sybase凑合能用了</title>
		<link>http://www.fwolf.com/blog/post/427</link>
		<comments>http://www.fwolf.com/blog/post/427#comments</comments>
		<pubDate>Sun, 04 Jan 2009 06:02:11 +0000</pubDate>
		<dc:creator>Fwolf</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[adodb]]></category>
		<category><![CDATA[intrepid]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Problem]]></category>
		<category><![CDATA[sybase]]></category>
		<category><![CDATA[timestamp]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://www.fwolf.com/blog/?p=427</guid>
		<description><![CDATA[以前说过Ubuntu升级到hardy之后，php-sybase没了，现在在intrepid里又有了，不过有些变化。 主要的原因好像是支持方式从以前的ctlib变成了dblib，其实是和mssql的支持作在一起了，所以现在没有了sybase_ct.so，并且如果使用了adodb（我新下载的版本是5.07），要修改drivers/adodb-sybase.inc.php的148行，把 return sybase_unbuffered_query($sql,$this-&#62;_connectionID); 替换为 return sybase_query($sql,$this-&#62;_connectionID); 因为sybase_unbuffered_query只有在使用CT library时才能用。 另外一个小变化就是timestamp读出来以后的值变了，由于sybase内置的timestamp其实是varbinary类型，所以原来使用ctlib的时候读出来就是这样的：000007d001917b36，但现在变成了类似中文字符串的形式，所以也需要转换一下： if (16 != strlen($ts)) $ts = bin2hex($ts); Update @ 2009-03-01 还是日期的问题，现在从数据库日期字段里取出来的数据多了个毫秒部分，比如Mar 01 2009 00:24:00:000AM，致命的是这个字符串交给strtotime()函数居然不返回值，把毫秒部分:000去掉就没事了。 Tags: adodb, intrepid, PHP, Problem, sybase, timestamp, Ubuntu Related posts 忙碌的5月 (10) 升级到8.10 intrepid过程中libc6依赖性死循环问题的解决 (6) Ubuntu从Gutsy升级到Hardy，php5-sybase又掉链子 (2) adodb5连接sybase的一个错误 (0) 升级到Ubuntu Intrepid后感觉到的一些变化 (0)]]></description>
			<content:encoded><![CDATA[<p><a href="403">以前说过</a>Ubuntu升级到hardy之后，php-sybase没了，现在在intrepid里又有了，不过有些变化。</p>

<p>主要的原因好像是支持方式从以前的ctlib变成了dblib，其实是和mssql的支持作在一起了，所以现在没有了sybase_ct.so，并且如果使用了adodb（我新下载的版本是5.07），要修改<code>drivers/adodb-sybase.inc.php</code>的148行，把</p>

<pre><code>return sybase_unbuffered_query($sql,$this-&gt;_connectionID);
</code></pre>

<p>替换为</p>

<pre><code>return sybase_query($sql,$this-&gt;_connectionID);
</code></pre>

<p>因为<a href="http://cn.php.net/manual/en/function.sybase-unbuffered-query.php">sybase_unbuffered_query只有在使用CT library时才能用</a>。</p>

<p>另外一个小变化就是timestamp读出来以后的值变了，由于sybase内置的timestamp其实是varbinary类型，所以原来使用ctlib的时候读出来就是这样的：<code>000007d001917b36</code>，但现在变成了类似中文字符串的形式，所以也需要转换一下：</p>

<pre><code>if (16 != strlen($ts))
    $ts = bin2hex($ts);
</code></pre>

<h4>Update @ 2009-03-01</h4>

<p>还是日期的问题，现在从数据库日期字段里取出来的数据多了个毫秒部分，比如<code>Mar 01 2009 00:24:00:000AM</code>，致命的是这个字符串交给<code>strtotime()</code>函数居然不返回值，把毫秒部分<code>:000</code>去掉就没事了。</p>

	Tags: <a href="http://www.fwolf.com/blog/post/tag/adodb" title="adodb" rel="tag">adodb</a>, <a href="http://www.fwolf.com/blog/post/tag/intrepid" title="intrepid" rel="tag">intrepid</a>, <a href="http://www.fwolf.com/blog/post/tag/php" title="PHP" rel="tag">PHP</a>, <a href="http://www.fwolf.com/blog/post/tag/problem" title="Problem" rel="tag">Problem</a>, <a href="http://www.fwolf.com/blog/post/tag/sybase" title="sybase" rel="tag">sybase</a>, <a href="http://www.fwolf.com/blog/post/tag/timestamp" title="timestamp" rel="tag">timestamp</a>, <a href="http://www.fwolf.com/blog/post/tag/ubuntu" title="Ubuntu" rel="tag">Ubuntu</a><br />

	<h4>Related posts</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.fwolf.com/blog/post/404" title="忙碌的5月 (2008-06-13)">忙碌的5月</a> (10)</li>
	<li><a href="http://www.fwolf.com/blog/post/426" title="升级到8.10 intrepid过程中libc6依赖性死循环问题的解决 (2009-01-04)">升级到8.10 intrepid过程中libc6依赖性死循环问题的解决</a> (6)</li>
	<li><a href="http://www.fwolf.com/blog/post/403" title="Ubuntu从Gutsy升级到Hardy，php5-sybase又掉链子 (2008-06-12)">Ubuntu从Gutsy升级到Hardy，php5-sybase又掉链子</a> (2)</li>
	<li><a href="http://www.fwolf.com/blog/post/391" title="adodb5连接sybase的一个错误 (2008-03-25)">adodb5连接sybase的一个错误</a> (0)</li>
	<li><a href="http://www.fwolf.com/blog/post/428" title="升级到Ubuntu Intrepid后感觉到的一些变化 (2009-01-06)">升级到Ubuntu Intrepid后感觉到的一些变化</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.fwolf.com/blog/post/427/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
