Linux操作系统常用命令合集——第六篇-软件包操作(2个命令)
一、前言介绍
软件包即程序包
程序包管理
关键词:rpm程序包管理、YUM仓库管理、源码编译安装
程序包管理:
将编译好的应用程序的各组成文件打包一个或几个程序包文件,从而方便快捷地实现程序包的安装、卸载、查询、升级、和校验等管理操作
管理程序包的方式:
使用包管理器:rpm
使用前段工具:yum
rpm包含命名方式:
name-VERSION-release.arch.rpm
VERSION:major.minor.release
release.arch:
常见的arch:
x86:i386, i486, i586. i686
x86_64:x64, x86_64, amd64
powerpc:ppc
跟平台无关:noarch
包之间:存在依赖关系
X, Y, Z
二、命令详解
1.rpm
【命令作用】
程序包管理
【命令语法】
rpm [选项] [参数]
【常用选项】
(1)安装:
rpm {-i|--install} --注意花扩符号,必须包含选项[install-options] PACKAGE_FILE ...查询为软件头代表名:tree,安装为整个文件名
-v<verbose> --显示详细过程
rpm {-i|--install}
-h --以显示程序包管理执行进度,每个#表示2%的进度
rpm -ivh PACKAGE_FILE ...
[install-options]
--test --测试安装,但不真正执行安装过程
--nodeps --忽略依赖关系
--replacepkgs --重新安装
--force --强制安装直接代替nodeps和replacepkgs,但是尽量不要忽略依耐性关系
--nosignature --不检查来源合法性
--nodigest --不检查包完整性
秘钥文件:ll /etc/pki/rpm-gpg/
(2)升级:
rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
upgrade --安装有旧版程序包,则“升级”;如果不存在旧版程序包,则“安装”
freshen --安装有旧版程序包,则“升级”:如果不存在旧版程序包,则不执行升级操作
[install-options]
--test --测试安装,但不真正执行安装过程
--nodeps --忽略依赖关系
--oldpackage --降级
--fore --强行升级
注意:①不要对内核做升级操作;Linux支持多内核版本并存,因此,直接安装新版本内核
②如果原程序包的配置文件安装后曽被修改,升级时,新版本提供的同一配置文件不会直接覆盖老版本的配置文件,而把新版本的文件重命名(FILENAME.rpmnew)后保留
(3)查询:
rpm {-q|--qurey} [select-options] [query-options]
①[select-options] --挑选选项
-a --所有已安装程序包
-f --查看指定的文件由哪个程序包安装生成
-p /PATH/TO/PACKAGE_FILE --针对尚未安装的程序包文件做查询操作
②[query-options] --查询选项
-c --查询程序的配置文件
-d --查询程序的文档
-i --查询程序的信息
-l --查看指定的程序包安装后生成的所有文件
常见的组合用法:
-qi PACKAGE, -qf FILE, -qc PACKAGE, -ql PACKAGE, -qd PACKAGE
-qpi PACKAGE_FILE, -qpl PACKAGE_FILE, ...
-qa
(4)卸载:
rpm {-e|--erase} PACKAGE_NAME ...
--test --测试卸载,但不真正执行卸载过程
--nodeps --忽略依赖关系
(5)校验(非常用):
①rpm {-V|--verify} [select-options] [verify-options]
rpm -V FILE
S --文件大小差异
M --权限差异
5 --验证码差异
D --主设备号和次设备号
L --路径差异
U --文件拥有者差异
G --文件拥有组差异
T --修改时间差异
P --特性差异
②包来源合法性验证及完整性验证:
完整性验证: SHA256
来源合法性验证: RSA
③公钥加密:
对称加密:加密、解密使用同一密钥
非对称加密:密钥是成对儿的
③导入所需要公钥:
rpm --import /PATH/FROM/GPG-PUBKEY-FILE导入*
CentOS 7 发行版光盘提供的密钥文件:RPM-GPG-KEY-CentOS-7
(6)数据库维护:
RPM数据库 ll /var/lib/rpm
ll /var/ilb/rpm --查询数据文件
rpm {--initdb|--rebuilddb}
initdb --初始化。如果事先不存在数据库,则新建之;否则,不执行任何操作
rebuilddb --重建。无论当前存在与否,直接重新创建数据库
【参数说明】
指定要操纵的rpm软件包
【命令示例】
2.yum
【命令作用】
YUM(Yellow dog,全称为 Yellow dog Updater,Modified)是一个Fedora和RedHat以及CentOS中的Shell前段软件包管理。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
yum repository:yum repo
--存储了众多rpm包,以及包的相关的元数据文件(放置于特定目录下:repodata)
文件服务器:
ftp://
http://
nfs://
file:///
yum 客户端:
配置文件:
/etc/yum.conf --为所有仓库提供公共配置
/etc/yum.repos.d/*.repo --为仓库的指向提供配置
仓库指向的定义:
[repositoryID]
name=Some name for this repository
baseurl=url://path/to/repository/
enabled={1|0}
gpgcheck={1|0}
gpgkey=URL
enablegroups={1|0}
failovermethod={roundrobin|priority}
默认为:roundrobin,意为随机挑选
cost=
默认为1000
【命令语法】
yum [选项] [参数]、
【常用选项】
-y<yes> --对所有的提问回答"yes"
-c --指定配置文件
-q --静默模式
-v --详细模式
-d --设置调试等级(0/10)
-e --设置错误等级(0/10)
-R --设置yum处理一个命令的最大等待时间
-C --完全从缓存中运行,而不去下载或者更新任何头文件
【参数说明】
(1)command is one of(命令如下):
install package1 [package2] [...] --安装rpm程序包1 程序包2
update [package1] [package2] [...] --更新rpm程序包1 程序包2
update-to [package1] [package2] [...] --更新程序包1程序包2,。此命令的工作方式类似于“update”,但始终指定要更新的包的版本。
check-update --检查是否有可用的更新rpm软件包
upgrade [package1] [package2] [...]
upgrade-to [package1] [package2] [...]
distribution-synchronization [package1] [package2] [...]
remove | erase package1 [package2] [...] --删除指定的rpm程序包
list [...] --显示程序包的信息
info [...] --显示指定的rpm程序包的描述信息和概要信息
provides | whatprovides feature1 [feature2] [...]
clean [packages | metadata | expire-cache | rpmdb | plugins | all ] --清理yum过期的缓存
makecache
groupinstall group1 [group2] [...] --安装程序组group1和group2
groupupdate group1 [group2] [...] --更新程序组group1和group2
grouplist [hidden] [groupwildcard] [...] --查看可能批量安装的列表
groupremove group1 [group2] [...] --卸载程序组group1和group2
groupinfo group1 [...] --显示程序组group1信息
search string1 [string2] [...] --根据关键字string查找安装包
shell [filename] --进入yum的shell提示符[文件名]
resolvedep dep1 [dep2] [...] --显示rpm程序包1和2的依赖关系
localinstall rpmfile1 [rpmfile2] [...] --安装本地的rpm程序包1和2
(maintained for legacy reasons only - use install)
localupdate rpmfile1 [rpmfile2] [...] --显示本地rpm程序包1和2进行更新
(maintained for legacy reasons only - use update)
reinstall package1 [package2] [...]
downgrade package1 [package2] [...]
deplist [all|enabled|disabled] --显示rpm程序包的所有依赖
version [all | installed | available | group-* | nogroups* | grouplist | groupinfo]
history [info|list|packages-ilst|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]
check
help [command]
(2)显示仓库列表:
repolist [all|enabled|disabled]
(3)显示程序包:
list
# yum list [all | glob_exp1] [glob_exp2] [...]
# yum list {available|installed|updates} [glob_exp1] [...]
(4)安装程序包:
install package1 [package2] [...]
reinstall package1 [package2] [...] (重新安装)
(5)升级程序包:
update [package1] [package2] [...]
downgrade package1 [package2] [...] (降级)
(6)检查可用升级:
check-update
(7)卸载程序包:
remove | erase package1 [package2] [...]
(8)查看程序包information:
info [...]
(9)清理本地缓存
clean [pakages | metadata | expire-cache | rpmdb | plugins | all]
(10)构建缓存:
makecache
(11)搜索:
search string1 [string2] [...]
以指定的关键字搜索程序包名及summary信息
(12)查看指定包所依赖的capabilities:
deplist package1 [package2] [...]
(13)查看yum事务历史
history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]
(14)安装及升级本地程序包:
localinstall rpmfile1 [rpmfile2] [...]
(maintained for legacy reasons only - use install)
localinstall rpmfile1 [rpmfile2] [...]
(maintained for legacy reasons only - use update)
(15)包组管理的相关命令
groupinstall group1 [group2] [...]
groupupdate group1 [group2] [...]
grouplist [hidden] [groupwildcard] [...]
groupremove group1 [group2] [...]
groupinfo group1 [...]
(16)如何使用光盘当作本地yum仓库
①挂载光盘至某目录,例如/media/cdrom
#mount -r -t iso9660 /dev/cdrom /media/cdrom
②创建配置文件
[DVD]
name=
baseurl=
gpgcheck=
enabled=
(17)yum的命令行选项:
--nogpgcheck --禁止进行gpg check
-y --自动回答为"yes"
-q --静默模式
--disablerepo=repoidglob --临时禁用此处指定的repo
--enablerepo=repoidglob --临时启用此处指定的repo
--noplugins --禁用所有插件
【命令示例】
(1)# yum install -y samba --安装samba服务并且所有的提问默认"yes"
(2)# yum remove -y samba --卸载samba服务并且所有提问默认"yes"
(3)# yum list rpm* --用yum的功能找出以rpm为开头的程序包名称有哪些
(4)# yum clean all --清除yum仓库缓存
(5)# yum makeache --生成yum缓存
3.源码编译安装
前提:准备开发环境(编译环境)
安装软件包组"Development Tools"和"Development Libraries"
C代码编译安装三步骤
./configure:
(1)通过选项传递参数,指定启用特性、安装路径等;执行时会参考用户的指定以及Makefile.in文件生成makefile
(2)检查依赖到的外部环境
make:
根据makefile文件,构建应用程序
make install
建议:安装前查看INSTALL,README
创建yum仓库:
createrepo [options] <directory>
Linux操作系统常用命令合集——第六篇-软件包操作(2个命令)的更多相关文章
- Linux操作系统常用命令合集——第三篇-系统管理操作(25个命令)
1.whoami [命令作用] 显示当前登录有效用户名称 [命令语法] whoami [选项] [常用选项] 无 [参数说明] 用户名称 [命令示例] 显示当前登录有效用户名称 # whoam ...
- Linux操作系统常用命令合集——第六篇-压缩和归档操作(16个命令)
1.gzip [命令作用] 压缩和解压缩文件 gzip/guzip/zcat zcat:不显式展开的前提下查看文本文件内容 zdiff/zgrep/zless/zmore [命令语法] gzip ...
- Linux操作系统常用命令合集——第五篇-磁盘和文件系统操作(15个命令)
1.fdisk [命令作用] 用于观察硬盘实体使用情况.也可以对硬盘分区. 对于一块硬盘来讲,最多只能管理15个分区 [命令语法] fidisk [选项] [参数] [常用选项] -b& ...
- Linux操作系统常用命令合集——第四篇-文件系统权限操作(5个命令)
1.umask [命令作用] 文件或目录创建时的遮罩码 [命令语法] umask [选项] [参数] [常用选项] -p --输出的权限掩码可直接作为指令来执行 -s --以符号方式 ...
- Linux常用命令合集
常用命令合集 命令选项和参数 Linux中的命令格式为:command [options] [arguments] //中括号表示可选的,即有些命令不需要选项也不需要参数,但有的命令在运行时需要多个 ...
- 【转】Ubuntu常用软件合集
[转]Ubuntu常用软件合集 Ubuntu常用软件合集 我用的使Ubuntu-Kylin14.04,原因呢主要是觉得使本土化的,自带了日历.输入法.优客助手等易于上手的应用.也省的每次安装完原生的系 ...
- Timesten 日常管理命令合集
Timesten 日常管理命令合集 以下所有操作都是基于TT 11 版,早前版本本人没用过,命令是否适用我不清楚啊! 各类服务管理 一.TT的启停 停服务: 1.停止复制与cache 进程: ...
- es6常用基础合集
es6常用基础合集 在实际开发中,ES6已经非常普及了.掌握ES6的知识变成了一种必须.尽管我们在使用时仍然需要经过babel编译. ES6彻底改变了前端的编码风格,可以说对于前端的影响非常巨大.值得 ...
- [转载]VIM命令合集
Vim命令合集 http://www.cnblogs.com/softwaretesting/archive/2011/07/12/2104435.html 命令历史 以:和/开头的命令都有历史纪录, ...
随机推荐
- Math.random()的加密安全替换方法window.crypto.getRandomValues
Math.random() 返回介于 0(包含) ~ 1(不包含) 之间的一个随机数. Math.random()函数不是加密安全的随机数生成器. window.crypto.getRandomVal ...
- js入门之DOM动态创建数据
一. 知识点回顾 1. DOM结构 nodeName: '' 标签名 nodeType: '' 类型 1元素节点 2属性节点 3文本节点 nodeValue: '' 如果是元素节点 nodeValue ...
- 【日语】日语N5学习
副词与连接词 ~から: 从-(表示时间.场所起点) ~まで: 到-(表示时间.场所终点) と: 和(并列时用) えーと: 嗯 いっしょに: 一起 ちょっと: 一点儿 いつも: 经常.总是 ときどき: ...
- 流程控制 if----else
流程控制: 对PHP程序执行的过程进行控制! PHP有哪些手段对程序执行过程进行控制!一.顺序执行 自上而下的执行即可! 对这个执行过程没有控制!二.分支执行 分支执行可以根据条件是否满足来选择执行某 ...
- 运维开发笔记整理-Request对象与Response对象
运维开发笔记整理-Request对象与HttpResponse对象 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.request对象 1>.什么是request 首先,我 ...
- python2.7 安装pycrypto库报错
windows + python2.7 先安装VC包 https://download.microsoft.com/download/7/9/6/796EF2E4-801B-4FC4-AB28-B59 ...
- 用js刷剑指offer(栈的压入、弹出序列)
题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压 ...
- 重新编程Hexiwear Docking Station扩展坞
Hexiwear扩展坞(Docking Station)有一个很不错的功能:它板载了一个调试电路(OpenSDA). 这样我就不需要一个外部调试器来调试Hexiwear. 但是,重新编程扩展坞自身需要 ...
- 【转】如何在TensorFlow中高效使用数据集
本文主要记录tensorflow一个比较好用的API:Dataset,feed-dict 是向 TensorFlow 传递信息最慢的方式,应该尽量避免使用.向模型提供数据的正确方式是使用输入管道,这样 ...
- PHP 把返回的数据集转换成Tree树
/** * 把返回的数据集转换成Tree * @access public * @param array $list 要转换的数据集 * @param string $pid parent标记字段 * ...