您的位置:首页 > 运维架构 > Linux

Linux 学习笔记(十一)软件和配置管理

2012-12-29 20:45 781 查看

1 Linux 基本安装

目前的各种 Linux 发行版本都是提供很直观的基本安装步骤。你可以从光盘或者 USB 启动(如果你的机器支持 USB 启动的话),回答安装过程中的几个问题,告诉安装程序基本的硬盘分区、文件格式、语言选项等信息。大多数 Linux 发行版本都采用了图形界面的安装程序,可以说是非常直观和方便地帮助用户将系统安装到他们的机器上去。

具体的光盘镜像直接访问您要使用的发行版本的官方网址(以下发行版本的排序仅以字母的排序为依据,并非指的是发行版本的流行程度)

发行版本网址
debianhttp://www.debian.org/
fedorahttp://fedoraproject.org/
redhathttp://www.redhat.com
susehttps://www.suse.com
ubuntuhttp://www.ubuntu.com
一般情况下根据安装程序的指引都能够很顺利地完成安装。如果在安装过程中遇到任何问题,也不需要惊惶,您还可以到官网查阅官方的安装手册,一般你的问题都可能是 FAQ,所以直接查询 FAQ 吧。

1.1 从网络引导 PC

从网络引导系统的做法可以不必从硬盘、软盘(现在谁还用这玩意呀)、USB 驱动器或者 CD-ROM 光盘,而是完全通过网络来引导一台计算机。这对于安装来说很方便,因为它意味着你可以坐在桌子旁边,不必走到机器那里插入 CD-ROM 光盘,就可以从网络上引导位于别处的一台机器。

要实现这样的功能,机器首先必须支持网络启动,所幸 Intel 公司已经制订出
PXE (Pre-boot eXecution Environment) 标准,虽然
PXE 还不完善,但是不好的标准(一般)总比没有标准强。

PXE 的作用就像是在网卡上 ROM 里的一个小小操作系统。它通过一个标准 API 把自己的网络功能提供给系统 BIOS。有了 PXE 和 BIOS 两者的合作,就有可能在任何有 PXE 的 PC 上,让一个引导加载程序不需要给每个网卡提供专门的驱动程度,就能通过网络启动 Linux。

1.2 为 Linux 设置 PXE

现在有几种基于 PXE 的网络引导系统,但是目前效果最好的是 H.Peter Anvin 的 PXELINUX,这是他的通用引导加载程序 SYSLINUX 的一部分。从
http://syslinux.zytor.com 可以得到这个软件。

PXELINUX 提供了一个引导文件,用户把这个文件安装到服务器的 tftpboot 目录下,当 PXE 起作用的时候,就会被下载到正在启动的 PC 上。这台 PC 接着执行这个引导文件,从服务器下载它的配置。下载的配置规定了使用哪个内核。

在服务器端一定要使用 ISC (Internet System Consortium) 的 DHCP 服务器。如果使用了不一样的服务器,那就必须配置额外的 DHCP 选项,或者使用服务器的配置文件时的数字表示。

有关利用 PXE 引导和安装 Linux 的实例可以查看我做的安装 LTSP 瘦客户端系统以及通过局域网安装 ubuntu实验。当然,安装和配置过程都是非常简单的,尽管大胆地去做吧!如果在做的过程遇到问题欢迎随时给我发邮件
(mailto:bluebird.shao@gmail.com) 或留言,别担心,我收得到的。:)

2 软件包管理

常用的软件包格式有两种。Red Hat、Fedora、SUSE 和其他几种发行版本使用
RPM
即 Red Hat Package Manager。Debian 和 Ubuntu 使用一种不同的
.deb
格式。这两种格式的功能类似。

利用 alien 这样的工具,如果在你所使用的发行版本上还没有安装它,可以使用下面的命令进行安装:

Debian 和 Ubuntu

$ sudo apt-get install alien
Red Hat、Fedora 和 SUSE

$ sudo yum install alien
alien 工具很容易就能在两种软件包格式之间进行转换。对 alien 来说,它对软件包的软件一无所知,如果软件包的内容和发行版本不兼容的话,那么
alien 毫无用处。一般来说,最好坚持使用发行版本自己的软件包机制。

RPM
.deb
这两种系统现在都是两层的全能配置管理工具。下面一层是安装、卸载和查询软件包的工具:
RPM
的工具叫
rpm
.deb
的工具叫 dpkg

在这些命令之上的是知道如何在 Internet 上找软件包、分析软件包间依赖关系、以及升级系统上所有软件包的系统。在这个层次上主要的软件是:配合
RPM
系统运行的 yum,以及 Debian 的 APT(Advanced Package Tool,高级软件包工具)。我们也可以从下面的表中对比这两种软件管理工具:

发行版本软件管理机机制使用指令online 升级机制
Red Hat/FedoraRPMrpm, rpmbuildYUM (yum)
Debian/UbuntuDPKGdpkgAPT (apt-get)

2.1 rpm: 管理 RPM 软件包

rpm 命令安装软件包、核实和查询软件包的状态。它以前也可以构造软件包,但是这项功能现在已经分拆出来交由
rpmbuild
命令负责。我们以一个名为 openssh-i386.rpm 的软件包为例:

安装

$ sudo rpm --install openssh-i386.rpm
将会在系统上安装 openssh-i386.rpm 软件包中所包含的软件。

2.2 dpkg: 管理 Debian 软件包

dpkg 命令的基本语法为:

dpkg [option…] action
dpkg 是一个用于安装、创建、卸载和管理 Debian 软件包的工具。它有一个友好的前端工具 aptitudedpkg 本身通过命令行参数进行控制,它包含仅有的一个
action
和 0 个或多个
option
action
参数告诉
dpkg
需要做什么而
option
则控制
action
的行为。

dpkg 同样可以作为 dpkg-debdpkg-query 的前端工具使用。dpkg 比较有用的选项有:--install、--remove 以及 --purge,最后一个选项会连带软件的配置文件也一起删除掉。

如果你已经拿到某个软件包:packagename.deb,那么可以使用下面命令进行操作:

安装

$ sudo dpkg --install packagename.deb
删除

$ sudo dpkg --remove packagename
如果需要将配置文件也清除掉的话,可以考虑使用 --purge 选项

$ sudo dpkg --purge packagename

3 APT: 高级软件包工具

APT (Advanced Package Tool, 高级软件包工具) 是最成熟的软件包管理系统。用一条 apt-get 命令就可以更新整个一个系统的所有软件,甚至还可以不需要人工干预,保持您的机器不断得到更新。

在 Debian 世界里,您还可以使用 apt-get 的一些非常优秀的前端工具,如 dselect,
aptitude, synapticwajig。不过《Linux 系统管理技术手册》上却有一段非常幽默的话:“在 Debian 系统上使用
apt-get 的第一条原则就是忽略 dselect 的存在,它充当了 Debian 软件包系统的前端。虽然它并不是个坏想法,但是用户界面太差了。Debian 的文档将会试着指导您使用
dselect,但您自己要挺住。”

具体使用什么前端取决于您的选择,至于挺不挺得住就看您自己啦,:)

3.1 配置 apt-get

apt-get 最重要的配置文件是 /etc/apt/sources.list,它告诉
apt-get
到哪儿去找它的软件包。这个文件里每行规定的内容如下:

软件包的类型,目前 Debian 类型的软件包用 deb 或者 deb-src。
指向一个文件、CD-ROM、HTTP 服务器或者 FTP 服务器的 URL,从那里可以能够取得软件包;
“发布名字”,能让您提供软件包的多个版本。
组件可能的清单——其实是发行版本内的软件包分类。

3.2 /etc/apt/sources.list 文件的例子

下面的例子我使用的是 http://mirrors.163.com/ubuntu 的 HTTP 服务器。因为它是目前我使用中最快的 APT 服务器。以 Precise (12.04) 为例, 编辑
/etc/apt/sources.list 文件, 在文件最前面添加以下条目(操作前请做好相应备份)

$ sudo cp /etc/apt/sources.list /etc/apt/sources.list-bak
然后修改文件让它看起来像这个样子:

deb http://mirrors.163.com/ubuntu/ precise main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ precise-security main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ precise-updates main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ precise-proposed main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ precise-backports main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ precise main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ precise-security main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ precise-updates main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ precise-proposed main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ precise-backports main restricted universe multiverse

当然您也可以到 http://mirrors.163.com/ 网址查看适合您发行版本的使用帮助。里面同时还包含了很多其他的开源发行版本,如 Archlinux、CentOS、Fedora、FreeBSD、Debian、Gentoo、openSUSE 等。修改完
/etc/apt/sources.list 文件后务必刷新一下 apt-get 缓存的软件包信息。

$ sudo apt-get update

3.3 设置内部 APT 服务器

如果您打算在大量主机上使用 apt-get,或者想要把软件包缓存在本地——为每台机器都下载每个软件包的一个副本对带宽的使用来说并不划算。您可以建立自己管理的 APT 服务器,并且把内部的客户机都指向它。

既然 apt-get 使用标准的协议(HTTP 和 FTP)下载它的软件包,建立一台 APT 服务器所要做的全部工作就是建立一个 Web 或者 FTP 服务器,提供适当的内容。除了提供软件包的文件之外,还必须生成两个软件包的汇总文件:Packages.gz
Contents.gz。前者是服务器上软件包以及其依赖关系的清单,并且用 gzip 压缩过了。apt-get update 使用这个清单来确定能够获得哪些补充的软件包。后者建立一原始文件到包含它们的软件包的映射关系,apt-get 本身实际上并不会用到这个文件。apt-utils 这个软件包中包含的
apt-ftparchive 命令会自动替您生成这两个汇总文件。

一旦已经创建好了汇总文件,剩下来的工作就很容易了。在客户机上的 /etc/apt/sources.list 文件中像下面这样的一行会把
apt-get 连到您的服务器上。

deb http://local-server/mypackages/ . /

在每台客户机上运行 apt-get update , 然后照常使用 apt-get

3.4 自动执行 apt-get

您可以从 cron 定期执行 apt-get。即使您并不打算自动安装软件包,也可能想要定期执行 apt-get update 来保持包汇总信息得到更新。直接从发行版本的镜像站点执行自动升级操作或许并不是个好主意。不过如果您有了自己的 APT 服务器、软件包和发布控制系统,那么这就是保持客户机同步的妥善方式。像下面这样的一个简短的 shell 脚本能够让一台机器保持和它的 APT 服务器同步更新:

#!/bin/sh
apt-get update
apt-get -yes dist-upgrade

如果想要在夜间运行这个,就从 cron 来调用它。您可以参考Linux 学习笔记(八)周期性进程了解有关
cron 的知识。

4 yum: 管理 RPM 的发布

yum (Yellow dog Updater, Modified) 是基于 RPM 的元软件包管理器。把
yum
叫做 apt-get 的克隆可能有一点儿不公平,但是它从提法上和实现上都类似于 apt-get,只是实际上用起来更简洁和速度更慢。

yumapt-get 之间的相似性也扩大到了它们所支持的命令行参数上。例如,

$ sudo yum install foo
会下载和安装软件包 foo 的最新版本。但是两者还是有一点截然不同之处:apt-get update 会刷新
apt-get 的软件包信息缓存,但是 yum update 命令会更新系统上的每个软件包(类似于
apt-get upgrade)。让情况更混乱的是,还有 yum upgrade 命令,它的作用和
yum update 命令相同,区别在于 yum upgrade 相当于一次大规模的升级。

yum 的配置文件是 /etc/yum.conf。它包含通用选项和指向软件包库的指示。一次能够有多个活动的软件库,每个软件库都可以关联多个 URL。

Good luck & Enjoy your life.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: