Official Installation Guide (简体中文)

From ArchWiki
Revision as of 06:23, 3 October 2008 by Suzebi (talk | contribs) (修改错别字)
Jump to: navigation, search


Template:Article summary start Template:Article summary text Template:Article summary heading Template:I18n entry Template:I18n entry Template:I18n entry Template:I18n entry Template:I18n entry Template:I18n entry Template:Article summary heading Template:Article summary wiki (适合新手) Template:Article summary end

这是Arch Linux发行版(代号为“Don’t Panic”)的普通用户文档。它包括获取必要文件、安装及设置一个基本的、可启动的系统3个方面的内容。另外提供了系统规划及Arch专有工具,如包管理器pacman和Arch Build System(ABS)方面的简单参考。

翻译说明

根据Official_Arch_Linux_Install_Guide翻译而来。里面去掉了一些译者认为价值不大的内容(如LILO相关内容),如果您认为有添加的必要,可以与我联系或者自己添加。另外对文档内容进行了一定的修改,使它适用于2007.8.2版本的安装。 在翻译过程中只保留了安装、初始配置、基本软件包管理方面的内容(如没有包括ABS系统的内容),目标是让用户参照本文档可以快速地安装、使用Arch Linux。至于如何把安装好的Arch Linux配置成合适自己的工作环境(如X等一些应用软件的安装、本地化设置等),请参阅维基其它内容。

介绍

Arch Linux 是什么?

Arch Linux是一个针对i686平台优化过的linux发行版,它的思想来源于CRUX(Per Lidén 开发的一个伟大的发行版)。


Arch Linux(AL)努力维护最新的、稳定的软件。我们目前提供一个core软件包库、一个不断增加的extra软件包库,它们由AL开发者维护;除此之外,社区中可靠成员也向AUR提供数以千计的额外软件包。

针对“简单、轻量”的目标,Arch Linux中去除了传统linux系统中一些用处相对较小的部分,比如 /usr/doc及info内容。根据我个人经验,平时这些东西都很少使用,在需要的时候可以通过网络获得同样的信息。Manpages all the way!

Arch Linux也会努力使用一些更新的特性,如Arch Linux 0.8(Voodoo)默认使用2.6的内核并启用udev,并且支持EXT2/EXT3/REISERFS/XFS/JFS,RAID/LVM及加密文件系统。

许可

Arch Linux、pacman、相关文档和脚本的版权(copyright 2002-2007)归Judd Vinet所有,并遵守GPL协议。

致谢和反馈

该文档主要基于Judd Vinet@archlinux.org的工作,dennis@archlinux.org及Tobias Powalowski tpowa@archlinux.org对该文档进行了一些额外的修正和整理。修正及反馈会被提交给bugtracker。另外还有数不清的贡献者通过提交修正和改进建议来推动Arch Linux官方文档的发展,在这里无法把他们的名字全部列出来,谨向所有的贡献者表示诚致的感谢,因为你们的贡献才使Arch Linux得到有效的维护并不断进步。谢谢大家。

安装Arch Linux

安装前的准备工作

Arch Linux针对i686处理器进行优化,因此无法运行在比这更低或者不兼容的x86 CPU上(如i386,i486,i586),你的处理器必须高于(包括)奔腾II或者K6-2。官方同样支持x86-64架构。

有一个社区项目为i586和ppc架构提供软件包,通过这里可以了解更多相关信息。

在安装Arch Linux 之前,你应该先决定要使用什么样的安装方法。对于光盘安装,Arch Linux提供3种不同的自启动ISO光盘镜像。

首选的安装方法是灵活的光盘安装,我们为你提供3种不同的安装盘,它们唯一的区别是包含的软件包不同。通过这些镜像,你可以在安装程序中指定FTP服务器来使用最新的软件包来安装你的系统。并且这些镜像光盘可以作为最终恢复光盘使用。

  • 完整的镜像:arch-0.8.iso(550MB),它包含了在发布时的整个core(原文为current,这里改为core,译者注)软件包仓库。通过在线检查软件包列表可以了解所包含的软件包的详细信息。使用这个镜像来创建安装光盘,你可以直接安装一个功能完整的linux系统,包括窗口管理器和一些帮助程序,当然它可能没有包括一些你需要的软件。如果你的机器无法访问因特网,你最好使用这个镜像,因为它提供的软件包是最多的。
  • 另一个小得多的镜像:arch-0.8-base.iso(150MB),它只包含基本系统包及内核包。请注意,如果你打算在安装过程中使用RAID/LVM,你不必非要下载上面的完整iso镜像了,因为在不久前相关的软件包已经转移到base镜像当中。使用这个镜像安装出来的是一个具有完整基本功能的linux系统,除了命令行之外它没有其它任何附加品。这个镜像适合安装一个可工作的最小化基本系统,无法直接设置网络连接以支持FTP安装。
  • 最后一个镜像:arch-0.8-ftp.iso(22MB),它只包含最基本的安装环境,其它所有的软件包都必须在安装过程中从FTP服务器上下载。因此它只适用于那些可以方便快捷地连接因特网或者拥有局域网镜像的用户。这种安装方式最大的优点是:在安装过程中使用的软件包都是当前最新的,安装完成之后不必再更新系统。如果你的网络连接又快又便宜,就选择这个镜像吧。


如果你的计算机上没有CD-ROM,你可以参考 这份指南 用U盘安装 ArchLinux 。(如果你机器上有可运行的windows系统,可以下载iso镜像,然后使用grub4dos引导进入安装环境,译者注)

现在就可以取得一份可启动的Arch安装光盘:如果你连网方便,可以从镜像列表中下载一个镜像,然后烧录成光盘;如果你连网不方便或者没有光盘刻录机,可以请别人帮忙刻录一张;你还可以通过OSDisk在线购买光盘。此外你不需要为使用老的ISO镜像进行安装而担心,因为当你完成系统安装之后只需要一条命令就可以将整个系统更新到最新状态――当然,这需要你拥有宽带连接。

现在在安装过程中已经支持使用PPP拨号连接因特网,ppp工具、rp-pppoe及ISDN用户空间工具已经被包含在安装镜像之内。

0.8的ISO镜像的运行方式和安装后的arch系统相似,下面是它的一些特点:

  • 包含pacman,这样在安装环境中可以通过它安装其它所需的软件包
  • 完全支持 /etc/rc.d/ 和 /etc/rc.conf
  • 完整的arch网络支持,包括ssh,telnet和端口映射服务
  • 支持定制配置文件:任何位置的/config目录及其中的文件都会被拷贝到安装环境的/etc/中
  • 在启动过程中可以加载额外的包作为附件:任何位置的/packages目录及其中的文件都会被安装
  • 包含links和naim程序,可以连接因特网
  • 完整的kexec支持

对新手来说,最有利的Arch Linux安装方法无疑是通过光盘安装基本系统以及所有所需的软件包,然后在设置好网络连接之后再更新系统并安装其它的软件包。

在试图安装Arch Linux之前你还要注意一点:在安装过程中你需要回答一些诸如硬盘分区、模块加载、修改系统关键文件(如grub.conf,rc.conf等)一类的问题。安装程序不会手把手地引导你完成这些配置,你必须独立完成这些工作。这对新手是个不小的要求,如果你对这些内容感到为难,那么你需要先通读整篇文档,整理一下不清楚的地方,然后通过IRC、论坛或者周围的linux专家来解决这些疑问,在弄清楚所有的问题之前不要轻易尝试以免破坏你的系统。当然你可以大胆地尝试直到它可以正常工作,但是一定要记得我们已经警告过你了。尽管这样说,其实一般没有那么糟糕。;)

你需要准备的东西:

  • 掌握一定的linux系统知识,详细了解计算机的硬件配置
  • Arch Linux安装介质(见镜像列表)
  • 一台基于i686或者x86-64构架的计算机(奔腾Pro,奔腾II或者更高,Athlon/Duron等。注意:不支持AMD K6,Transmeta Crusoe,CyrixIII,VIA-C3)
  • 至少128MB内存
  • 抽出一点时间

获取Arch Linux

你可以从任何一个镜像下载Arch Linux。进入iso目录,下载对应的镜像文件即可。一般来说,你最好下载最新版本的镜像,这一方面可以减少出问题的可能,另一方面可以减少升级系统的时间。

准备安装介质

  • 下载镜像: <镜像地址>/<年>.<月>/iso/<CPU架构>/Archlinux-<版本号>.iso
  • 下载md5sum: <镜像地址>/<年>.<月>/iso/<CPU架构>/md5sum-<版本号>.txt
  • 使用md5sum验证iso镜像的完整性:
md5sum Archlinux-<版本号>.iso
  • 使用刻录机将下载的ISO镜像烧录成光盘。
  • 如果你需要在安装过程配置网络(如FTP安装),记下当前的网络设置:
    • IP地址
    • 子网掩码
    • 网关
    • 以太网网卡模块名称(例如: eepro100, 8139too, ne2k-pci,等)

使用CD-ROM

如果你对启动过程已经很熟悉了,可以跳过这一节,直接从“通用安装过程”开始Arch Linux的安装。

将Arch Linux安装光盘放进驱动器,然后重启系统,确保BIOS的设置可以从光盘启动。如果你不知道如何修改BIOS设置,请参考你的主板手册或联系系统厂商。从光盘启动之后,会出现一个引导提示符,这时你可以输入一些选项参数或者直接按回车。大部分用户直接按回车就可以了。

如果你的CD-ROM无法启动,你可能需要排查一下可能的原因甚至更换CD-ROM,直到可以通过CD-ROM启动为止。

在启动过程结束后,你已经自动进入(实际上还需要按一下回车,译者注)一个根用户shell,屏幕的上方会显示一些使用说明。在这里你已经可以开始实际的安装了,或者手动做一些必要的准备工作。

通用安装过程

到这里,你的系统(安装环境)已经启动起来,安装源(光盘或者FTP服务器)和要安装的硬盘都必须处于可用状态。

安装步骤:

  1. 加载non-US键盘映射
  2. 运行安装程序
  3. 配置网络(针对FTP安装)
  4. 准备硬盘分区:
    1. 自动分区
    2. 手动分区
    3. 设置文件系统挂载点
  5. 选择软件包
  6. 安装软件包
  7. 配置系统
  8. 安装内核
  9. 安装引导器
  10. 退出安装

有经验的用户可以在启动安装程序之前,在shell里面利用一些工具手动进行硬盘分区。如果你认为不需要进行更多的手动交互,可以跳过这一步。要注意,Arch Linux安装介质为有经验的用户提供另外一个安装脚本:/arch/quickinst。该脚本将“基本”软件包安装到指定的目录。如果你想进行一些特殊、有趣的安装(如RAID,LVM)或者不想使用安装程序,你可以使用quickinst脚本。这样的安装方法很酷。

加载non-US键盘映射

如果你需要非美国键盘映射,你可以使用km工具加载新的键盘映射表。在命令提示符下输入km,然后利用方向键浏览、选择正确的键盘映射表或者控制台字体。

运行安装程序

现在你可以运行/arch/setup启动安装程序。在显示过一些说明信息之后,程序会提示你选择安装方法。如果你拥有快速的网络连接,可以选择FTP安装,使用最新的软件包来构建你的系统。请注意如果你需要使用一些复杂的、需要验证的代理设置,这可能会带来一些问题。如果你不能使用CD-ROM或者其它任何当前可以挂载的介质,FTP安装是你唯一的选择。

在安装过程中,确保每完成一步后都选择了“DONE”,这样才会保存你当前所作的设置。此外,尽量按照安装脚本的顺序进行设置,以免安装程序出错。 设置一个软件包FTP镜像或者根据自己需要的软件包创建安装光盘是很简单的,这在为多台机器安装Arch Linux的时候是非常有用的,它节省了带宽和下载时间。为了让你我的生活更简单,请认真的考虑一下这些选择吧。

如果选择了CD-ROM或者其它安装源(一些可以挂载的介质,如DVD,USB,已存在文件系统等),你就只能安装介质里面包含的比较旧的软件包。这样做的优势在于你不需要网络连接,推荐拨号用户或者不愿意下载100MB以上软件包的用户使用这种安装方式。

在选择一种安装方式后,就进入安装菜单,顺序列出了要完成的安装步骤。

在安装过程的任何一步,你都可以按ALT-F5进入第5个虚拟控制台观察安装命令的输出结果,然后按ALT-F1可以返回安装程序正在运行的第1个控制台。如有需要你还可以切换到其它的控制台做一些所需的操作。

配置网络(针对FTP安装)

配置网络允许你安装并配置网络设备。

已经列出了当前所有可用的网络设备。如果没有可用的以太网卡或者要使用其它的网卡,你可以先切换到其它终端(如按下ALT-F2切换到第2个终端),然后手动加载需要的模块。或者你也可以直接按照说明来做:点击“OK”,在接下来的屏幕上选择“Probe”命令来侦测网络模块。如果安装程序无法找到正确的网络模块,请检查你的网卡是否正常安装在主板上并且被内核所支持。有些时候必须从网卡制造商获取一份二进制的专有驱动,把它拷贝到安装系统然后手动加载它。一般说来这不算什么很痛苦的事情,使用不同的网络模型也是深思熟虑的。

如果已经加载正确的模块,并且所有的网卡已经被列出来了,此时你可以选择要配置的网卡进行详细的设置。如果你的网络中有DHCP服务器,那么这里可以直接选择“YES”,它将自动配置你的网络;如果你使用静态IP地址,请选择“NO”,然后手动输入网络信息(和你前面记下来的一样)。根据自己的情况配置好网络之后,可以用一些标准工具(如ping)来测试网络是否连通。

由于自动化配置还不是非常完美,安装程序有可能无法成功配置网络。如果你碰到了这样的稀有事件也不用烦恼,可以通过其它的控制台手动配置网络设备。这一步的目标是为安装程序提供一个到安装用FTP服务器的透明连接。

显然,这一步只对FTP安装有效。

准备硬盘分区

选择“Prepare Hard Drive”后将会进入一个子菜单,在这里有2个选择可以准备安装的目标驱动器。

第一个选择是“Auto-Prepare”,它会自动在你的硬盘上创建3个分区及相应的文件系统,分别用于/boot,swap,root(即/),这些分区会被挂载在适当的位置。更详细一点,这一步将会创建以下分区:

  • 32 MB ext2 /boot 分区
  • 256 MB swap 分区
  • / and /home 分区(所有剩余空间)

根据不同的硬盘结构,各分区实际大小可以会有轻微变化。如果你对硬盘分区了解不多,可以选择这个选项,但是要特别注意: 选择“AUTO-PREPARE”会擦除所选硬盘上所有的数据!你必须仔细阅读安装程序给出的警告信息,并确保将要分区的设备正确无误!

你可以通过下面的方法来验证你所选择的设备是正确的:打开另一个终端(ALT-F2),输入 “cfdisk –P s <设备名称>”,屏幕上会显示出所选设备的分区情况,这足以让你识别正确的硬盘。

如果没有显示任何设备名称(即”[nothing] will be COMPLETELY ERASED!...”),并且点击“YES”后安装程序显示设备不可用(”Device not valid”)的错误,请确认你为SCSI,RAID等类似的设备加载的正确的驱动模块。你仍然可以通过切换到另一个终端手动输入命令来加载模块,然后再返回到安装进程所在的终端(ALT-F1)。

如果你想手动分区,请根据自己的需要(见下面2节),使用另外两个选项来准备目标介质:”Partition Hard Drives”,手动进行分区;”Set Filesystem Mountpoints”,设置文件系统挂载点。硬盘分区准备完毕后返回到主菜单。

手动分区

如果你选择了“Auto-Prepare”来自动分区,请跳过“Partition Hard Drives”这一步!

如果你要手动分区,请在这一步选择要分区的硬盘,然后会自动运行cfdisk程序,在这里你可以自由的修改分区信息,修改完毕后依次选择 [Write]和[Quit]返回安装程序。

你至少应该有一个根分区(/),并且记下每个分区的挂载位置,然后在下一步中进行设置。

设置文件系统挂载点

如果你选择了“Auto-Prepare”来自动分区,请跳过”Set Filesystem Mountpoints”这一步!只有当你在控制台或者在前一个选项中手动完成分区的情况下你才需要进入这个菜单设置文件系统挂载点。

安装程序首先询问用于swap的分区,要么在前面建立的分区中选择一个作为swap分区;要么直接选择”DONE”,这样你的系统将不会使用交换分区。安装程序本身不支持使用交换文件,如果你想使用交换文件,需要先设置好挂载点,然后使用swapon命令激活一个格式化好的分区上的交换文件。

设置好交换分区之后,安装程序将会继续询问根文件系统(/)使用的分区,这是必须要有的。

接着安装程序会建议为/boot选择一个单独分区。具体如何选择取决于用户的分区策略。

然后安装程序将反复询问不同的挂载点,直到用户选择”DONE”为止。

每当你指定一个要挂载的分区,安装程序都会询问是否要在选定的分区上创建文件系统。如果选择”YES”,程序会询问文件系统的类型(如果你不了解各种文件系统的特点,那么ext3是个不错的选择),然后根据指定的文件系统类型格式化分区,这会擦除该分区上所有的数据!当然你可以选择”NO”来保留分区上已有的文件系统。

如果想保留分区上的数据,强烈建议用户先备份再安装。否则一旦安装过程中发生不可预料的错误,不要说我们没有警告过你! 安装程序还会询问是否在交换分区(swap)上创建文件系统,因为这个分区使用独有的文件系统,这里你应该选择”YES”。

如果你还想挂载其它的分区,比如将/boot或者/home建立在单独的分区上,可以简单地通过下面的操作来完成:

  • 选择一个要挂载的分区
  • 选择一个文件系统(如果你不想保留原来的数据,而是建立一个新的文件系统)
  • 为这个分区输入一个唯一的挂载点

重复这个步骤直到所有的分区挂载点都被设置好,然后选择”DONE”,安装程序会列出所有要格式化的分区及相应的挂载点,仔细检查无误后,选择”OK”来实际完成这上面所有的操作。完成分区、格式化、挂载点设置后请返回到主菜单进行下一步。

选择软件包

“Select Packages”让你选择需要从光盘或者FTP镜像上安装到机器上的软件。

如果你选择的是光盘安装,你必须告诉安装程序是需要它挂载光盘自身,还是你手动将安装介质挂载到/src目录。根据自己的需要进行选择,一般来说选择”CD”即可,然后安装程序会让选择正确的光驱。

如果正确的光驱没有出现在列表中,请确认你已经加载了所需的驱动模块(如SCSI,USB存储器等),如果没有可以切换到其它终端手动加载。 如果选择了FTP安装,你需要从镜像列表中选择一个镜像,或者选择”Custom”输入指定的镜像FTP服务器地址(必须是包含core.db.tar.gz的目录的完整路径)。安装程序会检测你输入地址的有效性,如果一切正常就可以进入下一步。

无论选择了什么样的源,当成功获取软件包列表数据后,将会进入软件包类别选择屏幕。

如果在获取软件包数据库时显示错误,你应该选择其它的FTP镜像,并确保网络可以正常工作、地址输入无误。在光盘安装时需要检查一下/src有没有正确挂载。仔细阅读错误信息,大部分情况下只要稍微修改一下输入路径即可解决问题。

安装源准备好之后,就可以开始选择要安装的软件包了。首先要选择软件包组,然后进入子菜单通过选择/取消调整具体的软件包。

Base组中的软件包必须全部选择安装,其它软件包组中的软件包视需要安装。请注意:只有你选择了对应的包组,这个包组中的软件包才会出现在后面的软件列表当中以逐一选择。也就是说,如果你只选择了base组,那么在接下来的屏幕列表中不会出现base组中以外的软件。

如果你想最小化安装,同时又想顺便浏览一下所有可选择的软件包,那么你应该把所有的软件包组都选上,然后在提示”Select all packages by default?”时选择“NOT”来手动选择要安装的包。

对于"Select all packages by default?"的询问,如果选择“YES”,你选择的包组中所有的软件包默认都是被选择的,你要做的是把不需要的软件包取消掉;如果选择“NO”,所选包组中的软件仍然出现在列表中,除了base包中的软件是选中的之外,其它包组的软件全部处于未选中状态,你要做的是把需要的软件包选中。

选择“NO”对于最小化安装系统更方便一些!

建议用户安装base中所有的包,其它组中的包不必马上安装,可以在系统安装完毕后通过pacman直接安装最新的软件。当然为了让安装后的系统能正确地访问网络,需要根据自己的网络环境安装一些必要的包:

dhcpcd(base)
如果你需要dhcp来配置网络
isdn4k-utils(network)
如果你使用ISDN拨号
ppp(base)
如果你使用猫拨号
wvdial(network)
用猫拨号的简单前端
rp-pppoe(base)
DSL虚拟拨号

下载得到的base ISO镜像中只包含base组中的软件包,如果你在安装过程中需要其它组中的软件(如netwok中的isdn4k-utils),你必须下载完全版ISO镜像。

在选择完要安装的软件包之后,选择”DONE”进入下一步:安装软件包。

安装软件包

“Install Packages”将会把在上面选中的软件包安装到硬盘,实际安装的软件包数目可能比你直接选择的要多,这是因为一些软件包之间有依赖关系。为了你选择的软件能正常工作,安装这些依赖包是必要的,所以安装程序不会再次询问。

在选择好软件包之后,安装程序不会检查目标分区是否有足够的空间!这项看起来微不足道的工作会花费相当长的时间,因此安装程序简单的假定目标分区上有足够的剩余空间。万一目标分区上没有足够的空间,安装程序将会出现一些稀奇古怪的错误。你可以切换到另一个控制台利用”df –h”命令来查看/mnt下挂载分区的使用情况。如果目标分区空间不足,请重新分区或者减少要安装的软件包数量。

错误信息及调试输出会显示在第5个终端上(ALT-F5)。在正常情况下,如果操作成功,这里的显示就没有多大意义了。当软件包安装完成后,进入下一步“配置系统”。

配置系统

“Configure System”允许你编辑一些重要的系统配置文件。首先安装程序会询问是否允许hwdetect脚本自动检测硬件、生成默认配置文件。除非遇到了特殊情况或问题,否则一般情况下选择“YES”就可以了。

接下来回答一些RAID,LVM,加密卷方面的问题。如果你的根系统寄存于RAID,LVM或加密卷上,这里要回答“YES”,安装程序会自动将相应的HOOKS添加到mkinitcpio.conf中,以使内核可以从相应的设备上启动根分区。否则在新系统启动时会出现”kernel panic”错误。大多数用户可以选择“NO”。 经过这个自动化预配置后,安装程序会让你选择一个喜爱的编辑器(vim,nano)来手动调整产生的配置文件。如果你没有用过这些编辑器,那么请选择nano。

如果你很赶时间,你可以直接跳过这一步,直接使用自动生成的配置文件,并祈祷它能正常工作。强烈建议用户仔细的检查所有的配置文件。详细的配置方法请参考“系统配置”一节。

安装内核

“Install Kernel”让你选择要安装到硬盘上的内核镜像。

“2.6”将会安装支持SCSI/SATA/IDE的2.6内核,更加准确的支持取决于你在初始化内存虚拟盘(initramfs)中的配置。默认配置支持所有的SCSI/SATA/IDE设备。详细信息请参考“系统配置”一节中关于虚拟镜像的内容,特别是新的PATA驱动及老的IDE驱动可能带来的问题。

请注意当前放出的Arch Linux只提供一个内核,并且为了提高灵活性它被放入了initramfs当中。

光盘中包含2.6.21.1内核(这是vodoo的情况,以后放出的ISO都会使用当时最新的内核。译者注),如果使用FTP安装,可以安装FTP镜像上最新的内核,这可能会带来一些不可知的变化或者兼容性问题。虽然出现问题的可能性比较小,但是请留意这种可能性。

安装引导器

“Install Bootloader”将会将引导器安装到硬盘上。你可以根据自己的喜好选择安装GRUB(建议)或者LILO。

在安装引导器之前,安装脚本会让你确认引导配置文件的正确性。请确保其中/系统(及/boot,如果单独分区的话)的配置正确。

如果你选择安装LILO,它会根据你的配置文件自动安装;如果安装GRUB,你需要指定它将被安装到哪个分区上(如/dev/sda代表第一个硬盘的mbr,/dev/sda1代表第一个硬盘的第一个分区的引导扇区。输入的时候一定要再三确认,不要搞混了)。如果出现错误,请到5号控制台检查出错信息。 如果你打算设置多系统引导,最好把引导器安装在根分区或者/boot分区,然后利用主引导扇区上的引导器来启动该分区引导扇区上的grub(or lilo)。 将引导器安装到MBR会覆盖当前MBR中的引导器!在这么做的时候你必须清醒地认识到这个后果!

退出安装

现在选择“Exit Install” ,然后将安装光盘从光驱中取出,在命令行下输入“reboot”,然后耐心地等待一会。 如果你的系统成功启动,请以root用户直接登录(无密码),然后马上用passwd命令修改root密码,用useradd命令添加一个普通帐户(详细信息请参考“用户管理”一节),设置网络连接等等。

恭喜你!属于你自己的Arch Linux已经安装成功了,你可以根据自己的需要来调整这个系统。

系统配置

这部分讲述一下Arch Linux核心配置文件的修改。你必须手动编辑这些文件,没有图形工具帮你进行配置。这里只介绍一下最基本的配置文件,如果你需要了解其它的配置信息请查看相应的manpage或者在线文档。在多数情况下,在Archlinux维基和论坛可以得到很好的帮助。

Arch Linux在管理系统方面没有使用任何抽象层,都是直接操作。一般说来你可以直接按照软件作者的说明进行设置,或者直接按照在网络上搜索到的信息进行设置,两者都是可以的。

配置文件

在准备启动你的新系统之前,你最好检查一遍下列配置文件,确保无误: 配置文件列表:

  • 安装相关配置文件:
    • /etc/rc.conf
    • /etc/hosts
    • /etc/fstab
    • /etc/mkinitcpio.conf
    • /etc/modprobe.conf
    • /etc/resolv.conf
    • /etc/locale.gen
    • /boot/grub/menu.lst
    • /etc/lilo.conf
  • 其它配置文件:
    • /etc/conf.d/*
    • /etc/profile

/etc/rc.conf

该文件是Arch Linux主配置文件。在这个文件中你可以设置键盘映射、时区、主机名、网络、运行的后台服务、启动时加载的模块、个人设置等等。你必须 把这个文件中所有的设置及其说明都详细的看一下,理解它们的含义,根据自己的情况修改它们:

LOCALE 这个变量可以设置系统语言,所有支持i18n的程序都会使用这个设置。在locale.gen文件中可以查看可用的locale。默认设置为美国英语。

HARDWARECLOCK 如果你的BIOS中设置的是UTC,这里就使用UTC,如果BIOS是本地时间,那么使用”localtime”。如果你机器上有某个操作系统无法处理UTC时间(如windows),那么为了避免时间混乱,你需要把BIOS时间设置为本地时间,同时该变量设置为”localtime”;其它情况下最好使用UTC时间,这可以支持日光节约时间及其它一些有益的功能。

TIMEZONE 指定你的时区。所有的时区设置都在/usr/share/zoneinfo目录下面,该变量的值为这个目录下对应设置文件的相对路径。例如中国用户可以设置成”Asia/Shanghai”,也就是使用/usr/share/zoneinfo/Asia/Shanghai这个设置文件。如果你现在还不知道你所在的地方对应的时区文件,可以稍后完成其它配置之后在网络上搜索一下再进行设置。

KEYMAP 该变量定义启动时加载的键盘映射表。所有可用的键盘映射表在/usr/share/kbd/keymaps下可以找到。请注意该设置只对TTY有效,对X无效。默认的设置为美国标准英语键盘。

CONSOLEFONT 该变量定义在启动时setfont程序加载的控制台字体。所有可用的字体在/usr/share/kbd/consolefonts下面可以找到。

CONSOLEMAP 该变量定义在启动时setfont程序加载的控制台映射。所有可用的映射表在/usr/share/kbd/consoletrans下可以找到。如果你在locale变量中使用了utf8编码并且使用的程序会产生8位输出,那么你需要根据自己的语言选择合适的映射表(如拉丁文使用8859-1)。如果你平时在X下工作,可以忽略这个变量,因为它只对控制台程序有效。

USECOLOR 启用(或者禁用)启动时输出彩色信息。

MOD_AUTOLOAD 如果设置为“yes”,Arch在启动时自动扫描机器硬件并试图自动加载合适的模块,这个功能是通过hwdetect程序完成的。

MOD_BLACKLIST 这是一个数组变量,所有写入该变量的模块在启动的时候将会被禁止加载。例如,如果你不想使用PC扬声器,你可以把pcspkr模块加入到这个变量中。

MODULES 这也是一个数组变量,所有写入该变量的模块在启动的时候都会被自动加载,这可以自动加载那些没有通过modprobe.conf绑定到特定硬件设备的模块。直接把模块名称写入到这个变量当中即可,如果该模块需要输入参数可以在modprobe.conf指定。在模块名称前面加一个”!”可以禁止启动时该模块的加载(这与MOD_BALCKLIST不同!),这样在必要的时候可以临时取消一些模块的加载。在这里加入一些指定的网络模块可以使得系统总是自动按照指定的模块序列检测网卡,这样固定的网络设备具有固定的接口编号,这可以避免每次启动系统后网络接口编号的混乱。当然,这个问题更好的解决办法是在udev中设定固定的接口标签。

USELVM 设置为“YES”时,在系统初始化过程中会调用vgchange程序来激活LVM组。如果你不知道这是什么意思,就不用管它。

HOSTNAME 该变量设置机器主机名(不包含域部分)。这个变量该如何设置完全取决于你的选择,它可以是任何字母、数字、通用特殊字符的组合。当然也不要太出格。如果不明白就使用默认设置好了。

INTERFACES 该变量用来设置网络接口。默认设置及注释掉的说明很好地示范了设置方式。默认是使用DHCP自动配置网络;如果你不使用DHCP,你需要在这个变量中填入一些参数,至于参数的格式,你只要记住一点:该变量的内容与用ifconfig命令手动配置网络时传递的参数相同。

ROUTES 通过该变量来定义静态网络路由。可以参考一下默认网关的定义方式。基本上变量的内容与传递给routes add命令的参数相同。如果你对此不清楚,可以不用修改它。

NET_PROFILES 通过该变量可以在启动时加载不同的网络配置。在多网络环境中可以为每个网络进行不同的配置,然后通过该变量指定一个配置文件,方便地替代 INTERFACES/ROUTES变量中的设置。如果你的机器需要在不同的时间、不同的地点连接不同的网络(如笔记本),你可以在/etc/network-profiles/目录下建立一些不同的配置文件(该目录下有一个设置模板以供参考),然后通过NET_PROFILES变量指定要加载的配置即可。

DAEMONS 该变量中列出的是一些自动启动的脚本名称。所有的脚本都放在/etc/rc.d目录下。在脚本名称前面加一个“!”表示该脚本不会被执行;在脚本名称前面加一个”@”表示该脚本在后台执行,即不等序列中所有的脚本启动完成就直接继续下面的操作。一般情况下默认启动的一些脚本不需要进行修改,只有当你安装了一些服务程序(如sshd)并且希望它能在系统启动时自动运行,你可以把它的服务名称加入到这个变量当中。这一点是Arch与其它发行版不同的地方,其它发行版大多通过不同运行级别的到/etc/init.d/下的链接来完成脚本的自动运行。

/etc/hosts

在这个文件中可以设定所有网络中主机名/ip的对应关系。如果DNS无法解析某个主机名,你可以将该主机名及其IP添加到这个文件中进行正确的解析。一般说来不需要修改这里的内容,只需要把自己机器的主机名+域及机器IP写到该文件即可,因为有一些服务程序(如postfix)如果不能正确解析本机名称会发生错误。如果你不了解相关内容,可以通过man hosts察看相应说明,或者让该文件保持默认即可。

/etc/fstab

该文件保存文件系统及挂载点设置。安装程序已经按照你的选择创建了一个合适的fstab文件,你需要检查一下以确保无误(特别是当你使用LVM,RAID,加密根设备的时候)。

在当前的内核中,对ATA/IDE子系统引入了一个比较重要的变化:使用新的pata(并行ATA)驱动代替旧的IDE子系统,新的驱动下IDE磁盘的名称由had,hdb等变成sda,sdb等,和SCSI、SATA设备名称相同。所以当在/etc/mkinitcpio.conf的HOOKS中使用新的pata驱动时,/etc/fstab中的分区名称要作相应的改动!除了直接使用设备名称,还可以通过/dev/disk/by-uuid/…或者/dev/disk/by-label…的方式来引用正确的分区。仔细检查/etc/mkinitcpio.conf中的HOOKS,如果你使用了pata代替ide,硬盘设备名称形式为sd?;如果没有使用pata,硬盘设备名称形式为hd?。其它用到硬盘设备名称的配置文件也需要进行相应的修改。

/etc/mkinitcpio.conf

该文件用来调整系统初始化虚拟磁盘(即常说的initrd,initramfs)。initrd是一个压缩镜像,内核启动的时候会把它加载到内存当中。使用initrd是为了使系统自举以有能力访问真正的根文件系统。这意味着它必须加载访问IDE、SCSI、SATA、USB/FW等设备所需要的模块。一旦initrd加载了合适的模块(无论是直接通过modprobe命令还是通过udev),它就将系统控制权转交给Arch系统并继续启动过程。所以,initrd中只需要包含访问根文件系统所必须的模块,没有必要把所有要加载的模块都放到initrd当中。大多数要使用的模块在稍后的init进程中由udev加载。

默认情况下,mkinitcpio.conf中的设置是通过HOOKS加载支持全部IDE、SCSI、SATA设备的模块,也就是说默认的initrd几乎适合所有用户。这样做的缺点就是可能会加载许多不需要的模块,启动后通过lsmod命令可以查看所有加载的模块。加载过多的模块并不会对系统产生多大危害,但是许多用户仍然不喜欢这样的结果。这些用户可以修改mkinitcpio.conf文件的HOOKS,去除不需要的模块(如IDE、SCSI、RAID、USB等),然后重新制作initrd。 或者有经验的用户可以将需要的模块放在MODULES变量中加载,这可以进一步精简HOOKS。但是要注意察看文件中的注释,因为精简HOOKS是不是一件简单的事情。

如果你正在使用RAID或者加密的根文件系统,你需要设置底部的RAID/CRYPT变量。在维基中可以获取更多关于RAID/LVM、文件系统加密、mkinitcpio方面的内容。

当配置好mkinitcpio.conf文件后,必须以根用户运行mkinitcpio –p kernel26命令来重新制作镜像(除非你正在安装系统当中,此时当安装完内核之后由安装程序自动制作镜像)。

警告:如果mkinitcpio.conf文件设置有错误,系统可能会无法启动!所以在修改该文件的时候一定要非常小心。

在安装内核的时候会自动生成一个备用启动选项,它使用一个安全的默认镜像,当你配置的系统无法启动时可以试着使用该选项启动系统。

请仔细阅读fstab小节中关于pata转变问题的警告!

/etc/modprobe.conf

该文件告诉内核在启动时需要为系统设备加载的模块以及模块所需的参数。例如,为了让内核能够为Realtek8139网卡加载驱动模块并将其初始化为eth0网络接口,在modprobe.conf文件加入一行:alias eth0 8139too。

该文件的语法规则与旧的modules.conf几乎相同(除非你使用一些很怪异的选项)。大多数用户不需要更改这个文件。更多详细信息可以察看:man modprobe.conf。

/etc/resolv.conf

通过该文件来手动设置要使用的域名解析服务器。文件格式为:search domain.tld nameserver 192.168.0.1 nameserver 192.168.0.2。 将”domain.tld”及相应的IP换成自己的设置即可。”search domain.tld”表示当主机名不完整时,自动添加相应的域”domain.tld”来进行解析。这样设置后,当你”ping myhost”时实际上就是”ping myhost.domain.tld”。一般来说这些设置不是非常重要:如果你使用DHCP,就没必要修改该文件,当网络启动的时候系统会自动的修改合适的值;如果你使用静态IP,一般只要按照以前记下的网络信息将域名服务器的IP添加进去即可。

/etc/locale.gen

该文件列出了所有支持的locale及字符集。根据你的自己的语言文字,将合适的locale反注释掉,以根用户运行locale-gen命令来生成相应的locale即可,然后在系统中就可以使用这些locale了(例如将/etc/rc.conf中的LOCALE变量设置为对应的locale了,或者在启动X的时候设定合适的locale变量)。

在安装过程中,你不需要手动运行locale-gen。当你手动编辑完locale.gen文件后,安装程序会自动运行该命令。 默认情况下所有的locale(包括/etc/rc.conf中默认使用的en_US.utf8)都被注释掉了,为了使你的系统能正常工作,你必须编辑该文件并至少反注释掉在/etc/rc.conf中使用的locale(对中国用户来说一般只保留en_US及zh_CN相关的即可,译者注)。

/boot/grub/menu.lst

GRUB是Arch Linux的默认引导器。你必须检查并修改该文件来适应你的启动设置。关于LILO的用法请参考其它文档。

请确保你自己已经仔细阅读了fstab小节中关于pata转变问题的警告!

配置GRUB非常简单,最大的难题是它使用了不同于/dev/的命名方案。硬盘通过(hd0),(hd1)…的形式命名,设备序号与其在IDE/SCSI总线上的位置相对应,分别对应Arch Linux系统中的sda,sdb…。而且分区编号也是从0开始。在默认的menu.lst文件有有一些转换的例子可以帮助你理解这种用法。

当你掌握了设备命名方法之后,你只要为你的启动选项设定正确的内核、正确的根系统分区,并取一个好听的名字就可以了。如果使用打包好的2.6.x内核,还需要添加一个合适的虚拟磁盘镜像文件。镜像文件的位置必须与内核位置相同。一般情况下使用默认设置即可,你只需要检查一下启动根分区(/boot)和系统根分区(/)的设置是否正确即可(特别是要注意到pata问题)。

如果要为其它的操作系统创建一个启动选项,可以参照下面的例子,它可以启动任何一个分区上的引导扇区。用这种方法可以方便的启动微软所有的操作系统,只要把下面这段代码加入到menu.lst文件的后面并修改相应的启动分区即可。

(1) Other OS
title My Other OS
rootnoverify (hd0,1)
makeactive
chainloader +1

关于利用GRUB启动其它操作系统方面的内容请参考GRUB在线手册。

GRUB配置文件设置正确后,安装程序会提示安装GRUB,一般按照默认选项将其安装到MBR即可。

/etc/conf.d/*

在安装过程中,该目录下的内容并不重要。

一些服务程序脚本在这个目录中会有一个相应的配置文件,其中包含了一些有用的默认值。当一个服务程序启动后,它首先从这个配置文件中读取设置,然后再读取/etc/rc.conf中的设置。这意味着你可以将一些服务公用的设置放在/etc/rc.conf文件中来简化设置。当然如果你喜欢为每个服务程序单独设置变量,也可以在/etc/conf.d分别为它们创建一个配置文件。所有的服务都可以通过简单的脚本进行控制,这是多么美妙的事情。

/etc/profile

当每个用户登录到系统并开始初始化时会运行该脚本。在Arch Linux中该脚本非常简单(同其它方面一样,KISS)。你可以根据自己的需要来编辑它。

启动脚本

Arch Linux使用与*BSD系统类似的简单启动序列。第一个运行的启动脚本是/etc/rc.sysinit。它运行结束后,/etc/rc.multi被运行(正常启动时)。最后一个运行的脚本是/etc/rc.local。当从运行级别1(即单用户模式)启动时,/etc/rc.single将取代/etc/rc.multi的运行。与其它系统不同,你不会在代表不同运行级别的/etc/rc?.d目录下找到数不清的链接。事实上,Arch Linux只有3个运行级别,除了前面2个,另外一个就是运行级别5,它用来启动X。启动脚本会调用/etc/rc.conf中的变量和定义以及/etc/rc.d/functions中的脚本。如果你打算创建自己的服务程序脚本,可以参考一下这些文件与现有的服务程序脚本。

启动脚本纵览:

  1. /etc/rc.sysinit
  2. /etc/rc.single
  3. /etc/rc.multi
  4. /etc/rc.local
  5. /etc/rc.shutdown
  6. /etc/rc.local.shutdown
  7. /etc/rc.d/*

/etc/rc.sysinit

这是主系统启动脚本。它完成一些启动过程中必须的工作,如挂载文件系统、运行udev、激活交换分区、加载模块、设置本地化参数等等。你最好永远不要编辑这个文件!

/etc/rc.single

当以单用户模式启动系统时运行该脚本,在正常情况下不会运行该脚本。如果系统以单用户模式启动,例如在启动时向内核传递参数1或者在正常多用户模式下运行命令init 1,该脚本确保除了少数系统关键服务(syslog-ng,udev)之外没有其它服务运行。单用户模式用于在修改系统设置时确保没有其它用户使用系统,以免造成数据丢失或损坏。 对于桌面用户,单用户模式没有多大用处。同样的,你不需要修改这个脚本。

/etc/rc.multi

多用户启动脚本在调用完/etc/rc.local后,会启动在/etc/rc.conf中设定的所有服务程序。你也没有修改这个文件的必要。

/etc/rc.local

本地多用户启动脚本,你可以把你希望系统在启动过程结束后执行的命令放在这里,这些命令会在最后阶段执行。这是唯一一个你有可能会修改的启动脚本,你可以随意地在这个脚本中加入任何命令。

大部分常见的系统配置任务,如加载模块、改变控制台字体、设置设备,都有自己专用的领地。为了避免混乱,你必须确保你在rc.local中加入的任何命令都不会比加在/etc/profile.d/或者其它已有配置文件中更合适。

/etc/rc.shutdown

系统关机脚本的任务是停止服务程序、制裁文件系统、解除交换分区等待。最好不要修改它。

/etc/rc.local.shutdown

与/etc/rc.local类似,在这个文件中可以放入任何你希望在rc.shutdown之前执行的命令。请注意默认情况下这个文件并不存在,如果你要创建这个文件,请确保它具有可执行权限才能正常工作。

/etc/rc.d/*

该目录中存放着用于rc.conf中DAEMONS变量的服务程序脚本。除了在启动时被执行,你还可以在系统运行中利用这些脚本来管理服务程序。例如下面这个命令:

/etc/rc.d/postfix stop

将会停止postfix服务。当然只有你安装了相应的软件包之后,对应的脚本才会出现在这里。如果只安装了基本系统,这里的服务程序脚本是非常少的,随着软件包的安装,所有需要的启动脚本最终都会被放在这里。这个目录的作用与其它发行版中的/etc/rc3.d/或者/etc/init.d/相似,好处就是免去了数不清的链接。

用户管理

可以通过标准linux命令:useradd,userdel,groupadd,groupdel,passwd,gpasswd来添加或者删除用户和组。添加一个帐户的典型操作如下:

#useradd –m –s /bin/bash johndoe
#passwd johndoe

第一个命令向系统添加一个名为johndoe的用户,为他创建主目录/home/johndoe,将一些默认的登录文件放进主目录中,同时设定他的登录shell为/bin/bash。第二个命令为该帐户创建密码。只有创建密码之后该帐户才算被激活。

除了useradd命令,还可以通过adduser脚本来交互式的创建新帐户。 剩下的命令的用法可以察看相应的manpage。建议创建一个或多个普通用户用于日常使用,这可以大提高安全性、降低系统损坏的可能性。

访问因特网

由于缺乏解决拨号问题的开发者,通过拨号线路将Arch连接到因特网需要经历相当多的手工操作。如果可能,尽量设置一个专有的路由,然后就可以把它作为默认网关来使用。 在Arch Linux维基上有一些拨号相关的文档:

模拟猫

要想使用外接的贺氏兼容模拟猫,你需要安装ppp软件包。根据自己的需要修改/etc/ppp/options文件(如有问题请察看man pppd)。你还要建立一个交互脚本(chat),用来在初始连接建立后向ISP提交用户名和密码。pppd和chat的manpage里有详细的例子说明。使用udev的情况下,串口一般为/dev/tts/0和/dev/tts/1。 如果你觉得pppd太简陋了,可以安装wvdial或者类似的工具来简化设置过程。 如果你使用的是WinModem(不懂,内置猫?译者注),即内置猫PCI卡,你可以在LinModem的主页获取详细的信息。

ISDN

设置ISDN需要3个步骤:

  1. 安装、配置硬件
  2. 安装、配置ISDN工具包
  3. 配置自己的ISP

Arch打包好的内核中包含了必要的ISDN模块,这意味着你不必重新编译内核,除非你使用的是非常旧的ISDN硬件。将ISDN硬件设备连接到计算机上后,你可以试着使用modprobe命令来加载相应的模块。几乎所有的被动式ISDN PCI卡都可以使用hisax模块,只需要为它添加型号和协议两个参数。根据你所在国使用的标准设定协议号:

  • “1”-1TR6
  • “2”-EuroISDN(EDSS1)
  • “3”-无D通道的租用线路
  • “4”-US NI1

内核文档中有如何设置这些参数的详细描述(ISDN分支),你可以在线访问它。型号参数取决于你使用的ISDN卡,内核文档中README.HiSax文件列出了所有支持的型号,查找到你的卡对应的型号,然后通过下列命令来加载模块:

modprobe hisax type=18 protocol=2

上面这条命令会为ELSA Quickstep 1000PCI卡加载模块,并设置它使用EDSS1协议(德国)。/var/log/everything.log中记录了调试输出信息,如果出现问题可以在这里找到线索。请注意,如果使用外部USB ISDN适配器,还需要先加载一些相应的USB模块。 一旦你确定卡及基设置可以正常工作,就可以把相应的模块放到/etc/modprobe.conf中:

alias ippp0 hisax
options hisax type=18 protocol=2

或者你也可以只把参数设置留在这里,而把hisax模块放到rc.conf的MODULES数组中进行加载。两种方法随你选择。不过前一种方法有一个优点:只有在使用到的时候才会真正的加载模块。

现在硬件已经正常工作,你需要一些基本的工具来真正地使用它!

安装isdn4k-utils软件包,通过man isdnctrl来获取更多的信息。在manpage中给出了配置文件的详细说明,并且给出了一些有用的例子。

如果你使用US NI1标准,你必须把SPID回到MSN的设置中,并用冒号隔开。

当你用isdnctrl工具配置好ISDN卡后,应该已经可以拨入PHONE-OUT参数指定的机器,但是会出现用户名、密码认证错误。所以和普通的模拟PPP连接一样,你需要把正确的用户名和密码添加到/etc/ppp/pap-secrets或者/etc/ppp/chap-secrets,具体是哪个文件取决于你ISP的认证协议。如果不清楚,在两个文件中都写上就可以了。 如果你所有的设置都是正确的,现在应该已经可以以根用户身份,使用“isdnctrl dial ippp0”命令来建立拨号连接了。如果出现问题,记得检查日志文件!

DSL (PPPoE)

这段说明只对那些自身可以管理到ISP的连接的PC有关。你什么都不用做,除非你使用某种单独的路由,才需要定义一个正确的网关。 你首先要把连接DSL猫的网卡安装到计算机上,再加载网卡对应的模块(可以写入modeprobe.conf或者rc.conf),然后安装rp-pppoe软件包并使用pppoe-setup脚本来配置连接,最后输入所需的数据,这样才能建立DSL连接。建立连接或者断开连接的命令分别为:

/etc/rc.d/adsl start
/etc/rc.d/adsl stop

一般来说设置相当简单、明了,随时可以通过manpage来获取信息。如果想在启动时自动拨号,只需把adsl加入到DAEMONS数组中即可。

软件包管理

Pacman

pacman是Arch Linux的软件包管理器,它可以追踪所有安装的软件。它支持简单的依赖检查,使用标准gzip压缩的tar包来管理所有的软件包。下面列出了一些常用的命令(分别使用长参数和短参数,它们的功能是完全一样的)。如果想了解更多有关pacman的命令参数,请查阅man pacman。这里只是一个概览,它只描述了pacman很少的一部分功能,但是都是最常用的功能:

典型工作:

  • 将一个软件包文件添加到系统
  • 使用软件包文件更新软件
  • 移除软件包
  • 更新软件包列表
  • 更新系统
  • 从软件仓库添加/更新软件
  • 列出所有已安装的软件
  • 检查某个软件包是否已经被安装
  • 显示指定软件包的信息
  • 显示软件中所有文件的列表
  • 找出某个指定文件所属的软件包

将一个软件包文件添加到系统

pacman --add foo.pkg.tar.gz
pacman -A foo.pkg.tar.gz

这个命令会把foo.pkg.tar.gz软件包安装到系统。如果不能满足依赖关系,pacman会出错退出,并自动显示出缺少的依赖包。但是它不会尝试解决依赖关系,如果你想让它这么做,可以加上”--sync”参数。可以在一个命令中添加多个软件包,如果这些软件包之间有依赖关系,pacman会以正确的顺序来安装它们。

使用软件包文件更新软件

pacman --upgrade foo.pkg.tar.gz
pacman -U foo.pkg.tar.gz

该参数的功能与 “--add”相同,区别在于如果要添加的包比已经安装的包版本要新的话,它会自动升级该软件。显然”--upgrade”比”--add”更好用,除非你仅仅只是想让pacman检测一下某个软件包是否被安装。

移除软件包

pacman --remove foo
pacman -R foo

该命令可以移除所有属于软件包foo的文件(已经修改过的配置文件除外)。只需要给出软件包名称即可,不用加上pkg.tar.gz的后缀。 要移除软件包所有的文件,可以在上述命令中加上”--nosave”参数。

更新软件包列表

pacman --sync --refresh
pacman -Sy

该命令将从/etc/pacman.conf定义的软件仓库中获取最新的软件包列表,并解压到本机数据库。在你更新系统(--sysupgrade)之前最好运行一下这个命令以确保下载的软件都是最新的。根据你在pacman.conf设置的软件仓库地址,该命令可能需要相应的FTP/HTTP连接。该命令的作用与Debian的”apt-get update”非常相似。

更新系统

pacman --sync --sysupgrade
pacman -Su

该命令会将系统中已经安装的软件包更新到仓库中的最新版本。注意,该命令不会更新本机软件包列表,所以一般情况下需要将两个命令合并起来使用:

pacman --sync --refresh --sysupgrade
pacman -Syu

使用这样的参数pacman会自动更新软件包列表,然后根据新的列表更新系统中的软件,并自动解决依赖关系。

从软件仓库添加/更新软件

pacman --sync foo
pacman -S foo

该命令会获取并安装软件包foo,并自动完成所有的依赖关系。在做任何同步操作(--sync,-S)前一定要先更新软件包列表,或者在命令中加入”--refresh”或”-y”参数来自动更新。与”--add”参数不同,”--sync”参数对安装软件或更新软件同一看待。根据你在pacman.conf设置的软件仓库地址,该命令可能需要相应的FTP/HTTP连接。

如果在从服务器下载软件包的时候遇到奇怪的问题(如下载文件损坏、文件未找到),一般是因为你没有更新软件包列表造成的,或者是因为服务器本身正在同步镜像。

列出所有已安装的软件

pacman --query
pacman -Q

该命令会显示系统中所有已安装软件包的列表。

检查某个软件包是否已经被安装

pacman --query foo
pacman -Q foo

在上面的命令中加入一个软件包名称,如果该软件已安装,它会显示软件名称和版本;如果没有安装,不会显示任何信息。

显示指定软件包的信息

pacman --query --info foo
pacman -Qi foo

该命令显示已安装软件foo的信息(大小,安装日期,创建日期,依赖关系,冲突等)。如果该软件还没有安装,可以添加参数”--file”或者”-p”来察看软件包文件的相关信息:

pacman --query --info --file foo.pkg.tar.gz
pacman -Qip foo.pkg.tar.gz

显示软件中所有文件的列表

pacman --query --list foo
pacman -Ql foo

该命令显示软件foo中所有文件的列表。

找出某个指定文件所属的软件包

pacman --query --owns /path/to/file
pacman -Qo /path/to/file

该命令中的文件参数要使用完整路径(只有文件名是不会给出任何结果的),会显示包含指定文件的软件包的名称和版本。

访问软件仓库

软件包仓库是一个软件包及其元信息的集合,它可以位于本地目录或者远程FTP/HTTP服务器上。Arch系统中默认的仓库是core仓库(原文为current,译者注),里面的软件包由开发都进行更新、维护,里面的软件一般都是最新版本。 许多用户也会激活extra软件包仓库,它里面包含core仓库所没有的更多的软件包。你可以在/etc/pacman.conf中激活extra仓库,默认情况下该仓库是激活的。 你也以创建、维护你自己的软件包仓库,请察看pacman的manpage来获取详细信息。 如果你是用光盘安装,并且无法访问网络,你可能需要从光盘中安装额外的软件。具体内容请参考FAQs,特别是FAQ #3,它给出了如何使用安装光盘作为软件包仓库的方法。

Arch Build System (ABS)

二进制文件 vs. 源码

在包管理中,pacman负责二进制文件方面,而ABS则是负责源码方面:它帮助你从源码开始建立你自己的自定义软件包,同时还让你可以用你定义的方式重建Arch Linux的软件包。过程通常如下: 1. 与服务器同步你的ABS树。 2. 在/var/abs/local/里建立一个目录,其名字和你将要创建的软件包一样。 3. 将PKGBUILD.proto原型从/var/abs/复制到你新建立的目录中,删除掉.proto后缀,然后将它编辑为适合新软件包的需要。 4. 在PKGBUILD文件的工作目录中运行makepkg。 5. 用pacman安装新建立的软件包。 6. 把软件包发给你的朋友炫耀一番(或者把它给一位Arch用户让他/她迷上ABS)。

同步你的ABS树

通过以root身份运行abs脚本,你可以同步所有/vb/abs中所需包的文件。它需要cvsup包来执行,如果你没有安装的话会出现提示。当然这需要连上internet才行。使用CVS作为传输介质使你可以紧跟ABS里的不同版本的树 ── 这可以在/etc/abs/supfile.arch里配置。例如,缺省的supfile设置为跟踪核心包树,这是最新而且是推荐使用的源码。你也可以使用其它版本。详情可以查看supfiles中的注释。

ABS支持多个仓库,可以在/etc/abs/abs.conf中进行设置。缺省情况下abs只会选择core和extra仓库。

你还会发现一个/etc/abs/supfile.extra文件。它让你可以访问所有不在主ABS仓库中的非官方的创建脚本。如果你不想使用这个仓库,你可以删除这个文件,不过通常最好的做法还是编辑abs.conf,取消你不需要的仓库。

如何创建软件包

创建过程在makepkg的man手册里已经详细解释了。你可以在它的指导下创建自己的软件包。如果还不够,在wiki里找一下有关教程,或者上论坛或者IRC寻求帮助。

软件包的指导规则

创建Arch Linux的软件包时,你应到遵循下列软件包的指导规则,特别是在你想将新软件包贡献给Arch Linux的时候。

软件包命名

  • 软件包的名字应当只包含字母与数字;所有字母都应该是小写。
  • 软件包的版本号应当和作者发布的版本号一致。如果有需要版本号可以包含字母(例如2.54beta32)。版本号不可以包含连接号!只允许字母、数字和小数点。
  • 软件包发布号对Arch Linux来说也是有明确用途的。它让用户可以区分包的新旧。当一个新软件包第一次发布时,发布号从1开始。然后经过了修改和优化,软件包再次发布给公众,发布号就会递增。当一个新版本出来后,发布计数复位回1.软件包发布号的命名规则和版本号一样。

目录

配置文件应当放置在/etc目录,如果有超过一个以上的配置文件,依惯例使用一个子目录来保持/etc尽可能整洁。当你的软件包名为{pkgname}时,用/etc/{pkgname}/来放置(或者其它恰当的名字,例如apache使用/etc/httpd/)。

软件包里的文件应当遵循下列的目录规则:

 /etc             系统必须的配置文件
 /usr/bin         程序可执行文件
 /usr/sbin        系统级程序
 /usr/lib         库文件
 /usr/include     头文件
 /usr/lib/{pkg}   模块、插件等等
 /usr/man         帮助手册
 /usr/share/{pkg} 应用程序数据
 /etc/{pkg}       {pkg}的配置文件
 /opt             不适合放置于Linux文件系统框架内的包可以放在这里

如果包里的文件可以很明确归类到以上目录,那就按这样做。如果有其它高一级的目录不适合这样放,可以使用/opt。

例如,acrobat里的Browser、Reader和Resource目录都同样在bin目录下。这不合适放置在正常的Linux文件系统框架内,所以我们把所有文件都放到/opt下。

都清楚了吗?好的。


makepkg的任务

当你用makepkg创建软件包时,它自动执行这些步骤:

  1. 检查包的依赖关系是否已经安装
  2. 从服务器上下载源文件
  3. 解压源文件
  4. 进行所需的修补
  5. 创建软件,并安装到一个fake root
  6. 包里的删除/usr/doc、/usr/info、/usr/share/doc和/usr/share/info
  7. 去除二进制文件里的symbols
  8. 去除库里的debugging symbols
  9. 生成每个软件包都会包含的meta文件
  10. 将fake root压缩为软件包文件
  11. 将软件包存放在配置指定的目标目录(通常是当前目录)

其它

不要在你的PKGBUILD脚本里引入新的变量,除非没了它就无法创建包,因为这有可能和makepkg本身的变量发生冲突。如果一定需要一个新变量,那就在变量名前加下划线作为前缀。

避免使用/usr/libexec/存放文件,可以换用/usr/lib/{pkgname}。

The "Packager" field from the package meta file can be customized by the package builder by modifying the appropriate option in the /etc/makepkg.conf file, or alternatively by exporting the PACKAGER environment variable before building packages with makepkg:

 export PACKAGER="John Doe <your.email>"


Submitting Packages

If you'd like to submit packages, please take a look at the Arch User Repository and their guidelines. New packages should be submitted to the AUR.

If you're submitting a package, please do the following:

  • Please add a comment line to the top of your PKGBUILD file that follows this format:
 Contributor: Your Name <your.email>
  • Verify the package dependencies (eg, run ldd on dynamic executables, check tools required by scripts, etc.). It's also a good idea to use the namcap utility, written by Jason Chu jason@archlinux.org, to analyze the sanity if your package. namcap will tell you about bad permissions, missing dependencies, un-needed dependencies, and other common mistakes. You can install the namcap package with pacman as usual.
  • All packages should come as a compressed tar file containing a directory with the newly built package, the PKGBUILD, filelist, and additional files (patches, install, ...) in it. The archive name should at least contain the name of the package.
  • Read the appropriate documents regarding the AUR, and the newest version of the packaging guildelines on the AUR Homepage.

常见问题(FAQs)

这里的FAQs只列出了一些在安装、初始配置、启动Arch Linux过程中常见的问题。如果你在进一步使用(如系统工具、X11设置等)或者如何配置硬件遇到问题,请到维基中查询。如果你认为某个问题应该列在这里,请通知该文档的作者(他的联系方式在该文档的最顶端)。

在安装软件包过程中,pacman报告错误:“因为软件B不在软件集中,无法解析软件A的依赖关系。”

除非是系统本身的问题(如果是这样,那么很快会收到许多用户的错误报告),一般说来是因为你可能没有正确地挂载目标分区,这导致pacman试图将软件包文件解压缩到虚拟磁盘上,就导致了这个错误(一般刚完成安装后,如果fstab或者grub menu.lst中的根分区设置错误就会导致该错误。译者注)。 请确认在安装过程中设置文件系统挂载点一步中选择了“DONE”而不是“CANCEL”。一般如果你使用自动分区就不会出现这个问题,如果使用了自动分区后仍然出现这个错误,请将你遇到的问题作为bug提交给开发团队。

如何利用pacman从光盘上安装软件包(自动解决依赖关系)?

如果你想从光盘上安装软件(例如无法访问网络时),首先要把光盘挂载到某处(如/mnt/cd),然后在/etc/pacman.conf的[core]下面加一行“Server = file:///mnt/cd”。 用你的光盘挂载点代替上面的”/mnt/cd”。然后用”pacman --sync”来同步光盘上的软件包。

如何在安装过程中创建多交换分区?

如果你想使用多交换分区,那么就不能使用安装程序的自动分区功能。手动创建所需的交换分区,然后用mkswap命令在上面创建交换文件系统(这很重要,如果没有执行这个命令,系统启动时会出问题)。然后继续下面的步骤,在设置挂载点时安装程序仍然只会询问一次交换分区,这没有关系。在完成安装要修改系统配置文件的时候,你可以修改fstab文件,在里面为每个交换分区添加一个入口:这很简单,拷贝一下标准的交换分区设置行,然后粘贴、修改一下分区号就可以了。这样系统启动时初始化脚本会用”swapon -a”命令自动激活所有的交换分区。 如果你想在安装完成之前就使用多交换分区,可以切换到另一个终端,然后利用swapon命令逐个激活要使用的交换分区。 在你真得打算使用多交换分区之前,你要明白一点:内核对内存的需求更为迫切,交换分区的大小不是非常重要。请好好照顾自己的小企鹅。谢谢。

无法ssh连接到机器!

编辑/etc/hosts.deny文件,允许远程IP访问。默认设置会拒绝所有的连接请求(不仅仅是ssh连接)。 Edit your /etc/hosts.deny file. The default configuration will reject all incoming connections, not only ssh connections.

如何在启动时加载模块?

如果你想加载未绑定到设备的模块,只要把模块名称加入到/etc/rc.conf的MODULES数组中即可。如果想在访问设备时才加载相关模块,按照通常的alias/option格式将模块添加到/etc/modprobe.conf即可。如果udev无法正确的加载某个设备模块(这很少见),也可以使用这个方法。如果模块是通过MODULES变量加载的,而又想为它传递输入参数,那么只把相应的参数按照option的格式添加到/etc/modprobe.conf中即可。

内核因为“中断丢失”无法启动

内核拒绝启动,并显示类似“had IRQ探测失败,had中断丢失”的错误信息。在2.6.x内核中,某些硬盘控制器会出现类似的错误,一般在启动时给内核传递”acpi=off”参数可以解决这个问题。

播放音乐或者DVD时出现“拒绝访问”错误

用下面的命令将你当前使用的用户添加到optical和music组中:

gpasswd -a johndoe optical
gpasswd -a johndoe audio

先注销再重新登录以使组变换生效,此时就不存在设备权限问题了。 如果你有一个DVD驱动器,你可能需要创建一个链接(如/dev/dvd)到真正的DVD驱动器。一般情况下,udev已经帮你完成了这个工作,我们以此为例子描述一下如何创建类似的链接。 例如,你的DVD设备名称为/dev/sdc,以根用户身份执行下面的操作:

cat >>/etc/udev/rules.d/00.rules <<EOF
> KERNEL="sdc", NAME="sdc", SYMLINK="dvd"
> EOF
/etc/start_udev
mount /dev/pts
mount /dev/shm

这样就可以通过/dev/dvd访问DVD驱动器了。