存档

文章标签 ‘Arch Linux’

10

这个问题从开始用Awesome以来一直困扰着我,wibox上的所有中文都诡异得奇丑无比,但都一直没时间收拾这个。今天终于痛下决心折腾了一下,事实证明还是自己太二了……

首先,如果在Awesome配置中设定具体的字体名称的话,应该是无法设置多个字体的,也就没法设置独立的西文+中文或其它CJK字体作为fallback(欢迎大家关于这点提出异议,那本文后面的话就可以直接忽略之了…)。这样如果指定了一个英文字体名称的话,也不知道Awesome用了什么样的fallback策略,wibox上显示的中文貌似居然都不是同一种字体的……

其实要在Awesome中独立设置西文和中文字体很简单,只要回归本质即可——利用fontconfig的配置机制。在~/.fonts.conf(针对自己的用户)或/etc/fonts/local.conf(针对系统全局,不推荐)文件中,对sans、serif、monospace等字体族的字体进行设置,以字体先后顺序的形式调整好优先级。需要注意一般将要设置的英文字体放在中文字体前面才能生效。然后在Awesome配置中,将字体改为要用的字体族的名字即可,比如”serif 8″,这样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

, ,

06

今天重装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> map –mem –heads=0 –sectors-per-track=0 (hd0,1)/archlinux-2010.05-core-i686.iso (0xff)
grub> map –hook
grub> chainloader (0xff)
grub> 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可以尝试一下~

,

14

使用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);包建立环境设置;软件包默认安装位置设置…不过如果你不熟悉完全可以不管它,默认设置已经可以有很不错的效果了。

makepkg的使用

然后就可以利用makepkg建立自己的软件包了。这里以AURArchLinux User-community Repository,后面会介绍)上的linux-fetion客户端(一个开源的跨平台飞信客户端)为例说明makepkg的使用过程。

  1. 首先到这里下载linux-fetion的PKGBUILD脚本
  2. 在PKGBUILD脚本所在目录执行makepkg,你就能看到makepkg开始自动下载linux-fetion的源码,并开始编译,编译完成后还会自动打成PKG包
  3. 执行完毕后,如果没有出错,当前目录下应该出现了一个.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,其中主要设置”REPOS=(core extra !community !testing)”这一项,即分别选择是否同步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支持,就可以这么做

  1. 先在/var/abs/local下建立一个transmission目录并进入该目录[code=bash]mkdir /var/abs/local/transmission & cd /var/abs/local/transmission[/code]
  2. 将ABS提供的transmission脚本复制过来[code=bash]cp -r /var/abs/extra/transmission-gtk/* .[/code]
  3. 打开PKGBUILD脚本,先查看其源代码下载地址,从该地址手动下载源码,在本地解包,并针对IPV6进行相应修改
  4. 修改PKGBUILD脚本,使得它直接使用上一步修改过的源码进行编译,而不是从网上重新下载源码
  5. 执行makepkg,编译&制作软件包
  6. 直接使用pacman将我们定制好的transmission更新到系统中

可以看到利用ABS配合makepkg可以非常方便的进行软件包定制。

AUR

虽然Arch Linux提供了一个很好用的软件包管理系统,但是我们使用的一些软件Arch 的官方软件仓库并没有提供,难道我们必须一个一个自己写PKGBUILD脚本吗?当然这也是一个方法,尤其对于那些牛人们来说,但是有了AUR,对于大多数人来说就有了更方便的方法。

AUR(the Arch User-Community Repository)是一个由用户社区自行维护的庞大的软件仓库,常用的软件基本都可以在这里找到相应的PKGBUILD脚本,方便地建立软件包,进行安装。其最大的特点就是开发性,你可以将自己写的某个软件包的PKGBUILD脚本上传,与他人共享,而他人对此脚本有什么意见,都可以直接向你提出,或提醒你脚本已过期等等。比如我上面举例提到的linux-fetion,就是利用AUR提供的PKGBUILD脚本。

AUR的站点是http://aur.archlinux.org/,你现在就可以根据自己需要去下载需要的PKGBUILD脚本,构建需要的软件包了。不过你也可以忍耐一下,看完下面对yaourt工具的介绍,你就可以用yaourt这一强大工具让这一过程更加自动化。

Yaourt

yaourt(Yet AnOther User Repository Tool)是一位大牛写的Arch软件包管理工具,提供了对pacman的封装,但最主要的功能就是使得从AUR构建软件包更加方便。

首先从这里下载yaourt的PKGBUILD脚本,按照一般的makepkg方法安装该软件包。

安装完成后,试试执行[code=bash]yaourt fetion[code]我们可以看到yaourt自动从AUR上搜索fetion关键字,找到相应Repo信息。我们可以按序号选择一个,yaourt就会自动下载PKGBUILD脚本,并提示你做需要的修改之后,即可自动构建、安装软件包。安装完成还会自动对软件包进行投票。总之,功能非常强大,你可以自己去探索探索。

参考来源

Arch Wiki:

http://wiki.archlinux.org/index.php/Makepkg

http://wiki.archlinux.org/index.php/ABS

http://wiki.archlinux.org/index.php/AUR

AUR

, ,