<?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>zhtlancer&#039;s blog &#187; Arch Linux</title>
	<atom:link href="http://zhtlancer.com/category/linux-opensource-projects/arch-linux/feed/" rel="self" type="application/rss+xml" />
	<link>http://zhtlancer.com</link>
	<description>alpha...</description>
	<lastBuildDate>Mon, 16 Jan 2012 17:10:47 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>PCManFM中用SMplayer打开文件名带中文、空格文件的问题</title>
		<link>http://zhtlancer.com/2012/01/smplayer_with_cjk_space_filename_in_pcmanfm/</link>
		<comments>http://zhtlancer.com/2012/01/smplayer_with_cjk_space_filename_in_pcmanfm/#comments</comments>
		<pubDate>Mon, 16 Jan 2012 17:10:47 +0000</pubDate>
		<dc:creator>zhtlancer</dc:creator>
				<category><![CDATA[Arch Linux]]></category>
		<category><![CDATA[折腾]]></category>
		<category><![CDATA[Awesome]]></category>
		<category><![CDATA[PCManFM]]></category>
		<category><![CDATA[SMplayer]]></category>

		<guid isPermaLink="false">http://zhtlancer.com/?p=47671</guid>
		<description><![CDATA[最近在PCManFM中用SMplayer打开媒体文件时，经常遇到不能正常播放的现象，开始以为mplayer和smplayer的配合问题，后来在一个存在问题的文件上查了下mplayer的log，发现mplayer没有找到打开的媒体文件，而且文件名被转换为URI形式，中文被转换成%格式化的形式。查了一些资料后，发现Arch Wiki上有提到一个Mplayer打开文件名带空格的问题的解决方案，就用类似方法对SMplayer做了下修改，将/usr/share/applications/smplayer.desktop(注:最好先检查一下~/.local/share/applications/中有没有对应文件，如果有的话应该是改这个文件)中的&#8221;Exec=smplayer %U&#8221;改为&#8221;Exec=smplayer %F&#8221;，问题解决。 Reference https://wiki.archlinux.org/index.php/Mplayer#Mplayer_fails_to_open_files_with_spaces © zhtlancer for zhtlancer&#039;s blog, 2012. &#124; Permalink &#124; 暂无评论 &#124; Add to del.icio.us Post tags: Awesome, PCManFM, SMplayer]]></description>
			<content:encoded><![CDATA[<p>最近在PCManFM中用SMplayer打开媒体文件时，经常遇到不能正常播放的现象，开始以为mplayer和smplayer的配合问题，后来在一个存在问题的文件上查了下mplayer的log，发现mplayer没有找到打开的媒体文件，而且文件名被转换为URI形式，中文被转换成%格式化的形式。查了一些资料后，发现Arch Wiki上有提到一个Mplayer打开文件名带空格的问题的解决方案，就用类似方法对SMplayer做了下修改，将/usr/share/applications/smplayer.desktop(注:最好先检查一下~/.local/share/applications/中有没有对应文件，如果有的话应该是改这个文件)中的&#8221;Exec=smplayer %U&#8221;改为&#8221;Exec=smplayer %F&#8221;，问题解决。</p>
<h3>Reference</h3>
<p><a href="https://wiki.archlinux.org/index.php/Mplayer#Mplayer_fails_to_open_files_with_spaces" onclick="pageTracker._trackPageview('/outgoing/wiki.archlinux.org/index.php/Mplayer_Mplayer_fails_to_open_files_with_spaces?referer=');">https://wiki.archlinux.org/index.php/Mplayer#Mplayer_fails_to_open_files_with_spaces</a></p>
<hr />
<p><small>© zhtlancer for <a href="http://zhtlancer.com">zhtlancer&#039;s blog</a>, 2012. |
<a href="http://zhtlancer.com/2012/01/smplayer_with_cjk_space_filename_in_pcmanfm/">Permalink</a> |
<a href="http://zhtlancer.com/2012/01/smplayer_with_cjk_space_filename_in_pcmanfm/#comments">暂无评论</a> |
Add to
<a href="http://del.icio.us/post?url=http://zhtlancer.com/2012/01/smplayer_with_cjk_space_filename_in_pcmanfm/&title=PCManFM中用SMplayer打开文件名带中文、空格文件的问题" onclick="pageTracker._trackPageview('/outgoing/del.icio.us/post?url=http_//zhtlancer.com/2012/01/smplayer_with_cjk_space_filename_in_pcmanfm/_title=PCManFM_SMplayer&amp;referer=');">del.icio.us</a>
<br/>
Post tags: <a href="http://zhtlancer.com/tag/awesome/" rel="tag">Awesome</a>, <a href="http://zhtlancer.com/tag/pcmanfm/" rel="tag">PCManFM</a>, <a href="http://zhtlancer.com/tag/smplayer/" rel="tag">SMplayer</a><br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://zhtlancer.com/2012/01/smplayer_with_cjk_space_filename_in_pcmanfm/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Awesome多字体设置</title>
		<link>http://zhtlancer.com/2012/01/awesome_with_multiple_fonts/</link>
		<comments>http://zhtlancer.com/2012/01/awesome_with_multiple_fonts/#comments</comments>
		<pubDate>Mon, 09 Jan 2012 17:00:00 +0000</pubDate>
		<dc:creator>zhtlancer</dc:creator>
				<category><![CDATA[Arch Linux]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[折腾]]></category>
		<category><![CDATA[Awesome]]></category>
		<category><![CDATA[字体]]></category>

		<guid isPermaLink="false">http://zhtlancer.com/?p=47665</guid>
		<description><![CDATA[这个问题从开始用Awesome以来一直困扰着我，wibox上的所有中文都诡异得奇丑无比，但都一直没时间收拾这个。今天终于痛下决心折腾了一下，事实证明还是自己太二了…… 首先，如果在Awesome配置中设定具体的字体名称的话，应该是无法设置多个字体的，也就没法设置独立的西文+中文或其它CJK字体作为fallback（欢迎大家关于这点提出异议，那本文后面的话就可以直接忽略之了…）。这样如果指定了一个英文字体名称的话，也不知道Awesome用了什么样的fallback策略，wibox上显示的中文貌似居然都不是同一种字体的…… 其实要在Awesome中独立设置西文和中文字体很简单，只要回归本质即可——利用fontconfig的配置机制。在~/.fonts.conf(针对自己的用户)或/etc/fonts/local.conf(针对系统全局，不推荐)文件中，对sans、serif、monospace等字体族的字体进行设置，以字体先后顺序的形式调整好优先级。需要注意一般将要设置的英文字体放在中文字体前面才能生效。然后在Awesome配置中，将字体改为要用的字体族的名字即可，比如&#8221;serif 8&#8243;，这样wibox中的字体就是按照serif字体族中的优先级渲染了。 另外，对于fontconfig配置，推荐一个不错的自动配置生成网站：http://wenq.org/cloud/fcdesigner.html，可以很直观地对几个常用字体优先级调整效果进行预览，然后生成样例fontconfig内容，可以直接粘来使用，非常方便。这个工具是文泉驿项目提供的，再次感谢文泉驿为我们提供了这么好的开源字体和工具！ Reference https://wiki.archlinux.org/index.php/Fonts_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87) http://wenq.org/cloud/fcdesigner.html © zhtlancer for zhtlancer&#039;s blog, 2012. &#124; Permalink &#124; 暂无评论 &#124; Add to del.icio.us Post tags: Arch Linux, Awesome, 字体]]></description>
			<content:encoded><![CDATA[<p>这个问题从开始用Awesome以来一直困扰着我，wibox上的所有中文都诡异得奇丑无比，但都一直没时间收拾这个。今天终于痛下决心折腾了一下，事实证明还是自己太二了……</p>
<p>首先，如果在Awesome配置中设定具体的字体名称的话，应该是无法设置多个字体的，也就没法设置独立的西文+中文或其它CJK字体作为fallback（欢迎大家关于这点提出异议，那本文后面的话就可以直接忽略之了…）。这样如果指定了一个英文字体名称的话，也不知道Awesome用了什么样的fallback策略，wibox上显示的中文貌似居然都不是同一种字体的……</p>
<p>其实要在Awesome中独立设置西文和中文字体很简单，只要回归本质即可——利用fontconfig的配置机制。在~/.fonts.conf(针对自己的用户)或/etc/fonts/local.conf(针对系统全局，不推荐)文件中，对sans、serif、monospace等字体族的字体进行设置，以字体先后顺序的形式调整好优先级。需要注意一般将要设置的英文字体放在中文字体前面才能生效。然后在Awesome配置中，将字体改为要用的字体族的名字即可，比如&#8221;serif 8&#8243;，这样wibox中的字体就是按照serif字体族中的优先级渲染了。</p>
<p>另外，对于fontconfig配置，推荐一个不错的自动配置生成网站：<a href="http://wenq.org/cloud/fcdesigner.html" onclick="pageTracker._trackPageview('/outgoing/wenq.org/cloud/fcdesigner.html?referer=');">http://wenq.org/cloud/fcdesigner.html</a>，可以很直观地对几个常用字体优先级调整效果进行预览，然后生成样例fontconfig内容，可以直接粘来使用，非常方便。这个工具是<a href="http://wenq.org/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/wenq.org/?referer=');">文泉驿</a>项目提供的，再次感谢文泉驿为我们提供了这么好的开源字体和工具！</p>
<h5>Reference</h5>
<p><a href="https://wiki.archlinux.org/index.php/Fonts_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)" onclick="pageTracker._trackPageview('/outgoing/wiki.archlinux.org/index.php/Fonts_E7_AE_80_E4_BD_93_E4_B8_AD_E6_96_87?referer=');">https://wiki.archlinux.org/index.php/Fonts_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)</a></p>
<p><a href="http://wenq.org/cloud/fcdesigner.html" onclick="pageTracker._trackPageview('/outgoing/wenq.org/cloud/fcdesigner.html?referer=');">http://wenq.org/cloud/fcdesigner.html</a></p>
<hr />
<p><small>© zhtlancer for <a href="http://zhtlancer.com">zhtlancer&#039;s blog</a>, 2012. |
<a href="http://zhtlancer.com/2012/01/awesome_with_multiple_fonts/">Permalink</a> |
<a href="http://zhtlancer.com/2012/01/awesome_with_multiple_fonts/#comments">暂无评论</a> |
Add to
<a href="http://del.icio.us/post?url=http://zhtlancer.com/2012/01/awesome_with_multiple_fonts/&title=Awesome多字体设置" onclick="pageTracker._trackPageview('/outgoing/del.icio.us/post?url=http_//zhtlancer.com/2012/01/awesome_with_multiple_fonts/_title=Awesome&amp;referer=');">del.icio.us</a>
<br/>
Post tags: <a href="http://zhtlancer.com/tag/arch-linux/" rel="tag">Arch Linux</a>, <a href="http://zhtlancer.com/tag/awesome/" rel="tag">Awesome</a>, <a href="http://zhtlancer.com/tag/%e5%ad%97%e4%bd%93/" rel="tag">字体</a><br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://zhtlancer.com/2012/01/awesome_with_multiple_fonts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>硬盘安装ArchLinux（2010.05版本实测)</title>
		<link>http://zhtlancer.com/2010/06/steps_to_install_archlinux_from_iso_on_hd/</link>
		<comments>http://zhtlancer.com/2010/06/steps_to_install_archlinux_from_iso_on_hd/#comments</comments>
		<pubDate>Sun, 06 Jun 2010 02:57:02 +0000</pubDate>
		<dc:creator>zhtlancer</dc:creator>
				<category><![CDATA[Arch Linux]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://zhtlancer.com/2010/06/%e7%a1%ac%e7%9b%98%e5%ae%89%e8%a3%85archlinux%ef%bc%882010-5%e7%89%88%e6%9c%ac%e5%ae%9e%e6%b5%8b/</guid>
		<description><![CDATA[今天重装Arch时发现最新的2010.05安装镜像只提供了光盘ISO版本，而没有原来的USB镜像版本了，所以只能放弃USB安装的方案。但是为了一次重装系统刻张盘实在浪费，所以就研究了下如何利用这个ISO镜像来实现硬盘安装。 查看了一下ArchWiki，刚好有一篇文章介绍利用ISO镜像安装Arch的方法，主要是利用grub将ISO镜像映射到内存中以供安装使用。不过这篇文章是在2009.08的安装镜像基础上的，在2010.05镜像上有些地方需要做些改动。下面是我的详细的安装过程。 首先要有一个可用的grub。我这里用的grub4dos，需要注意的一点是，我最先用grub4dos 0.4.3没成功，换到0.4.4版本顺利安装。然后将arch的安装镜像放在grub可读的分区内，如(hd1,0)/archlinux-2010.05-core-i686.iso。在启动进入grub时，按“c”进入grub的命令行模式。依次执行以下命令： grub&#62; map &#8211;mem &#8211;heads=0 &#8211;sectors-per-track=0 (hd0,1)/archlinux-2010.05-core-i686.iso (0xff) grub&#62; map &#8211;hook grub&#62; chainloader (0xff) grub&#62; boot 如果以上命令执行过程均没有问题，执行boot后应该就进入ISO镜像的启动流程了，按照正常方式选择arch的live方式，进入安装环境。 安装环境启动过程中，会提示没有找到安装光盘，然后提供了一个shell让用户解决这个问题，其原因在于arch的安装环境是通过光盘的label去找安装光盘的，也就是/dev/disk/by-label/ARCH_201005。所以我们还是需要手动将硬盘上的ISO文件链接到这个位置。当然首先要挂载ISO镜像所在的硬盘分区。这里需要特别注意一点，在Arch安装环境中，不要把任何分区挂载到/mnt目录下，Arch安装环境会将/mnt挂载为安装目标。可以执行下面的命令完成ISO镜像的链接工作： #mkdir /tmp_mnt #mount –r –t vfat /dev/sdb1 /tmp_mnt #modprobe loop #losetup /dev/loop6 /tmp_mnt/archlinux-2010.05-core-i686.iso #ln –s /dev/loop6 /dev/disk/by-label/ARCH_201005 #exit 如果没有问题的话，exit后arch会继续安装流程。后面的安装就与正常的光盘安装无异了。 以前用debian的时候，debian的ISO镜像中会提供用于硬盘安装的内核和ramdisk镜像，可以用grub手动加载，安装环境启动后中debian会自动检测ISO镜像位置，挂载ISO镜像继续安装。看了一下arch的ISO镜像内容，感觉arch应该也可以用这种方式进行安装，有兴趣的tx可以尝试一下~ © zhtlancer for zhtlancer&#039;s blog, 2010. &#124; Permalink &#124; 23 条评论 &#124; Add to [...]]]></description>
			<content:encoded><![CDATA[<p>今天重装Arch时发现最新的<a href="http://www.archlinux.org/download/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.archlinux.org/download/?referer=');">2010.05安装镜像</a>只提供了光盘ISO版本，而没有原来的USB镜像版本了，所以只能放弃USB安装的方案。但是为了一次重装系统刻张盘实在浪费，所以就研究了下如何利用这个ISO镜像来实现硬盘安装。</p>
<p>查看了一下ArchWiki，刚好有<a href="http://wiki.archlinux.org/index.php/%E7%A1%AC%E7%9B%98%E5%AE%89%E8%A3%85_Arch_%28%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87%29#.E7.A1.AC.E7.9B.98.E5.AE.89.E8.A3.85ArchLinux.EF.BC.88.E6.94.AF.E6.8C.812009.08.E7.9A.84ISO.EF.BC.89" target="_blank" onclick="pageTracker._trackPageview('/outgoing/wiki.archlinux.org/index.php/_E7_A1_AC_E7_9B_98_E5_AE_89_E8_A3_85_Arch_28_E7_AE_80_E4_BD_93_E4_B8_AD_E6_96_87_29_.E7.A1.AC.E7.9B.98.E5.AE.89.E8.A3.85ArchLinux.EF.BC.88.E6.94.AF.E6.8C.812009.08.E7.9A.84ISO.EF.BC.89?referer=');">一篇文章</a>介绍利用ISO镜像安装Arch的方法，主要是利用grub将ISO镜像映射到内存中以供安装使用。不过这篇文章是在2009.08的安装镜像基础上的，在2010.05镜像上有些地方需要做些改动。下面是我的详细的安装过程。</p>
<p>首先要有一个可用的grub。我这里用的<a href="https://gna.org/projects/grub4dos/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/gna.org/projects/grub4dos/?referer=');">grub4dos</a>，需要注意的一点是，我最先用grub4dos 0.4.3没成功，换到0.4.4版本顺利安装。然后将arch的安装镜像放在grub可读的分区内，如(hd1,0)/archlinux-2010.05-core-i686.iso。在启动进入grub时，按“c”进入grub的命令行模式。依次执行以下命令：</p>
<blockquote><p>grub&gt; map &#8211;mem &#8211;heads=0 &#8211;sectors-per-track=0 (hd0,1)/archlinux-2010.05-core-i686.iso (0xff)<br />
grub&gt; map &#8211;hook<br />
grub&gt; chainloader (0xff)<br />
grub&gt; boot</p></blockquote>
<p><span style="background-color: #f4f5f7;">如果以上命令执行过程均没有问题，执行boot后应该就进入ISO镜像的启动流程了，按照正常方式选择arch的live方式，进入安装环境。</span></p>
<p><span style="background-color: #f4f5f7;">安装环境启动过程中，会提示没有找到安装光盘，然后提供了一个shell让用户解决这个问题，其原因在于arch的安装环境是通过光盘的label去找安装光盘的，也就是/dev/disk/by-label/ARCH_201005。所以我们还是需要手动将硬盘上的ISO文件链接到这个位置。当然首先要挂载ISO镜像所在的硬盘分区。<span style="color: #ff0000;"><strong>这里需要特别注意一点</strong></span>，在Arch安装环境中，不要把任何分区挂载到/mnt目录下，Arch安装环境会将/mnt挂载为安装目标。可以执行下面的命令完成ISO镜像的链接工作：</span></p>
<blockquote><p><span style="background-color: #f4f5f7;">#mkdir /tmp_mnt</span></p>
<p>#mount –r –t vfat /dev/sdb1 /tmp_mnt</p>
<p>#modprobe loop</p>
<p>#losetup /dev/loop6 /tmp_mnt/archlinux-2010.05-core-i686.iso</p>
<p>#ln –s /dev/loop6 /dev/disk/by-label/ARCH_201005</p>
<p>#exit</p></blockquote>
<p><span style="background-color: #f4f5f7;">如果没有问题的话，exit后arch会继续安装流程。后面的安装就与正常的光盘安装无异了。</span></p>
<p>以前用debian的时候，debian的ISO镜像中会提供用于硬盘安装的内核和ramdisk镜像，可以用grub手动加载，安装环境启动后中debian会自动检测ISO镜像位置，挂载ISO镜像继续安装。看了一下arch的ISO镜像内容，感觉arch应该也可以用这种方式进行安装，有兴趣的tx可以尝试一下~</p>
<hr />
<p><small>© zhtlancer for <a href="http://zhtlancer.com">zhtlancer&#039;s blog</a>, 2010. |
<a href="http://zhtlancer.com/2010/06/steps_to_install_archlinux_from_iso_on_hd/">Permalink</a> |
<a href="http://zhtlancer.com/2010/06/steps_to_install_archlinux_from_iso_on_hd/#comments">23 条评论</a> |
Add to
<a href="http://del.icio.us/post?url=http://zhtlancer.com/2010/06/steps_to_install_archlinux_from_iso_on_hd/&title=硬盘安装ArchLinux（2010.05版本实测)" onclick="pageTracker._trackPageview('/outgoing/del.icio.us/post?url=http_//zhtlancer.com/2010/06/steps_to_install_archlinux_from_iso_on_hd/_title=_ArchLinux_2010.05&amp;referer=');">del.icio.us</a>
<br/>
Post tags: <a href="http://zhtlancer.com/tag/arch-linux/" rel="tag">Arch Linux</a>, <a href="http://zhtlancer.com/tag/linux-opensource-projects/" rel="tag">Linux</a><br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://zhtlancer.com/2010/06/steps_to_install_archlinux_from_iso_on_hd/feed/</wfw:commentRss>
		<slash:comments>23</slash:comments>
		</item>
		<item>
		<title>Arch Linux的makepkg工具</title>
		<link>http://zhtlancer.com/2009/07/arch-linux-makepkg-building-too/</link>
		<comments>http://zhtlancer.com/2009/07/arch-linux-makepkg-building-too/#comments</comments>
		<pubDate>Tue, 14 Jul 2009 03:05:01 +0000</pubDate>
		<dc:creator>zhtlancer</dc:creator>
				<category><![CDATA[Arch Linux]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[编译]]></category>

		<guid isPermaLink="false">http://zhtlancer.yo2.cn/?p=43292</guid>
		<description><![CDATA[使用Arch Linux近半年，实在是越来越喜欢这个轻量级的发行版，尤其是它的软件包制作以及管理机制让人感觉很是方便。基础的pacman的功能就不说了，大体和debian系的apt-get类似，功能也很强大，主要用于安装二进制包。今天主要说说Arch灵活而强大的软件包制作机制——makepkg。 makepkg是一种基于脚本的软件包制作工具，其脚本格式除了固定的区域划分格式以外，主要脚本部分以shell脚本方式执行，所以说对大多数人来说上手很方便。 makepkg基于脚本的自动化工作方式 使用makepkg制作软件包时，最核心的文件就是PKGBUILD，就是上面说的软件包制作脚本。只要我们得到一个正确的脚本，只要在脚本所在目录执行makepkg命令，它就能自动从网上或本地获取制作软件包所需的资源（如源代码或现成的二进制包），自动检查软件包依赖关系是否满足，然后进行编译/加工，得到可以直接用pacman进行安装的pkg格式软件包。需要注意的是Arch Linux的所有二进制软件包就是基于makepkg制作的。 makepkg的安装＆配置 要开始使用makepkg，先执行下列命令进行安装[code=bash]pacman -Sy base-devel [/code]然后根据你的机子配置，修改“/etc/makepkg.conf”设置，使得编译出来的软件包更加适合你的硬件配置。其中主要的配置项包括GCC的FLAG设置，可以根据你的CPU来选择一个架构相关的优化选项（如-march=core2)；包建立环境设置；软件包默认安装位置设置&#8230;不过如果你不熟悉完全可以不管它，默认设置已经可以有很不错的效果了。 makepkg的使用 然后就可以利用makepkg建立自己的软件包了。这里以AUR( ArchLinux User-community Repository,后面会介绍)上的linux-fetion客户端(一个开源的跨平台飞信客户端)为例说明makepkg的使用过程。 首先到这里下载linux-fetion的PKGBUILD脚本 在PKGBUILD脚本所在目录执行makepkg，你就能看到makepkg开始自动下载linux-fetion的源码，并开始编译，编译完成后还会自动打成PKG包 执行完毕后，如果没有出错，当前目录下应该出现了一个.pkg.tar.gz为后缀的文件，这个文件就是刚刚创建的软件包了，执行pacman -U ***.pkg.tar.gz即可安装 从上面的步骤可以看出makepkg制作软件包的过程非常简单。更重要的是，以软件包的形式进行软件安装，在很大程度上方便了后期对软件进行更新和卸载。另外，结合后面介绍的工具，你可以轻松安装＆管理大量丰富的软件。 ABS 前面提到Arch Linux中的所有软件包都是利用makepkg工具制作成pkg安装包，那么哪里能找到这些软件包的PKGBUILD脚本呢？这就要提到ABS(the Arch Build System)。ᗜABS是一个类似于BSD的ports(ports-like)的源代码级软件管理系统。利用ABS，我们可以方便地获取Arch官方提供的软件包的PKGBUILD，并根据我们自己的需要进行软件包的定制或修改，然后再利用makepkg打包为pkg软件包。所以ABS使得我们自行定制预安装软件包的过程变得更加方便，尤其在内核等核心组件方面。 安装和配置ABS 要使用ABS，先使用pacman进行安装。以root权限执行[code=bash]pacman -Syu[/code] 安装完毕后，我们先修改一下/etc/abs.conf，其中主要设置&#8221;REPOS=(core extra !community !testing)&#8221;这一项，即分别选择是否同步core,extra,community,testing软件仓库。这里根据自己需要修改的软件包所属分支，自行设置。!testing表示不同步testing软件仓库。 同步ABS的PKGBUILD脚本 上面的配置完成后，先以root权限执行[code=bash]abs[/code]执行完毕后，我们可以看到“/var/abs”目录下出现了我们所需要的PKGBUILD脚本以及一些必须的配置文件。按照官方推荐做法，我们先建立“/var/abs/local”目录，并赋予非root用户对于该目录的完全访问权限（以便于以非root用户建立软件包，以非root身份运行makepkg是一个有助于安全的好习惯）。然后我们需要定制哪个软件包时，就可以在这个local目录下进行。 举例说明吧，我需要修改transmission以打开IPV6支持，就可以这么做 先在/var/abs/local下建立一个transmission目录并进入该目录[code=bash]mkdir /var/abs/local/transmission &#38; cd /var/abs/local/transmission[/code] 将ABS提供的transmission脚本复制过来[code=bash]cp -r /var/abs/extra/transmission-gtk/* .[/code] 打开PKGBUILD脚本，先查看其源代码下载地址，从该地址手动下载源码，在本地解包，并针对IPV6进行相应修改 修改PKGBUILD脚本，使得它直接使用上一步修改过的源码进行编译，而不是从网上重新下载源码 执行makepkg，编译＆制作软件包 直接使用pacman将我们定制好的transmission更新到系统中 可以看到利用ABS配合makepkg可以非常方便的进行软件包定制。 AUR 虽然Arch Linux提供了一个很好用的软件包管理系统，但是我们使用的一些软件Arch 的官方软件仓库并没有提供，难道我们必须一个一个自己写PKGBUILD脚本吗？当然这也是一个方法，尤其对于那些牛人们来说，但是有了AUR，对于大多数人来说就有了更方便的方法。 [...]]]></description>
			<content:encoded><![CDATA[<p>使用Arch Linux近半年，实在是越来越喜欢这个轻量级的发行版，尤其是它的软件包制作以及管理机制让人感觉很是方便。基础的pacman的功能就不说了，大体和debian系的apt-get类似，功能也很强大，主要用于安装二进制包。今天主要说说Arch灵活而强大的软件包制作机制——makepkg。<br />
makepkg是一种基于脚本的软件包制作工具，其脚本格式除了固定的区域划分格式以外，主要脚本部分以shell脚本方式执行，所以说对大多数人来说上手很方便。</p>
<h3>makepkg基于脚本的自动化工作方式</h3>
<p>使用makepkg制作软件包时，最核心的文件就是PKGBUILD，就是上面说的软件包制作脚本。只要我们得到一个正确的脚本，只要在脚本所在目录执行makepkg命令，它就能自动从网上或本地获取制作软件包所需的资源（如源代码或现成的二进制包），自动检查软件包依赖关系是否满足，然后进行编译/加工，得到可以直接用pacman进行安装的pkg格式软件包。需要注意的是Arch Linux的所有二进制软件包就是基于makepkg制作的。</p>
<h3>makepkg的安装＆配置</h3>
<p>要开始使用makepkg，先执行下列命令进行安装[code=bash]pacman -Sy base-devel<br />
[/code]然后根据你的机子配置，修改“/etc/makepkg.conf”设置，使得编译出来的软件包更加适合你的硬件配置。其中主要的配置项包括GCC的FLAG设置，可以根据你的CPU来选择一个架构相关的优化选项（如-march=core2)；包建立环境设置；软件包默认安装位置设置&#8230;不过如果你不熟悉完全可以不管它，默认设置已经可以有很不错的效果了。</p>
<h3>makepkg的使用</h3>
<p>然后就可以利用makepkg建立自己的软件包了。这里以<a href="http://aur.archlinux.org/" onclick="pageTracker._trackPageview('/outgoing/aur.archlinux.org/?referer=');">AUR</a>( <a title="ArchLinux User-community Repository (AUR)" href="/index.php/ArchLinux_User-community_Repository_(AUR)">ArchLinux User-community Repository</a>,后面会介绍)上的linux-fetion客户端(一个开源的跨平台飞信客户端)为例说明makepkg的使用过程。</p>
<ol>
<li>首先到<a href="http://aur.archlinux.org/packages/linux_fetion/linux_fetion/PKGBUILD" onclick="pageTracker._trackPageview('/outgoing/aur.archlinux.org/packages/linux_fetion/linux_fetion/PKGBUILD?referer=');">这里</a>下载linux-fetion的PKGBUILD脚本</li>
<li>在PKGBUILD脚本所在目录执行makepkg，你就能看到makepkg开始自动下载linux-fetion的源码，并开始编译，编译完成后还会自动打成PKG包</li>
<li>执行完毕后，如果没有出错，当前目录下应该出现了一个.pkg.tar.gz为后缀的文件，这个文件就是刚刚创建的软件包了，执行pacman -U ***.pkg.tar.gz即可安装</li>
</ol>
<p>从上面的步骤可以看出makepkg制作软件包的过程非常简单。更重要的是，以软件包的形式进行软件安装，在很大程度上方便了后期对软件进行更新和卸载。另外，结合后面介绍的工具，你可以轻松安装＆管理大量丰富的软件。</p>
<h2>ABS</h2>
<p>前面提到Arch Linux中的所有软件包都是利用makepkg工具制作成pkg安装包，那么哪里能找到这些软件包的PKGBUILD脚本呢？这就要提到ABS(the Arch Build System)。ᗜABS是一个类似于BSD的ports(ports-like)的源代码级软件管理系统。利用ABS，我们可以方便地获取Arch官方提供的软件包的PKGBUILD，并根据我们自己的需要进行软件包的定制或修改，然后再利用makepkg打包为pkg软件包。所以ABS使得我们自行定制预安装软件包的过程变得更加方便，尤其在内核等核心组件方面。</p>
<h3>安装和配置ABS</h3>
<p>要使用ABS，先使用pacman进行安装。以root权限执行[code=bash]pacman -Syu[/code]</p>
<p>安装完毕后，我们先修改一下/etc/abs.conf，其中主要设置&#8221;REPOS=(core extra !community !testing)&#8221;这一项，即分别选择是否同步core,extra,community,testing软件仓库。这里根据自己需要修改的软件包所属分支，自行设置。!testing表示不同步testing软件仓库。</p>
<h3>同步ABS的PKGBUILD脚本</h3>
<p>上面的配置完成后，先以root权限执行[code=bash]abs[/code]执行完毕后，我们可以看到“/var/abs”目录下出现了我们所需要的PKGBUILD脚本以及一些必须的配置文件。按照官方推荐做法，我们先建立“/var/abs/local”目录，并赋予非root用户对于该目录的完全访问权限（以便于以非root用户建立软件包，以非root身份运行makepkg是一个有助于安全的好习惯）。然后我们需要定制哪个软件包时，就可以在这个local目录下进行。</p>
<p>举例说明吧，我需要修改transmission以打开IPV6支持，就可以这么做</p>
<ol>
<li>先在/var/abs/local下建立一个transmission目录并进入该目录[code=bash]mkdir /var/abs/local/transmission &amp; cd /var/abs/local/transmission[/code]</li>
<li>将ABS提供的transmission脚本复制过来[code=bash]cp -r /var/abs/extra/transmission-gtk/* .[/code]</li>
<li>打开PKGBUILD脚本，先查看其源代码下载地址，从该地址手动下载源码，在本地解包，并针对IPV6进行相应修改</li>
<li>修改PKGBUILD脚本，使得它直接使用上一步修改过的源码进行编译，而不是从网上重新下载源码</li>
<li>执行makepkg，编译＆制作软件包</li>
<li>直接使用pacman将我们定制好的transmission更新到系统中</li>
</ol>
<p>可以看到利用ABS配合makepkg可以非常方便的进行软件包定制。</p>
<h2>AUR</h2>
<p>虽然Arch Linux提供了一个很好用的软件包管理系统，但是我们使用的一些软件Arch 的官方软件仓库并没有提供，难道我们必须一个一个自己写PKGBUILD脚本吗？当然这也是一个方法，尤其对于那些牛人们来说，但是有了AUR，对于大多数人来说就有了更方便的方法。</p>
<p>AUR（the Arch User-Community Repository）是一个由用户社区自行维护的庞大的软件仓库，常用的软件基本都可以在这里找到相应的PKGBUILD脚本，方便地建立软件包，进行安装。其最大的特点就是开发性，你可以将自己写的某个软件包的PKGBUILD脚本上传，与他人共享，而他人对此脚本有什么意见，都可以直接向你提出，或提醒你脚本已过期等等。比如我上面举例提到的linux-fetion，就是利用AUR提供的PKGBUILD脚本。</p>
<address>AUR的站点是<a href="http://aur.archlinux.org/" onclick="pageTracker._trackPageview('/outgoing/aur.archlinux.org/?referer=');">http://aur.archlinux.org/</a>,你现在就可以根据自己需要去下载需要的PKGBUILD脚本，构建需要的软件包了。不过你也可以忍耐一下，看完下面对yaourt工具的介绍，你就可以用yaourt这一强大工具让这一过程更加自动化。</address>
<h3>Yaourt</h3>
<p>yaourt(<strong>Y</strong>et <strong>A</strong>n<strong>O</strong>ther <strong>U</strong>ser <strong>R</strong>epository <strong>T</strong>ool)是一位大牛写的Arch软件包管理工具，提供了对pacman的封装，但最主要的功能就是使得从AUR构建软件包更加方便。</p>
<p>首先从<a href="http://aur.archlinux.org/packages/yaourt/yaourt/PKGBUILD" onclick="pageTracker._trackPageview('/outgoing/aur.archlinux.org/packages/yaourt/yaourt/PKGBUILD?referer=');">这里</a>下载yaourt的PKGBUILD脚本，按照一般的makepkg方法安装该软件包。</p>
<p>安装完成后，试试执行[code=bash]yaourt fetion[code]我们可以看到yaourt自动从AUR上搜索fetion关键字，找到相应Repo信息。我们可以按序号选择一个，yaourt就会自动下载PKGBUILD脚本，并提示你做需要的修改之后，即可自动构建、安装软件包。安装完成还会自动对软件包进行投票。总之，功能非常强大，你可以自己去探索探索。</p>
<h3>参考来源</h3>
<p><a href="http://wiki.archlinux.org/" onclick="pageTracker._trackPageview('/outgoing/wiki.archlinux.org/?referer=');">Arch Wiki</a>:</p>
<p><a href="http://wiki.archlinux.org/index.php/Makepkg" onclick="pageTracker._trackPageview('/outgoing/wiki.archlinux.org/index.php/Makepkg?referer=');">http://wiki.archlinux.org/index.php/Makepkg</a></p>
<p><a href="http://wiki.archlinux.org/index.php/ABS" onclick="pageTracker._trackPageview('/outgoing/wiki.archlinux.org/index.php/ABS?referer=');">http://wiki.archlinux.org/index.php/ABS</a></p>
<p><a href="http://wiki.archlinux.org/index.php/AUR" onclick="pageTracker._trackPageview('/outgoing/wiki.archlinux.org/index.php/AUR?referer=');">http://wiki.archlinux.org/index.php/AUR</a></p>
<p><a href="http://aur.archlinux.org/" onclick="pageTracker._trackPageview('/outgoing/aur.archlinux.org/?referer=');">AUR</a></p>
<hr />
<p><small>© zhtlancer for <a href="http://zhtlancer.com">zhtlancer&#039;s blog</a>, 2009. |
<a href="http://zhtlancer.com/2009/07/arch-linux-makepkg-building-too/">Permalink</a> |
<a href="http://zhtlancer.com/2009/07/arch-linux-makepkg-building-too/#comments">暂无评论</a> |
Add to
<a href="http://del.icio.us/post?url=http://zhtlancer.com/2009/07/arch-linux-makepkg-building-too/&title=Arch Linux的makepkg工具" onclick="pageTracker._trackPageview('/outgoing/del.icio.us/post?url=http_//zhtlancer.com/2009/07/arch-linux-makepkg-building-too/_title=Arch_Linux_makepkg&amp;referer=');">del.icio.us</a>
<br/>
Post tags: <a href="http://zhtlancer.com/tag/arch-linux/" rel="tag">Arch Linux</a>, <a href="http://zhtlancer.com/tag/linux-opensource-projects/" rel="tag">Linux</a>, <a href="http://zhtlancer.com/tag/%e7%bc%96%e8%af%91/" rel="tag">编译</a><br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://zhtlancer.com/2009/07/arch-linux-makepkg-building-too/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

