1. 程序包管理工具
1.1 dpkg包管理工具
dpkg为基于debian发行版中的程序包管理工具,例如Ubuntu、linxu mint。
aptitude:软件包管理系统,直接输入此命令可进入包管理的视图
dpkg -L Package_Name:列出指定软件包所包含的全部文件
dpkg --search absolute_file_name:查看指定文件属于哪个包
aptitude search Package_Name:查看所有该名字的软件包,会自动增加通配符,前面下是i表示已安装,c表示软件已被删除,显示p表示配置文件也已经被删除,v表示包可用且未安装。
aptitude safe-upgrade:安全的更新升级,如果存在依赖关系问题,不会强制升级
aptitude full-upgrade:更新升级,但不检查依赖关系
aptitude dist-upgrade:更新升级,但不检查依赖关系
aptitude remove Package_Name:删除软件包,但不删除数据和配置文件
aptitude purge Package_Name:删除软件包,同时删除配置文件和数据
aptitude仓库
aptitude仓库配置存放于/etc/apt/sources.list中
1.2 rpm包管理工具
rpm包管理工具普遍用于Redhat系列的操作系统
rpm包命名规则:
name-VERSION-release.arch.rpm
name:包名
Version:版本号
release:发行号,有可能还会显示支持的操作系统,比如release.el7,表示适用于RHEL7
arch:运行平台。例如x86、x86_x64、x64,无关平台的通常会显示noarch
rpm包依赖关系:
yum是rpm包管理器的前端工具,用于解决包之间的依赖关系
ldd:查看二进制程序所依赖的库文件
ldconfig:管理与查看本地已装载的库文件
-p:显示本地已经缓存的库文件和文件路径的映射关系
配置文件有/etc/ld.so.conf、/etc/ld.so.conf.d/*.conf,缓存文件有/etc/ld.so.cache
rpm包安装
rpm {-i|--install} [install-options] PACKAGE_FILE ...
-i:安装软件包
rpm -ivh Package_Name:安装软件包,显示安装过程和安装进度
--install-options:安装选项
--test:测试安装,不真正执行
--nodeps:忽略依赖关系,一般不建议
--repleacepkgs:重新安装
--nosignature:不检查包的来源合法性
--nodigest:不检查包完整性
--noscripts:不执行程序包脚本片段
%pre:安装前脚本; --nopre
%post:安装后脚本;--nopost
%preum:卸载后脚本; --nopreun
%postun:卸载后脚本; --nopostun
rpm包升级:
rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
-U:如果有旧版本则升级,没有旧版本则安装
-F:如果有旧版本则升级,没有旧版本则不执行操作
rpm -Uvh Package_Name
rpm -Fvh Package_Name
--oldpackage:降级
--force:强制升级
对于内核不要执行升级操作,会导致系统故障;
如果程序配置文件已经被修改,升级后配置文件不会被覆盖,而是将新版命名为filename.rpmnew保存
rpm包查询
rpm {-q|--query} [select-options] [query-options]
-q:查询
[select-options]
-a:所有包
-f:查看指定文件由那个程序生成
-p /PATH/TO/PACKAGE_FILE:针对于未安装的包做查询操作
--whatprovides CAPABILITTY:查询指定的CAPABILITTY由哪个包所提供
--whatrequires CAPABILITTY:查询指定的CAPABILITTY被哪个包所依赖
[query-options]
--changelog:查询rpm包的changelog
-c:查询程序的配置文件
-d:查看程序的文档
-i:查看程序的详细信息
-l:查看指定程序安装后生成的所有文件
--scripts:程序包自带的脚本片段
-R:查看程序包依赖的CAPABILITTY
--provides:查看程序包所提供的CAPABILITTY
常用用法:
rpm -qi:查询程序包的详细信息
rpm -qf:查询文件由那个程序包生成
rpm -qc:查看程序包所有的配置文件
rpm -ql:查看程序包所有的文件列表
rpm -qd:查看程序包所包含的文档
rpm -qpi:查看未安装的指定程序包的详细信息
rpm -qpl:查看未安装的指定程序包的文件列表
rpm -qa | grep package_name:查看指定程序包是否安装
rpm卸载程序包
rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts][--notriggers] [--test] PACKAGE_NAME ...
rpm包校验
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
导入所需要公钥:
rpm --import /PATH/FROM/GPG-PUBKEY-FILE
rpm 数据库重建
rpm initdb:初始化,如果事先不存在数据库则新建,否则不执行任何操作
rpm rebuilddb:重建,无论事先是否存在,都重建数据库。
1.3 yum仓库管理
yum服务器:
yum服务器上存储了诸多软件包,放置于repodata目录下
yum客户端
配置文件:
/etc/yum.list :为数据仓库提供公共配置
/etc/yum.repo.d/*.repo:提供数据仓库的配置
数据仓库配置:
[repositoryID] #ID号
name=repo_name #仓库名
baseurl=url://path/to/repository/ #repodata的URL
enabled={0|1} #该源是否启用,0为关闭,1为启用
gpgcheck={0|1} #是否进行合法性和完整性校验,0为不校验,1为校验
gpgkey=URL #校验key的URL
enablegroups={0|1} #是否基于组来批量管理程序包
failovermethod={roundrobin|priority}#故障转移方式,轮询根据优先级选择,默认为roundrobin,意思为随机。
cost= #开销。默认为1000
yum常见命令用法
显示仓库列表:
yum repolist [all|enabled|disabled]:显示本地yum源[所有的|可用的|不可用的]
显示程序包:
yum list [all | glob_exp1] [glob_exp2] [...]:默认显示所有程序包,可使用通配符
yum list {available|installed|updates} [glob_exp1] [...]:可用未安装的|已安装的|可升级的
安装程序包:
yum install Package1 [Package2......]:安装程序包
yum reinstall Package1 [Package2......]:重新安装程序包
升级程序包
yum update Package1 [Package2......]:程序包升级。默认升级所有程序包
降级程序包
yum downgrade Package1 [Package2......]:降级程序包
检查可用更新
yum check-update
卸载程序包
yum remove package1 [package2] [...]:删除软件但保留他的数据和配置文件
yum erase package1 [package2] [...]:删除软件同时删除配置和数据文件
上述两种方法都可以删除软件包且同时删除依赖包
查看指定的特性(可以是某文件)是由哪个程序包所提供
yum provides feature1 [feature2] [...]
yum whatprovides feature1 [feature2] [...]
清理本地缓存
yum clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]:包缓存|元数据缓存|过期的缓存|rpmDB|插件|全部缓存
构建缓存:
yum makecache
搜索:
yum search string1 [string2] [...]:已指定的关键字搜索程序名及summary信息
查看指定的包所依赖的CAPABILITTY:
yum deplist package1 [package2] [...]
查看事务历史:
yum history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]
安装和升级本地包:
yum localinstall RPMFILES1......:安装
yum localupdate RPMFILES1......:升级
包组管理的相关命令:
yum groupinstall group1 [group2] [...]:安装
yum groupupdate group1 [group2] [...]:升级
yum grouplist [hidden] [groupwildcard]:包组列表,可使用通配符
yum groupremove group1 [group2] [...]:删除
yum groupinfo group1 [group2] [...]:查询包组信息
处理损坏的包的依赖关系
1、yum clean all
2、yum update 如果未恢复继续3
3、yum deplist PACKAGE_NAME:显示包的依赖关系,如果未成功请继续4
4、yum update --skip-broken:忽略坏损的包,继续更新其他包
1.4 yum仓库创建
使用光盘做yum源
先挂载光盘
#mount -r -t iso9660 /dev/cdrom /media/cdrom
创建配置文件
[CentOS7]
name=
baseurl=file://.......
gpgcheck=
enabled=
yum的命令行选项
--nogpgcheck:禁止进行gpgcheck
-y:自动回答为yes
-q:静默模式
--disablerepo=repoidglob:临时禁用此处指定的repo
--enablerepo=repoidglob:临时启用此处的repo
--noplugins:禁用所有插件
yum的repo配置文件中的可用变量
$releasever:当前OS的发行版的主版本号
$arch:平台
$basearch:基础平台
$YUM0-$YUM9:这些将会替换为shell环境中相同的值
创建yum仓库
createrepo [options] <directory>
2、 使用源码安装程序
(1)查看INSTALL、README文件中的安装步骤和注意事项
(2)./configure
此命令的用途:
通过选项传递参数,指定启用特性和安装路径等;执行时会参考用户指定以及Makefile.ini文件生成makfile
检查依赖的外部环境
命令执行完成后查看执行结果,若有未安装的外部依赖环境和程序会有提示,安装即可。
(2)make
此命令用途:
根据makefile文件构建应用程序
(3)make install
安装程序
./configure的相关参数
--help:查看帮助
--prefix=/PATH/TO/SOMEFILE:指定安装路径,默认为/usr/local/
--sysconfdir=/PATH/TO/SOMEFIEL:配置文件安装位置
--disable-FEATURE:关闭某特性
--enable-FEATURE:开启某特性
--with-PACKAGE:可选包
--without-PACKAGE:不可选包
安装后的配置
(1)导出二进制程序至PATH环境变量中
编辑文件/etc/profile.d/NAME.sh
export PATH=/PATH/TO/BIN:$PATH
(2)导出库文件路径
编辑/etc/ld.so.conf.d/NAME.conf
添加新的库文件所在目录至此文件中
使用ldconfig 让系统重新生成缓存
(3)导出头文件
基于链接的方式实现
ln -sv
(4)导出帮助手册
编辑/etc/man.config文件,添加一个MANPATH