contents
- 软件包分类
- 源码包
- RPM 包
- 包管理基础
- 基于Debian的系统
- 使用 aptitude 管理软件包
- 用 aptitude 安装软件包
- 用 aptitude 更新软件
- 用 aptitude 卸载软件
- aptitude 仓库
- 基于 Red Hat 的系统
- 列出已安装的包
- 用 yum 安装软件
- 用 yum 更新软件
- 用 yum 卸载软件
- 处理损坏的包依赖关系
- yum软件仓库
- YUM 软件组管理命令
- rpm 包管理
- rpm包命名规则
- rpm包依赖性
- 包全名和包名
- RPM安装
- rpm包升级
- 卸载
- 查询是否安装
- 查询包信息
- 查询包中文件安装位置
- 查询系统文件属于哪个 rpm 包
- 查询软件包的依赖性
- rpm 包校验
- rpm包中文件提取
- 从源码安装
- 源码包和RPM包的区别
- 安装位置不同带来的影响
- 源码包安装过程
- 源码包的卸载
- 脚本安装包
- 脚本安装包
- Webmin 的作用
- Webmin 安装过程
软件包分类
- 源码包
- 脚本安装包不多见,不需要手工安装。
- 二进制包(RPM包、系统默认包)经过编译,不能够看到源代码 .rpm 格式。
源码包
开源包的优点是:
- 开源,如果有足够的能力,可以修改源代码。
- 可以自由选择所需的功能。
- 软件是编译安装,所以更加适合自己的系统,更加稳定也效率更高。
- 卸载方便。
源码包的确定: - 安装过程步骤角度,尤其安装较大的软件集合时,容易出现拼写错误。
- 编译过程时间较长,安装比二进制安装时间长。
- 因为是编译安装,安装过程中一旦报错新手很难解决。
RPM 包
二进制包的优点:
- 包管理系统简单,只通过几个命令就可以实现包的安装、升级、查询和卸载。
- 安装速度快。
二进制包的缺点: - 经过编译,不可以看到源代码。
- 功能选择不如源代码灵活。
- 依赖性 安装a,需要先安装b。
包管理基础
包管理系统(PMS),其利用一个数据库来记录各种相关内容:
- Linux 系统上已安装了什么软件包
- 每个包安装了什么软件
- 每个已安装软件包的版本
Linux 中广泛使用的两种主要的PMS基础工具是dpkg和rpm。
基于Debian的发行版(Ubuntu和Linux Mint)使用的是dpkg命令。
基于Red Hat的发行版使用的是rpm命令。
基于Debian的系统
dpkg命令是基于Debian系PMS工具的核心,包含在这个PMS中的其他工具有:
- apt-get
- apt-cache
- aptitude
使用 aptitude 管理软件包
aptitude 有交互式界面来管理软件包。
如果你已经知道了系统上的那些软件包,只想快速显示某个软件包的详细信息,就没必要到 aptitude 的交互式界面。可以在命令行下以单个命令的方式使用 aptitude。
aptitude show package_name
无法通过 aptitude 看到的一个细节是所有跟某个特定软件包相关的所有文件列表。要得到这个列表,就必须用dpkg命令。
dpkg -L package_name
也可以进行反向操作,查找某个特定文件属于哪个软件包。
dpkg --search absolute_file_name(绝对路径)
用 aptitude 安装软件包
使用下面的命令找到特定的软件包。
aptitude search package_ame
每个包名字前面都一个 p 或 i,i、u意味着已经安装,如果是 p 或 v 说明这个包未安装。
使用下列命令安装:
sudo aptitude install package_name
用 aptitude 更新软件
更新所有的软件包。
sudo aptitude safe-upgrade
用 aptitude 卸载软件
要想只删除软件包而不删除数据和配置文件,可以使用 aptitude 的 remove 选项。
要删除软件包和相关的数据和配置文件,使用 purge 选项。
aptitude [remove/purge] pachage_name
要看软件包是否已经删除,再用 aptitude 的 search 选项,在软件包前面看见一个 c,意味着软件包已删除。
aptitude 仓库
aptitude 默认的软件仓库位置是在安装 Linux 发行版时设置的。具体的安装位置存储在 /etc/apt/source.list 中。
很多情况下不需要添加或删除软件仓库,aptitude 只会从这些仓库下载文件,在搜索软件进行安装或更新时,aptitude 同样只检查这些库。
基于 Red Hat 的系统
基于 Red Hat 的系统也有几种不同的可用的前端工具。
- yum:在 Red Hat 和 Fedora 中使用。
- urpm:在 Mandriva 中使用。
- zypper:在 openSUSE 中使用。
列出已安装的包
yum list installed
yum list installed > installed_software
yum list # 查询所有可用软件包列表,远程服务器上查询
yum search 关键字(包名) # 搜索服务器上所有和关键字相关的包
用 yum 安装软件
yum -y install 包名 # -y自动回答yes
也可以手动下载 rpm 安装文件并用 yum 安装,本地安装:
yum localinstall pachage_name.rpm
用 yum 更新软件
列出已安装包的可用更新:
yum list updates
核弹命令 不加包名后,会升级所有包,包括内核,可能会无法启动服务器。
yum -y update 包名
用 yum 卸载软件
核弹命令 不加包名
只删除软件包而保留它所有的文件:
yum -y remove 包名
要删除软件和它所有的文件:
yum erase pachage_name
处理损坏的包依赖关系
有时在安装多个软件包时,某个包的软件依赖关系可能会被另一个包的安装覆盖掉。这叫作损坏的包依赖关系。
如果系统出现了这个问题,先试试下面这个命令:
yum clean all
然后试着用 yum 命令的 update 选项,有时只需要清理放错位置的文件就可以了。
如果还解决不了问题,试试下面的命令:
yum deplist package_name
如果这样仍未解决,试试下面的命令:
yum update --skip-broken
这个选项允许你忽略依赖关系损坏的那个包,继续去更新其他软件包。
yum软件仓库
yum的仓库定义文件位于 /etc/yum.repos.d
YUM 软件组管理命令
软件包组名中如果有空格,使用引号。
yum grouplist # 列出所有可用的软件组列表
yum groupinstall 软件组名 # 安装指定软件组,组名可以由grouplist查询出来
yum groupremove 软件组名
rpm 包管理
rpm包命名规则
httpd-2.2.15-15.el6.centos.1.i686.rpm (包全名)
字段 | 意义 |
httpd | 包名 |
2.2.15 | 软件版本 |
15 | 软件发布的次数 |
el6.centos | 适合的Linux平台、不指定则均可以安装 |
i686 | 适合的硬件平台、686微机平台 |
rpm | rpm包拓展名 |
rpm包依赖性
- 树形依赖a b c
- 环形依赖a b c
- 模块依赖
模块包依赖查询网站:www.rpmfind.net
包全名和包名
- 包全名:操作的包是没有安装的软件包时,使用包全名。而且要注意路径。
- 包名:操作已经安装的软件包名时,使用包名。是搜索/var/rpm中的数据库。
RPM安装
rpm [选项] 包全名
选项 | 说明 |
-i(install) | 安装 |
-v(verbose) | 显示详细信息 |
-h(hash) | 显示进度 |
–nodeps | 不检测依赖性 |
rpm包升级
rpm -Uvh 包全名
卸载
rpm -e 包名
查询是否安装
rpm -q httpd 查询某包是否安装,任何位置都可以执行
rpm -qa 查询所有安装包
查询包信息
rpm [选项] 包名
选项 | 说明 |
-i | 查询软件信息 |
-p | 查询未安装包信息 +包全名 rpm-qip zip-3.0.1.el6.i686.rpm |
查询包中文件安装位置
rpm [选项] 包名
选项 | 说明 |
-l | 列表 |
-p | 查询未安装包信息 |
查询系统文件属于哪个 rpm 包
rpm [选项] 系统文件名
选项 | 说明 |
-f | 查询系统文件属于哪个软件包,必须是包自己创建的。 |
查询软件包的依赖性
rpm [选项] 包名
选项 | 说明 |
-R | 查询软件包的依赖性 |
-p | 查询未安装包信息 进入光盘包目录 |
rpm 包校验
rpm -V 查询已安装包名,记录包特征,判断文件是否修改。
验证内容中的8个信息的具体内容如下:
8字段 | 含义 |
S | 文件大小是否改变 |
M | 文件的类型或文件的权限(rwx)是否被改变 |
5 | 文件 MD5 校验和是否改变(文件内容是否改变) |
D | 设备的主从代码是否改变 |
L | 文件路径是否改变 |
U | 文件的所属主 |
G | 文件的属组是否改变 |
T | 文件的修改时间是否改变 |
文件类型:
文件类型 | 含义 |
c | 配置文件 |
d | 普通文件 |
g | “鬼文件”,该文件不应该被这个 RPM 包所包含。 |
l | 授权文件 |
r | 描述文件 |
rpm包中文件提取
rpm2cpio 包全名 | cpio -idv .文件绝对路径
仅仅提取包中的部分文件,误操作时使用。
cpio [选项] <[文件|设备]
选项 | 说明 |
i | copy-in模式,还原 |
d | 还原时自动新建目录 |
v | 显示还原过程 |
rpm2cpio # 将rpm 包转换为cpio格式的命令
cpio # 一个标准工具,它用于创建软件档案文件和从档案文件中提取文件。
rpm -qf /bin/ls # 查询s命令属于哪个软件包
mv /bin/ls /tmp/ # 造成s命令误删除假象
rpm2cpio /mnt/cdrom/Package/coreutils-8.5-19.el6.i686.rpm | cpio -idv ./bin/ls # 提取rpm包中ls命令到当前目录下
cp /root/bin/ls /bin/ # 把ls命令赋值到 /bin/ 目录,修复文件丢失
从源码安装
源码包和RPM包的区别
- 安装之前的区别:概念上的区别
- 安装之后的区别:安装位置不同
- 源码包:人为指定安装位置,一般是/usr/local/软件名/
- RPM包:系统默认位置
路径 | 意义 |
/etc/ | 配置文件安装目录 |
/usr/bin/ | 可执行的命令安装目录 |
/usr/lib/ | 程序所使用的函数库保存位置 |
/usr/share/doc/ | 基本的软件使用手册保存位置 |
/usr/share/man/ | 帮助文件保存位置 |
安装位置不同带来的影响
RPM包安装的服务可以使用系统服务管理命令(service)来管理,例如RPM包安装的 apache 的启动方法是:
/etc/rc.d/init.d/httpd start
或
service httpd start
源码包安装的服务则不能被服务管理命令管理,因为没有安装到默认路径中。所以只能用绝对路径进行服务的管理。
/usr/local/apache2/bin/apachectls start
源码包安装过程
- 安装准备
安装C语言编译器
下载源码包 http://mirror.bit.edu.cn/apache/httpd/ - 安装注意事项
源代码保存位置:/usr/local/src/
软件安装位置:/usr/local/
如何确定安装过程报错:安装过程停止并且出现error、warning 或 no 的提示。 - 源码包安装过程
下载源码包
解压缩下载的源码包
进入解压缩目录
INSTALL:
- ./configure 软件配置与检测
定义需要的功能选项
检测系统环境是否符合安装需求
把定义好的功能选项和检测系统环境的信息都写入 Makefile文件,用于后续的编辑。 - make 编译
- (make clean) 出现错误,删除临时文件即可。
- make install 编译安装,才正式项目如下
Centos安装 Apache2.4提示 APR not found的解决办法
源码包的卸载
不需要卸载命令,直接删除安装目录即可。不会遗留任何垃圾文件。
脚本安装包
脚本安装包
- 脚本安装包并不是独立的软件包类型,常见安装的是源码包。
- 是人为把安装过程写成了自动安装的脚本,只要执行脚本,定义简单的参数,就可以完成安装。
- 非常类似与 Windows 下软件的安装方式。
Webmin 的作用
Webmin 是一个基于 Web 的 Linux 系统管理界面。你就可以通过图形化的方式设置用户账号、apache、DNS、文件共享等服务。
Webmin 安装过程
- 下载软件:http://sourceforge.net/projects/webadmin/files/webmin/
- 解压缩
- 进入解压缩目录
- 执行安装脚本