大多数人在安装 Linux 后,惊讶地发现他们拥有了一台可以运行、可用的计算机;大多数发行版都充分支持视频和网卡、显示器和其他外部设备,因此通常无需安装额外的驱动程序。 常见的工具,如办公套件、Web 浏览器、电子邮件和其他网络客户端程序也包含在主要发行版中。即便如此,初始安装可能无法满足您的需求。
如果您找不到所需的内容,可能是它没有安装在您的系统上。 也可能是您有所需的软件,但它没有按预期工作。 请记住,Linux 发展迅速,软件每天都在改进。 不要浪费时间排除可能已经解决的问题。
您可以随时更新系统或向其中添加软件包。 大多数软件都以软件包的形式提供。 额外的软件可以在您的安装 CD 或互联网上找到。 您的 Linux 发行版的网站是查找其他软件的好去处,其中包含有关如何在您的 Linux 类型上安装软件的说明,请参阅附录 A。 务必阅读新软件随附的文档,以及软件包可能包含的任何安装指南。 所有软件都附带一个README文件,强烈建议您阅读。
RPM,RedHat 软件包管理器,是一个功能强大的软件包管理器,您可以使用它来安装、更新和删除软件包。 它允许您搜索软件包,并跟踪每个软件包附带的文件。 系统内置了验证从互联网下载的软件包的真实性的功能。 高级用户可以使用 RPM 构建自己的软件包。
RPM 软件包由文件存档和用于安装和删除存档文件的元数据组成。 元数据包括帮助脚本、文件属性以及有关软件包的描述性信息。 软件包有两种类型:二进制软件包,用于封装要安装的软件;以及源代码软件包,包含生成二进制软件包所需的源代码和配方。
许多其他发行版都支持 RPM 软件包,其中流行的有 RedHat Enterprise Linux、Mandriva (以前的 Mandrake)、Fedora Core 和 SuSE Linux。 除了针对您的发行版的建议外,您还需要阅读 man rpm。
大多数软件包只需使用 upgrade 选项即可安装,-U无论软件包是否已安装。 RPM 软件包包含程序的完整版本,它会覆盖现有版本或作为新软件包安装。 典型的用法如下
rpm-Uvh /path/to/rpm-package(s)
选项-v生成更详细的输出,而-h使 rpm 打印进度条
[root@jupiter tmp]# rpm -Uvh totem-0.99.5-1.fr.i386.rpm Preparing... ########################################### [100%] 1:totem ########################################### [100%] [root@jupiter tmp]# |
但是,新的内核软件包使用 install 选项安装-i,它不会覆盖软件包的现有版本。 这样,如果新内核不起作用,您仍然可以使用旧内核启动系统。
您还可以使用 rpm 检查系统上是否安装了软件包
[david@jupiter ~] rpm -qa | grep vim vim-minimal-6.1-29 vim-X11-6.1-29 vim-enhanced-6.1-29 vim-common-6.1-29 |
或者您可以找出哪个软件包包含特定文件或可执行文件
[david@jupiter ~] rpm -qf /etc/profile setup-2.5.25-1 [david@jupiter ~] which cat cat is /bin/cat [david@jupiter ~] rpm -qf /bin/cat coreutils-4.5.3-19 |
请注意,您无需拥有管理权限即可使用 rpm 查询 RPM 数据库。 只有在添加、修改或删除软件包时,您才需要成为 root 用户。
以下是最后一个示例,演示如何使用 rpm 卸载软件包
[root@jupiter root]# rpm -e totem [root@jupiter root]# |
请注意,默认情况下卸载不是很详细,看不到太多情况是正常的。 如果有疑问,请再次使用 rpm -qa 验证软件包是否已删除。
RPM 可以做的远不止我们在本简介中讨论的几个基本功能;RPM HOWTO 包含更多参考资料。
这种软件包格式是 Debian GNU/Linux 上的默认格式,其中 dselect,以及现在更常见的 aptitude,是管理软件包的标准工具。 它用于选择要安装或升级的软件包,但它也会在 Debian 系统的安装过程中运行,并帮助您定义要使用的访问方法、列出可用的软件包和配置软件包。
Debian 网站 包含您需要的所有信息,包括 “面向初学者的 dselect 文档”。
根据最新消息,Debian 软件包格式正变得越来越流行。 在撰写本文时,排名前 10 的发行版中有 5 个使用它。 此外,apt-get(请参阅第 7.5.3.2 节)也变得非常流行,即使在非 DEB 系统上也是如此。
使用 dpkg 命令检查软件包是否已安装。 例如,如果您想知道您的机器上安装了哪个版本的 Gallery 软件
nghtwsh@gorefest:~$ dpkg -l *gallery* Desired=Unknown/Install/Remove/Purge/Hold | Status=Not/Installed/Config-files/Unpacked/Failed-config/Half-installed |/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad) ||/ Name Version Description +++-==============-==============-============================================ ii gallery 1.5-1sarge2 a web-based photo album written in php |
“ii” 前缀表示软件包已安装。 如果您看到 “un” 作为前缀,则表示您的计算机保留的列表中已知该软件包,但尚未安装。
搜索文件属于哪个软件包是使用-S到 dpkg 完成的
nghtwsh@gorefest:~$ dpkg -S /bin/cat coreutils: /bin/cat |
更多信息可以在 dpkg 的 Info 页面中找到。
Linux 程序的大部分是自由/开源的,因此这些程序都有源代码软件包可用。 编译您自己的程序版本需要源文件。 程序的源代码可以从其网站下载,通常以压缩的 tarball 形式(program-version.tar.gz或类似)。 对于基于 RPM 的发行版,源代码通常以program-version.src.rpm形式提供。 Debian 以及大多数基于它的发行版都自己提供了经过调整的源代码,可以使用 apt-get source 获取。
具体的要求、依赖项和安装说明在README文件中提供。 您可能需要一个 C 编译器,gcc。 大多数 Linux 系统都包含此 GNU C 编译器,并且已移植到许多其他平台。
安装新系统后,您要做的第一件事就是应用更新;这适用于所有操作系统,Linux 也不例外。
大多数 Linux 系统的更新通常可以在镜像您发行版的附近站点找到。 提供此服务的站点列表可以在您发行版的网站上找到,请参阅附录 A。
应定期应用更新,如果可能,每天更新一次 - 但每隔几周更新一次也是一个合理的开始。 您真的应该尝试拥有最新版本的发行版,因为 Linux 不断变化。 正如我们之前所说,新功能、改进和错误修复以稳定的节奏提供,有时会解决重要的安全问题。
好消息是,大多数 Linux 发行版都提供了工具,因此您不必每天手动升级数十个软件包。 以下各节概述了软件包管理器管理器。 这个主题还有很多内容,甚至源代码软件包的定期更新也可以自动管理;我们只列出最常见的系统。 始终参考特定发行版的文档以获取建议的程序。
高级软件包工具是用于软件软件包的管理系统。 用于处理软件包的命令行工具是 apt-get,它带有一个出色的 man 页面,描述了如何安装和更新软件包,以及如何升级单个软件包或整个发行版。 APT 起源于 Debian GNU/Linux 发行版,它是 Debian 软件包的默认管理器。 APT 也已移植为与 RPM 软件包一起使用。 APT 的主要优点是它是免费且灵活的。 它将允许您设置类似于下一节中列出的发行版特定(以及在某些情况下是商业的)系统。
通常,首次使用 apt-get 时,您需要获取可用软件包的索引。 这是使用以下命令完成的
apt-getupdate
之后,您可以使用 apt-get 升级您的系统
apt-getupgrade
经常这样做,这是保持系统最新和安全的一种简单方法。
除了这种一般用法外,apt-get 对于安装单个软件包也非常快。 这是它的工作方式
[david@jupiter ~] su - -c "apt-get install xsnow" Password: Reading Package Lists... Done Building Dependency Tree... Done The following NEW packages will be installed: xsnow 0 packages upgraded, 1 newly installed, 0 removed and 3 not upgraded. Need to get 33.6kB of archives. After unpacking 104kB of additional disk space will be used. Get:1 http://ayo.freshrpms.net redhat/9/i386/os xsnow 1.42-10 [33.6kB] Fetched 33.6kB in 0s (106kB/s) Executing RPM (-Uvh)... Preparing... ########################################### [100%] 1:xsnow ########################################### [100%] |
注意-c到 su 命令的选项,它指示 root shell 仅执行此命令,然后返回到用户的环境。 这样,您就不会忘记退出 root 帐户。
如果存在对其他软件包的任何依赖关系,apt-get 将下载并安装这些支持软件包。
更多信息可以在 APT HOWTO 中找到。
Update Agent 最初仅支持 RedHat RPM 软件包,现在已移植到更广泛的软件,包括非 RedHat 存储库。 此工具为更新 RedHat 或 Fedora Core 系统上的 RPM 软件包提供了一个完整的系统。 在命令行中,键入 up2date 以更新您的系统。 在桌面上,默认情况下会激活一个小图标,告诉您系统是否有可用更新。
Yellowdog's Updater Modified (yum) 是另一种最近变得越来越流行的工具。 它是一个交互式但自动化的更新程序,用于在系统上安装、更新或删除 RPM 软件包。 它是 Fedora 系统上的首选工具。
在 SuSE Linux 上,一切都通过 YaST(Yet another Setup Tool,又一个设置工具)完成,它支持各种系统管理任务,其中包括更新 RPM 软件包。 从 SuSE Linux 7.1 开始,您还可以使用 Web 界面和 YOU(Yast Online Update,Yast 在线更新)进行升级。
Mandrake Linux 和 Mandriva 提供了所谓的 URPMI 工具,这是一组包装程序,使用户更容易安装新软件。 这些工具与 RPMDrake 和 MandrakeUpdate 结合使用,为软件软件包的顺利安装和卸载提供所需的一切。 MandrakeOnline 提供了一系列扩展服务,并且可以在您的特定 Mandrake 系统有可用更新时自动通知管理员。 有关更多信息,请参阅 man urpmi 等。
此外,KDE 和 Gnome 桌面套件也有它们自己的(图形)软件包管理器版本。
如果您定期升级发行版,则大多数 Linux 安装都可以正常运行。 升级过程将在需要时安装新内核,并对您的系统进行所有必要的更改。 只有当您需要 Linux 发行版中包含的默认内核不支持的内核功能时,才应手动编译或安装新内核。
无论是编译您自己的优化内核还是使用预编译的内核软件包,都应将其与旧内核共存安装,直到您确定一切都按计划工作。
然后创建一个双启动系统,让您可以通过更新引导加载程序配置文件来选择要启动的内核grub.conf。 这是一个简单的例子
# grub.conf generated by anaconda # # Note that you do not have to rerun grub after making config changes. # NOTICE: You have a /boot partition. This means that # all kernel and initrd paths are relative to /boot/, e.g. # root (hd0,0) # kernel /vmlinuz-version ro root=/dev/hde8 # initrd /initrd-version.img #boot=/dev/hde default=0 timeout=10 splashimage=(hd0,0)/grub/splash.xpm.gz title Red Hat Linux new (2.4.9-31) root (hd0,0) kernel /vmlinuz-2.4.9-31 ro root=/dev/hde8 initrd /initrd-2.4.9-31.img title old-kernel root (hd0,0) kernel /vmlinuz-2.4.9-21 ro root=/dev/hde8 initrd /initrd-2.4.9-21.img |
在新内核被证明可以工作后,您可以从 GRUB 配置文件中删除旧内核的行,但最好等待几天以确保安全。
这基本上与手动安装软件包的方式相同,只是您必须将 CD 的文件系统附加到您的机器的文件系统才能使其可访问。 在大多数系统上,这将在 CD 插入驱动器时自动完成,因为 automount 守护程序在启动时启动。 如果您的 CD 没有自动提供,请在终端窗口中发出 mount 命令。 根据您的实际系统配置,通常类似于此行的行即可
mount/dev/cdrom /mnt/cdrom
在某些系统上,只有 root 用户才能挂载可移动媒体;这取决于配置。
出于自动化目的,CD 驱动器通常在/etc/fstab中有一个条目,其中列出了文件系统及其挂载点,这些文件系统构成了您的文件系统树。 这是一个这样的行
[david@jupiter ~] grep cdrom /etc/fstab /dev/cdrom /mnt/cdrom iso9660 noauto,owner,ro 0 0 |
这表明系统将理解命令 mount /mnt/cdrom。noauto选项表示在此系统上,CD 在启动时不会挂载。
如果您的文件管理器没有为您执行此操作,您甚至可以尝试右键单击桌面上的 CD 图标来挂载 CD。 您可以使用不带参数的 mount 命令来检查它是否有效
[david@jupiter ~] mount | grep cdrom /dev/cdrom on /mnt/cdrom type iso9660 (ro,nosuid,nodev) |
为了在使用完 CD 后将其从驱动器中取出,CD 上的文件系统应处于未使用状态。 即使在挂载点的子目录之一中,/mnt/cdrom在我们的示例中,也会被视为 “正在使用文件系统”,因此您应该离开那里。 例如,通过键入不带参数的 cd 来执行此操作,这将使您返回到您的主目录。 之后,您可以使用命令
umount/mnt/cdrom
或
ejectcdrom
![]() | 被阻止的驱动器 |
---|---|
切勿强制驱动器。 用回形针的技巧是一个坏主意,因为这最终会弹出 CD,但您的系统会认为 CD 仍然在那里,因为没有遵循正常程序。 您很可能需要重新启动才能使系统恢复到一致状态。 如果您一直收到 “设备忙” 消息,请首先检查所有 shell 会话是否都已离开 CD 文件系统,并且没有图形应用程序再使用它。 如有疑问,请使用 lsof 工具来跟踪仍在使用的 CD 资源的进程。 |