## 第 16 章 软件管理
**目录**
[](ch16.html#id3069474)
[软件管理方式](ch16s02.html)
[预编译软件包](ch16s03.html)
## 软件管理方式
Linux 下安装软件,大致有两种方式:二进制和源代码。如何使用源代码安装软件,参阅[第 18 章 _编译工具链_](ch18.html "第 18 章 编译工具链")
二进制预编译软件包,可以快速安装部署你所需要的软件,但是你不能决定软件的特性。就像在麦当劳吃饭,只要几分钟,你就可以填饱肚子。但假设你不吃辣椒,或者你喜欢口感老一点的,你不能要求他们为你定做一份没有辣椒的汉堡,或者把鸡翅炸上半个小时;因为配方和工序都是固定的
使用源代码安装软件,虽然比较耗时,但可以满足你的特殊要求。就像在餐馆里吃饭,你可以要求厨师为你作不含辣椒的菜以适应你的口味(软件),还可以要求厨师控制火候,作的老一点,以适应你的肠胃(硬件)
## 预编译软件包
虽然不能定做,但依然有许多人会去吃麦当劳,因为麦当劳的汉堡符合大多数人的口味;同样,预编译软件包也可以满足大多数用户的需求,如果没有特殊需求,很少有人会选择编译软件
最早的软件包管理系统不支持网络,类似于在 Windows 下安装软件,你必须获取一个安装包(比如通过网络下载),然后在本地安装它。使用这种方式安装软件的包管理系统主要有:dpkg(debian系)、rpm(redhat系)
由于 Linux 系统中,软件包拆分的比较细[[22](ch16s03.html#ftn.id3069525)],安装一个软件可能要许多软件包。
而用户自己动手获取这些软件包,是一个十分繁琐的过程,因此产生了通过网络安装软件的方式:包管理系统自动分析你将安装的软件需要哪些软件包,通过网络下载、安装、配置它们。
debian系 发行版通过 apt 系统实现网络支持,配合本地的 dpkg 实现这一过程;redhat系 发行版则通过 yum 和 rpm 实现。而一些新派发行版,包管理系统兼具这两种能力,例如 archlinux 的 pacman;而 gentoo 的 emerge 虽然基于源代码编译安装,但也具备这种能力,参见[“emerge”一节](ch18s07.html "emerge")
以下是常见软件包管理系统的基本操作:
**表 16.1. 包管理系统**
| 任务 | apt | zypp | yum | pacman | emerge |
| --- | --- | --- | --- | --- | --- |
| | Debian, Ubuntu | openSUSE | Fedora, CentOS (redhat系) | Archlinux | Gentoo |
| 安装包 | apt-get install pkg | zypper install pkg | yum install pkg | pacman -S pkg | emerge pkg |
| 移除包 | apt-get remove pkg | zypper remove pkg | yum erase pkg | pacman -R pkg | emerge -C pkg |
| 更新包列表 | apt-get update | zypper refresh | yum check-update | pacman -Sy | emerge --sync | layman -S (添加仓库) |
| 更新系统 | apt-get upgrade | zypper update | yum update | pacman -Su | emerge -avuDN world |
| 列出源 | cat /etc/apt/sources.list | zypper repos | yum repolist | cat /etc/pacman.conf | layman -L |
| 添加源 | edit /etc/apt/sources.list | zypper addrepo 仓库地址 仓库名称 | add 仓库 to /etc/yum.repos.d/ | edit /etc/pacman.conf | layman -a |
| 移除源 | edit /etc/apt/sources.list | zypper removerepo 仓库名称 | remove 仓库 from /etc/yum.repos.d/ | edit /etc/pacman.conf | layman -d |
| 搜索包 | apt-cache search pkg | zypper search pkg | yum search pkg | pacman -Qs pkg | emerge --search |
| 列出已安装的包 | dpkg -l | rpm -qa | rpm -qa | pacman -Qii | cat /var/lib/portage | more |
* 把 SUSE系 和 redhat系 排在前面,不是因为它们的软件包管理系统比较先进,而是考虑到它们的用户多
* * *
> [[22](ch16s03.html#id3069525)] 因为不受版权的限制,凡是可以被其它软件利用的功能,都单独分离出来
- 开源世界旅行手册
- 授权
- 致谢
- 序言
- 更新纪录
- 导读
- 如何写作科技文档
- 部分 I. 气候
- 第 1 章 GUI? CLI?
- 第 2 章 UNIX 缩写风格
- 第 3 章 版本号的迷雾
- 第 4 章 Vim 还是 Emacs
- 第 5 章 DocBook 还是 TeX
- 第 6 章 完全用 Gnu/Linux 工作
- 第 7 章 病毒
- 第 8 章 磁盘 分区
- 第 9 章 文件系统
- 第 10 章 发行版介绍
- 第 11 章 编程语言
- 第 12 章 无根的根:无名师的 Unix 心传
- 部分 II. 地理
- 第 13 章 基础知识
- 第 14 章 命令系统
- 第 15 章 基本系统
- 第 16 章 软件管理
- 第 17 章 核心工具集
- 第 18 章 编译工具链
- 第 19 章 图形界面
- 第 20 章 国际化
- 第 21 章 内核
- 第 22 章 Grub
- 第 23 章 服务器
- 第 24 章 Vim 编辑器
- 第 25 章 Emacs 入门
- 第 26 章 正则表达式
- 第 27 章 docbook 指南
- 第 28 章 Git 版本控制系统
- 第 29 章 ConTeXt 入门指南
- 部分 III. 景观
- 第 30 章 终极 Shell -- ZSH
- 第 31 章 完美工作站 Archlinux
- 第 32 章 组织你的意念:Emacs org mode
- 第 33 章 Zsh+screen
- 第 34 章 gentoo stage3
- 第 35 章 硬件问题
- 第 36 章 网络设置
- 第 37 章 自制 LiveCD
- 第 38 章 awesome
- 第 39 章 openbox 工作环境
- 第 40 章 Emacs muse
- 第 41 章 写作工具链
- 第 42 章 使用 lftp
- 第 43 章 Firefox 使用技巧
- 第 44 章 FVWM
- 部分 IV. 地质
- 第 45 章 Unix
- 第 46 章 Gnu
- 第 47 章 软件业自由之神——Richard Stallman
- 第 48 章 Linux
- 第 49 章 GNOME与KDE的战争
- 第 50 章 Vim Emacs
- 第 51 章 年代纪
- 第 52 章 我的选择
- 第 53 章 补遗