软件包在系统管理中,软件包的管理是最重要的,是系统管理的基础的基础;只有我们学会软件包的管理才能谈得上其它的应用;本文以目录式的文档格式,列出新手弟兄所面对的软件包的安装、更新、查询相对的文档,以及几个常用的软件包管理工具。
软件包管理:
一,RPM包管理;
二,yum包管理;
一,RPM包管理:
centos系统上RPM命令管理程序包:
安装,升级,卸载,查询,校验,数据库维护
RPM命令:rpm [OPTIONS] [PACKAGE_FILE]
安装:-i ,--install
升级:-U,--update, -F,--freshen
卸载: -e,--erase
查询: -q,--query
校验: -v,--verify
数据库维护:--builddb,--initdb
(1)安转:
rpm{-i | --install}[install-options] PACKAGE_FILE ...
GENERAL OPTIONS:
-v: verbose,详细信息
-vv:更详细的输出
[install-options]
-h:hash marks输出进度条;每个#表示2%的进度;
--test:测试安转,检查并报告依赖关系及冲突消息等;
--nodeps:忽略依赖关系,不建议使用;
--replacepkgs:重新安装
--nosignature:不检查包签名信息,不检查来源合法性;
--nodigest:不检查包完整性信息;
--noscripts:
preinstall: 安转过程开始之前运行的脚本,%pre,--nopre
postinstall:安装过程完成之后运行脚本,%post,--nopost
preunintall:卸载过程真正开始执行之前运行的脚本,%preun,--nopreun
postuninstall:卸载过程完成之后运行的脚本,%postun,--nopostun
注意:rpm可以自带脚本;
(2)升级:
rpm {-U | --upgrade} [install-options] PACKAGE_FILE ....
rpm {-F | --freshen} [install-options] PACKAGE_FILE ....
-U:升级或安装;
-F:升级
rpm -Uvh PACKAGE_FILE ....
rpm -Fvh PACKAGE_FILE ....
--oldpackage:降级;
--force:强制升级;
注意:1,不要对内核做升级操作;Linux支持多内核版本并存,因此,直接安转新版本内核;
2,如果某原程序包的配置文件安装后曾被修改过,升级时,新版本的程序提供的同一个配置文件不会覆盖原有版本的配置文件,而是把新版本的配置文件重命名(FILENAME.rpmnew) 后保留;
(3)卸载:
rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--notriggers] [--test] PACKAGE_NAME ..
--allmatches:卸载所有匹配指定名称的程序包的各版本;
--nodeps:忽略依赖关系
--test:测试卸载,dry run模式
(4)查询:
rpm {-q|--query} [select-options] [query-options]
[select-options]
PACKAGE_NAME:查询指定的程序包是否已经安装,及其版本;
-a, --all:查询所有已经安装过的包;
-f, --file FILE:查询所有指定的文件有那个程序包安装生成;
-p, --package PACKAGE_FILE:用于实现对未安装的程序包执行查询操作;
--whatprovides CAPABILITY:查询指定的 CAPABILITY 由那个程序包提供;
--whatrequires CAPABILITY:查询指定的 CAPABILITY 由那个包依赖;
[query-options]
--changelog:查询rpm包的changelog;
-l, --list:程序安装生成的所有文件列表;
-i, --info:程序包相关的信息,版本号,大小,所属的包组,等;
-c, --configfiles:查询指定的程序包提供的配置文件;
-d, --docfiles:查询指定的程序包提供的文档;
--provides:列出指定的程序包提供的所有的CAPABILITY;
-R, --requires:查询指定的程序包的依赖关系;
--scripts:查看程序包自带的脚本片段;
用法:
-qi PACKAG, -qf FILE, -qc PACKAG, -ql PACKAG, -qd PACKAG,-qpl PACKAG_FILE
(5)校验:
rpm {-V|--verify} [select-options] [verify-options]
S file Size differs
M Mode differs (includes permissions and file type)
5 digest (formerly MD5 sum) differs
D Device major/minor number mismatch
L readLink(2) path mismatch
U User ownership differs
G Group ownership differs
T mTime differs
P caPabilities differ
包来源合法性验证和完整性验证:
来源合法性验证:RSA
完整性验证:SHA256
获取并导入信任的包制作者的秘钥:
对于centos发行版来说:rpm --import / etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
验证:
(1)安装此组织签名的程序时,会自动执行验证;
(2)手动验证:rpm -k PACKAGE_FILE (来源合法性和完整性)
(6)数据库重建:
rpm管理器数据库路径:/var/lib/rpm/
查询操作:通过此处的数据库进行;
获取帮助:
centos 6:man rpm
centos 7:man rpmdb
rpm {--initdb|--rebuilddb} [--dbpath DIRECTORY] [--root DIREC‐TORY]
--initdb:初始化数据库,当前无任何数据库可实始化创建一个新的;当前有时不执行任何操作;
--rebuilddb:重新构建,通过读取当前系统上所有已经安装过的程序包进行重新创建;
二,yum包管理:
(1)yum 配置文件
1,yum 客户端配置文件:
/etc/yum.conf :为所有仓库提供公共配置
/etc/yum.repos.d/*.repo :为仓库的指向提供配置
仓库指向的定义:
[repositoryID](仓库ID)
name=Some name for this repository (仓库名)
baseurl=url://path/to/repository/ (地址)
enabled={1|0} (是否启用)
gpgcheck={1|0} (是否检查)
gpgkey=URL
文件服务器(URL):
ftp://
http://
file:///
2,如何使用光盘当作本地yum 仓库:
挂载光盘至某目录,例如/media/cdrom
# mount /dev/cdrom /media/cdrom
创建配置文件,vim /etc/yum.repos.d/centos-local.repo
[CentOS7]
name=
baseurl=
gpgcheck=
enabled=
3,如何使用网络源做yum仓库:
创建配置文件,vim /etc/yum.repos.d/bash.repo
[CentOS7]
name=
baseurl=
gpgcheck=
enabled=
(2)yum的命令管理:
yum 的命令行选项:
-y: 自动回答为“yes”
-q :静默模式
--nogpgcheck :禁止进行gpg check
--disablerepo=repoidglob :临时禁用此处指定的repo
--enablerepo=repoidglob :临时启用此处指定的repo
--noplugins :禁用所有插件
显示仓库列表:
yum repolist [ all | enabled | disabled ] [全部 | 启用 | 禁止]
显示程序包:
yum list
yum list [all ]
yum list [available | installed | updates] [可用的 | 安装过的 | 升级的]
安装程序包:
yum install package1
yum reinstall package1 ( 重新安装)
升级程序包:
yum update package1
yum downgrade package1 ( 降级)
检查可用升级:
yum check-update
卸载程序包:
yum [remove | erase] package1 [卸载 | 抹除]
查看包的详细信息
yum info package
查看指定的特性( 可以是某文件) 是由哪个程序包所提供:
yum provides feature1
清理本地缓存:
yum clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
[程序包 | 元数据 | 过期的缓存 | rpmdb | 插件 | 全部的]
构建缓存:
yum makecache
搜索:以指定的关键字搜索程序包名及summary(简要) 信息
yum search string1
查看yum 事务历史:
yum history
yum history list # (可以显示某个处理过程)
yum history info # (可以显示某个历史安装包的详细信息)
yum history redo # (可以重新安装某个历史的所有安装包)
yum history undo # (可以撤销某个历史的所有安装包,类同卸载 (不适用包组))
安装及升级本地程序包:
yum install rpmfile (安装本地程序包)
yum update rpmfile (升级本地程序包)
包组管理的相关命令:
yum grouplist (查看包组)
yum groupinfo group (查看包组的详细信息)
yum groupinstall group (安装包组)
yum groupupdate group (升级包组)
yum groupremove group (卸载包组)
(3)编译安装:
c/c++ 编译器: gcc (GNU C Complier)
编译C源代码:
准备: 提供开发工具及开发环境
开发工具:make, gcc等
开发环境:开发库,头文件
glibc :标准库
实现:通过 “包组”提供开发组件
CentOS 6:
Development Tools
Server Platform Development
CentOS 7:
Development Tools
Development and Creative Workstation
( get命令 是把目录或文件放到桌面 )
第一步:./configure 脚本
选项:指定安装位置、指定启用的特性--help: 获取其支持使用的选项
选项分类:
安装路径设定:
--prefix=/PATH: 指定默认安装位置, 默认为/usr/local/
--sysconfdir=/PATH :配置文件安装位置
System types: 支持交叉编译
Optional Features: 可选特性
--disable-FEATURE
--enable-FEATURE[=ARG]
Optional Packages: 可选包,
--with-PACKAGE[=ARG], 依赖包
--without-PACKAGE, 禁用依赖关系
第二步:make:根据makefile 文件,构建应用程序
第三步:make install : 复制文件到相应路径
安装后的配置:
(1) 二进制程序目录导入至PATH 环境变量中;
编辑文件/etc/profile.d/NAME.sh
PATH=/PATH/TO/BIN:$PATH
(2) 导入库文件路径
编辑/etc/ld.so.conf.d/NAME.conf
添加新的库文件所在目录至此文件中
让系统重新生成缓存:
ldconfig [-v]
(3) 导入头文件
基于链接的方式实现:
ln -sv
(4) 导入帮助手册
编辑/etc/man.config|man_db.conf 文件
添加一个MANPATH