Linux-程序包管理
Linux上的软件安装有2种形式:源码
、二进制文件
,源码需要在编译环境下编译安装,二进制可以直接安装。
1.程序包管理器 rpm
程序包管理器能够将目标二进制格式(也就是从源码编译好的二进制文件,包括:二进制程序、库文件、配置文件、帮助文件)组织成为一个或有限几个“包”文件,提供安装、升级、卸载、查询、校验等功能。
常见的程序包管理器有rpm
(Redhat、CentOS)、deb
(Debian、Ubuntu),下文提及的包管理器指rpm(因为生成环境服务器一般Redhat和CentOS居多)
1.1 程序包获取途径
(1) 系统发行版的光盘或官方的文件服务器(或镜像站点):
http://mirrors.aliyun.com
http://mirrors.sohu.com
http://mirrors.163.com
(2) 项目的官方站点
(3) 第三方组织,如:EPEL、著名的搜索引擎(如:http://pkgs.org、http://rpmfind.net 、http://rpm.pbone.net )
(4) 自己制作rmp包
建议使用rpm包前检查其合法性、来源合法性、程序包的完整性
1.2 rpm命令
rpm命令能实现软件的安装、升级、卸载、查询和校验、数据库维护等功能。
rpm命令:
语法
rpm [OPTIONS] [PACKAGE_FILE]
选项
安装:-i, --install
升级:-U, --update, -F, --freshen
卸载:-e, --erase
查询:-q, --query
校验:-V, --verify
数据库维护:--builddb, --initdb
1.2.1 安装
语法
rpm {-i|--install} [install-options] PACKAGE_FILE ...
习惯用法
rpm -ivh PACKAGE_FILE ...
** OPTIONS**
GENERAL OPTIONS:
-v:verbose,详细信息
-vv:更详细的输出
[install-options]:
-h:hash marks输出进度条;每个#表示2%的进度;
--test:测试安装,检查并报告依赖关系及冲突消息等;
--nodeps:忽略依赖关系;不建议;
--replacepkgs:重新安装
#注意:rpm可以自带脚本,安装时可以不执行这些脚本;
preinstall:安装过程开始之前运行的脚本,%pre , --nopre
postinstall:安装过程完成之后运行的脚本,%post , --nopost
preuninstall:卸载过程真正开始执行之前运行的脚本,%preun, --nopreun
postuninstall:卸载过程完成之后运行的脚本,%postun , --nopostun
以上四种都不执行:--noscripts
--nosignature:不检查包签名信息,不检查来源合法性;
--nodigest:不检查包完整性信息;
1.2.2 升级
语法
#-U:升级或安装;
rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
-F:升级
rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
习惯用法
rpm -Uvh PACKAGE_FILE ...
rpm -Fvh PACKAGE_FILE ...
选项
--oldpackage:降级;
--force:强制升级;
注意
(1) 不要对内核做升级操作;Linux支持多内核版本并存,因此,直接安装新版本内核;
(2) 如果某原程序包的配置文件安装后曾被修改过,升级时,新版本的程序提供的同一个配置文件不会覆盖原有版本的配置文件,
而是把新版本的配置文件重命名(FILENAME.rpmnew)后提供;
1.2.3 卸载
语法
rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--test] PACKAGE_NAME ...
选项
--allmatches:卸载所有匹配指定名称的程序包的各版本;
--nodeps:忽略依赖关系
--test:测试卸载,dry run模式
1.2.4 查询
语法
rpm {-q|--query} [select-options] [query-options]
[select-options]
PACKAGE_NAME:查询指定的程序包是否已经安装,及其版本;
-a, --all:查询所有已经安装过的包;
-f FILE:查询指定的文件由哪个程序包安装生成;
-p, --package PACKAGE_FILE:用于实现对未安装的程序包执行查询操作;
--whatprovides CAPABILITY:查询指定的CAPABILITY由哪个程序包提供;
--whatrequires CAPABILITY:查询指定的CAPABILITY被哪个包所依赖;
[query-options]
--changelog:查询rpm包的changlog;
-l, --list:程序安装生成的所有文件列表;
-i, --info:程序包相关的信息,版本号、大小、所属的包组,等;
-c, --configfiles:查询指定的程序包提供的配置文件;
-d, --docfiles:查询指定的程序包提供的文档;
--provides:列出指定的程序包提供的所有的CAPABILITY;
-R, --requires:查询指定的程序包的依赖关系;
--scripts:查看程序包自带的脚本片断;
1.2.5 校验
语法
rpm {-V|--verify} [select-options] [verify-options]
输出格式
输出格式是一个八个字符的字符串,和一个可能有的"c", 指明后面是一个配置文件,以及后面的文件名.
八个字符中的每一个都代表着一个文件属性与保存在RPM的数据库中的属性纪录值的比较结果. 单个的"."(句号)表明检查通过.下列字符代表特定检查的失败:
5 MD5校验和
S 文件大小
L 符号连接
T 修改时间
D 设备
U 用户
G 组
M 模式(包括许可和文件类型)
示例
[root@promote]~# rpm -V zsh
S.5....T. /usr/share/zsh/5.0.2/functions/_SuSEconfig
导入密钥
#CentOS上获取并导入信任的包制作者或组织的密钥:
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
验正
(1) 安装此组织签名的程序时,会自动执行验正;
(2) 手动验正:rpm -K PACKAGE_FILE
1.2.6 重新生成数据库
rpm管理器数据库路径:/var/lib/rpm/,rpm命令的查询操作通过此处的数据库进行。
rpm重建数据库
rpm --rebuilddb [--dbpath]
重建一个新的数据库
rpm --initdb [--dbpath]
2.程序包管理工具 yum、dnf
rpm在使用过程中遇到最头疼的事情就是需要手动处理依赖关系,搞不好捣鼓半天都解决不了,这个时候rpm包的前端管理工具yum应运而生了,它是一个客户端,自动处理rpm包的依赖关系,并从远程yum仓库自动下载需要的rpm包。有了yum,软件的查询、安装、卸载都仅需要一条命令,大大方便了运维人员。
yum - Yellowdog Updater Modified
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 repolist [all|enabled|disabled]
显示程序包
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 | erase package1 [package2] [...]
查看程序包information
yum info [...]
查看指定的特性(可以是某文件)是由哪个程序包所提供
yum provides | whatprovides feature1 [feature2] [...]
清理本地缓存
yum clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
构建缓存
yum makecache
搜索(以指定的关键字搜索程序包名及summary信息):
yum search string1 [string2] [...]
查看指定包所依赖的capabilities
yum deplist package1 [package2] [...]
查看yum事务历史
yum history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]
安装及升级本地程序包
yum localinstall rpmfile1 [rpmfile2] [...]
yum localupdate rpmfile1 [rpmfile2] [...]
包组管理的相关命令
yum groupinstall group1 [group2] [...]
yum groupupdate group1 [group2] [...]
yum grouplist [hidden] [groupwildcard] [...]
yum groupremove group1 [group2] [...]
yum groupinfo group1 [...]
3.编译安装
通常按照习惯,程序源码应该放在/usr/local/src目录中集中管理,这是一个好的习惯。
C/C++程序编译安装步骤:
- ./configure (首先进入源码包解压目录)
(1) 通过选项传递参数,指定启用特性、安装路径等;执行时会参考用户的指定以及Makefile.in文件生成makefile;
(2) 检查依赖到的外部环境;
# 选项
# 帮助
./configure --help
# 指定编译安装的路径 (建议使用,方便直接删除目录卸载程序)
./configure --prefix=/usr/local/nginx
make
根据makefile文件,构建应用程序;此时只会产生临时文件,不会向最终目录复制文件,如果要删除临时文件不进行最终安装可以使用make clean
命令。make install
向指定的安装目录拷贝程序文件。
编译安装的程序只能以全路径方式运行,而rpm包安装的程序既可以以全路径方式运行,又能以systemctl start 程序.service
方式运行。
Linux-程序包管理的更多相关文章
- Linux程序包管理之yum及源代码安装
第十六章.Linux程序包管理之yum及源代码安装 目录 yum介绍 yum配置文件 yum的repo配置文件中可用的变量 yum命令的使用 使用光盘作为本地yum仓库 如何创建yum仓库 编译安装的 ...
- Linux程序包管理rpm与yum
Linux程序包管理 Linux中软件的安装主要有两种形式:一种是直接下载源代码包自行编译后安装,另一种直接获取rpm软件包进行安装. 程序的组成部分: 二进制程序:程序的主体文件,比如我们运行一个l ...
- Linux 程序包管理-RPM
程序简介: POSIX(Portable Openratin System)跨平台系统:不同操作系统平台的标准C库(glibc)都是遵循POSIX规范的,这样基于标准库开发程序的源代码可以夸平台编译 ...
- Linux程序包管理初步-rpm的使用
在Linux系统上,一般而言,对于程序包管理器来说分为三类: debian:dpt,dpkg; (程序包后缀.deb) rhel:rpm (程序包后缀.rpm) suse:rp ...
- Linux 程序包管理-YUM
前端工具YUM管理程序包: rpm管理软件虽然方便,但是需要手工解决软件包的依赖关系:很多时候安装一个软件需要首先安装一个或多个(有时多达上百个)其它软件,手工解决很复杂:使用yum可以解决这个问题 ...
- Linux程序包管理之rpm
rpm简介 rpm( Red Hat Package Manager )是一个开放的软件包管理系统.它工作于Red Hat Linux及其他Linux系统,成为Linux中公认的软件包管理标准. rp ...
- Linux程序包管理.md
rpm 简介 RPM包管理员(简称RPM,全称为The RPM Package Manager)是在Linux下广泛使用的软件包管理器.RPM此名词可能是指.rpm的文件格式的软件包,也可能是指其本身 ...
- 【程序包管理】Linux程序包管理之rpm安装总结
rpm简介 rpm( Red Hat Package Manager )是一个开放的软件包管理系统.它工作于Red Hat Linux及其他Linux系统,成为Linux中公认的软件包管理标准. rp ...
- Linux程序包管理初步-yum的使用
何为yum? yum:由yellow dog研发,全称Yellowdog Update Modifier 是rhel系列系统上rpm包管理器的前端工具,可用来自动解决依赖关系,从而更好的实现程序包的安 ...
- 【程序包管理】Linux程序包管理之yum源安装
yum源安装是我们工作中常用的一种方式,它是在Fedora和RedHat以及SUSE中基于rpm的软件包管理器,它可以使系统管理人员交互和自动化地更细与管理RPM软件包,能够从指定的服务器自动下载RP ...
随机推荐
- [UnityShader基础]03.透明度混合
如果要渲染半透明物体,那么就需要用到透明度混合. 需要注意的有这几点: 1.设置标签:Tags { "Queue"="Transparent" "Ig ...
- leetcode49
public class Solution { public IList<IList<string>> GroupAnagrams(string[] strs) { var L ...
- Django02-路由系统urls
一.路由配置系统(URLconf) 分为:静态路由动态路由 1.URL配置 URL配置(URLconf)就像Django所支撑网站的目录.它的本质是URL与该URL调用的视图函数之间的映射表 语法: ...
- C#对接JAVA系统遇到的AES加密坑
起因对接合作伙伴的系统,需要对数据进行AES加密 默认的使用了已经写好的帮助类中加密算法,发现结果不对,各种尝试改变加密模式改变向量等等折腾快一下午.最后网上查了下AES在JAVA里面的实现完整代码如 ...
- Flannel网络插件配置
# ps -ef|grep docker|grep bip FLANNEL_OPTIONS="-ip-masq=true" -ip-masq=true 这个参数的目的是让flann ...
- week06 12 我们准备数据 前端调用rpc 前后端联调一下
用postman发送请求 出现一个问题 我在return结果前 要将数据转换成字典 所以我们用json.dumps()后再json.load()回来 这样就避免了这个问题 因为数据结构的数据 比如li ...
- FTRL的理解
https://blog.csdn.net/ningyanggege/article/details/81133785
- ubuntu安装gitlab-ci-runner、注册
首先信任 GitLab 的 GPG 公钥: curl https://packages.gitlab.com/gpg.key 2> /dev/null | sudo apt-key add - ...
- spark streaming之三 rdd,job的动态生成以及动态调度
前面一篇讲到了,DAG静态模板的生成.那么spark streaming会在每一个batch时间一到,就会根据DAG所形成的逻辑以及物理依赖链(dependencies)动态生成RDD以及由这些RDD ...
- Fedora 25 安装 Bugzilla
最近领导要我们装一个Bugzulla,虽然我们项目已经有了JIRA(我就呵呵),不过我还是找些资料安装了,在此备忘. Bugzilla 是一个开源的缺陷跟踪系统(Bug-Tracking System ...