Liunx学习总结(五)--包管理
包管理简介
Linux 上的应用程序一般是以源码形式或者编译后的二进制格式提供给用户使用。对于以源码形式提供的应用程序,用户需要借助于编译器,自行编译成二进制格式才能使用。而即便是编译后的二进制包,用户也需要根据安装文档将应用程序的二进制程序、库文件、配置文件和帮助文件等文件复制到指定路径下。这个过程十分繁琐。面对这个恼人的问题,Linux 业界人士怎么能忍得下去,千呼万唤始出来,终于诞生了程序包管理器。
有了程序包管理器之后,应用程序提供者可将应用程序的二进制程序、库文件。配置文件、帮助文件等以特定形式组织成一个或有限几个“包”文件(不同程序包管理器的组织形式不同)。用户可下载打包好的程序包文件,然后通过程序包管理器的命令实现应用程序的安装,而不再需要手动的复制程序文件到指定的路径下,这些工作都交由程序包管理器来完成了。
最开始研发出的程序包管理器是 Debian 的dpt,全名是 Debian Package Tool,后更名为 dpkg,其程序包的后缀是.deb。后来 RedHat 也研发出了程序包管理器 RedHat Package Manager,简称rpm,其程序包后缀为.rpm。在RedHat的推动下,rpm成为了Linux程序包管理器中的事实上的标准。RedHat对强大后的rpm进行了重新的解释,rpm的全称变为“rpm is Package Manager”。SUSE使用的程序包管理器也是rpm,但它的程序包与RedHat的是不兼容的。此外,Gentoo也有自己的程序包管理器ports。
包基础知识
包名
一个 rpm 包的名称分为包全名和包名,包全名如 httpd-2.2.15-39.el6.centos.x86_64.rpm,包全名中各部分的意义如下:
httpd 包名
2.2.15 版本号,版本号格式[ 主版本号.[ 次版本号.[ 修正号 ] ] ]
39 软件发布次数
el6.centos 适合的操作系统平台以及适合的操作系统版本
x86_64 适合的硬件平台,硬件平台根据cpu来决定,有i386、i586、i686、x86_64、noarch或者省略,noarch或省略表示不区分硬件平台
rpm 软件包后缀扩展名
使用 rpm 工具管理包时,如果要操作未安装的包,则使用包全名,如安装包,查看未安装包的信息等;如果要操作已安装的 rp m包,则只需要给定其包名即可,如查询已装包生成了哪些文件,查看已装包的信息等。
而对于 yum 工具来说,只需给定其包名即可,若有需要,再指定版本号,如明确指明要安装1.6.10版本的 tree 工具,如:
yum install tree-1.6.10
主包和子包
对于一个程序而言,在制作rpm包时,很多时候都将其按功能分割成多个子包,如客户端程序包、服务端程序包等。
以 mysql为例,它分有以下几个包:
* mysql-server.x86_64
* mysql.x86_64
* mysql-bench.x86_64
* mysql-libs.x86_64
* mysql-devel.x86_64
其中 mysql-server.x86_64 是提供服务的主包,mysql.x86_64 是客户端主包,mysql-bench 是用于对 MySQL 进行压力测试的包,mysql-libs 和 mysql-devel 分别是库文件包和头文件包。后两者是提供给其他需要联合 mysql 的程序使用的,仅就实现 mysql 服务而言,只需安装 mysql-serve r即可。
而源码编译安装的包会包含所有功能包,也就是说编译安装一个程序后,它的客户端工具、服务提供程序、库文件、头文件等等都已经安装了。
rpm 管理包工具安装、升级和卸载的功能都很少使用。对于安装来说,它需要人为解决包的依赖关系,这是极其令人恶心的事对于升级来说,基本上都会使用 yum 工具进行安装和升级,而卸载行为在 Linux上很少出现,大不了直接覆盖重装。所以我们这里重点关注 yum 管理包工具的使用。
yum 管理包
yum( Yellow dog Updater, Modified)是一个在 Fedora 和 RedHat 以及 SUSE 中的 Shell 前端软件包管理器。基於 RPM 包管理,能够从指定的服务器自动下载 RPM 包 并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。
/etc/yum.conf
/etc/yum.conf是yum的默认文件,里面配置的也是全局默认项。
[root@server2 ~]# cat /etc/yum.conf
[main]
cachedir=/var/cache/yum/$basearch/$releasever # 缓存目录
keepcache=0 # 是否保留缓存,设置为1时,安装包时所下载的包将不会被删除
debuglevel=2 # 调试信息的级别
logfile=/var/log/yum.log # 日志文件位置
exactarch=1 # 设置为1将只会安装和系统架构完全匹配的包
obsoletes=1 # 是否允许更新旧的包
gpgcheck=1 # 是否要进行gpg check
plugins=1 # 是否允许使用yum插件
installonly_limit=5
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release # 指定基准包,yum会根据这个包判断发行版本
yum 仓库配置
配置文件为 /etc/yum.conf 和 /etc/yum.repos.d/中的".repo"文件,其中 /etc/yum.conf配置的是仓库的默认项,一般配置yum源都是在 /etc/yum.repos.d/*.repo中配置。注意,该目录中任意repo文件都会被读取。
默认 /etc/yum.repos.d/下会有以下几个仓库文件,除了CentOS-Base.repo,其他的都可以删掉,基本没用。
[marklogzhu@VM_0_15_centos /]$ ls /etc/yum.repos.d/
CentOS-Base.repo CentOS-Epel.repo
repo文件的配置格式如下:
[root@xuexi yum.repos.d]# vim CentOS-Base.repo
[base] # 仓库ID,ID必须保证唯一性
name # 仓库名称,可随意命名
mirrorlist # 该地址下包含了仓库地址列表,包含一个或多个镜像站点,和baseurl使用一个就可以了
#baseurl # 仓库地址。网络上的地址则写网络地址,本地地址则写本地地址,格式为“file://”后接路径,如file:///mnt/cdrom
gpgcheck=1 # 指定是否需要签名,1表示需要,0表示不需要
gpgkey= # 签名文件的路径
enable # 该仓库是否生效,enable=1表示生效,enable=0表示不生效
cost= # 开销越高,优先级越低
【repo配置文件中可用的宏:】
$releasever:程序的版本,对Yum而言指的是redhat-relrase版本。只替换为主版本号,如Redhat6.5 则替换为6
$arch:系统架构
$basharch:系统基本架构,如i686,i586等的基本架构为i386
$YUM0-9:在系统定义的环境变量,可以在yum中使用
修改 yum 默认仓库
因为某些因素,访问国外的资源有时候很慢,我们这边配置成国内的仓库源,这里采用网易 yum 源。
- 备份 /etc/yum.repos.d/CentOS-Base.repo 文件
sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
- 下载对应版本 repo 文件, 放入 /etc/yum.repos.d/
- CentOS5 :http://mirrors.163.com/.help/CentOS5-Base-163.repo
- CentOS6 :http://mirrors.163.com/.help/CentOS6-Base-163.repo
- CentOS7 :http://mirrors.163.com/.help/CentOS7-Base-163.repo
sudo wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
sudo mv CentOS7-Base-163.repo etc/yum.repos.d/CentOS-Base.repo
- 生成缓存
yum clean all
yum makecache
yum 命令
语法
yum [options] [command] [package ...]
- options:可选,选项包括-h(帮助),-y(当安装过程提示选择全部为"yes"),-q(不显示安装的过程)等等。
- command:要进行的操作。
- package操作的对象。
常用命令
- 1.列出所有可更新的软件清单命令:yum check-update
- 2.更新所有软件命令:yum update
- 3.仅安装指定的软件命令:yum install <package_name>
- 4.仅更新指定的软件命令:yum update <package_name>
- 5.列出所有可安裝的软件清单命令:yum list
- 6.删除软件包命令:yum remove <package_name>
- 7.查找软件包 命令:yum search
- 8.清除缓存命令:
- yum clean packages: 清除缓存目录下的软件包
- yum clean headers: 清除缓存目录下的 headers
- yum clean oldheaders: 清除缓存目录下旧的 headers
- yum clean, yum clean all (= yum clean packages; yum clean oldheaders) :清除缓存目录下的软件包及旧的headers
实例
安装 vim
[marklogzhu@VM_0_15_centos /]$ sudo yum install vim
[sudo] password for marklogzhu:
Loaded plugins: fastestmirror, langpacks
epel | 3.2 kB 00:00:00
(1/2): epel/7/x86_64/updateinfo | 933 kB 00:00:00
(2/2): epel/7/x86_64/primary | 3.6 MB 00:00:01
Determining fastest mirrors
epel 12647/12647
Nothing to do
Liunx学习总结(五)--包管理的更多相关文章
- Linux学习笔记(五) 账号管理
1.用户与组账号 用户账号:包括实际人员和逻辑性对象(例如应用程序执行特定工作的账号) 每一个用户账号包含一个唯一的用户 ID 和组 ID 标准用户是系统安装过程中自动创建的用户账号,其中除 root ...
- Linux学习之RPM包管理-yum管理(十七)
Linux学习之RPM包管理-yum管理 目录 IP地址配置 网络yum源 yum命令 光盘yum源搭建 IP地址配置 IP+子网掩码就可以在局域网(内网)使用. IP+子网掩码+网关+DNS就可以访 ...
- Linux学习之RPM包管理-rpm命令管理(十六)
Linux学习之RPM包管理-rpm命令管理 目录 简介 RPM包依赖性 包全名与包名 rpm软件包安装 rpm软件包卸载 升级降级rpm软件包 rpm软件包的查询 rpm软件包校验 简介 RPM是R ...
- linux 学习笔记 TAR包管理
>显示gong.tar 文件内容 #tar tf gong.tar ./epuinfo.txt ./smart/ ./smart/smartsuite-2.1-2.i386.rpm ./smar ...
- Git学习笔记五--分支管理
为什么要引入分支? 分支在实际中有什么用呢?假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码,如果立刻提交,由于代码还没写完,不完整的代码库会导致别人不能干活了.如果等代码全部 ...
- Linux System Programming 学习笔记(五) 进程管理
1. 进程是unix系统中两个最重要的基础抽象之一(另一个是文件) A process is a running program A thread is the unit of activity in ...
- Liunx学习笔记(三) 文件权限
一.文件权限 1.查看文件权限 (1)文件权限 在 Linux 中对于文件有四种访问权限,列举如下: 可读取:r,Readable 可写入:w,Writable 可执行:x,Execute 无权限:- ...
- Linux学习笔记(六) 进程管理
1.进程基础 当输入一个命令时,shell 会同时启动一个进程,这种任务与进程分离的方式是 Linux 系统上重要的概念 每个执行的任务都称为进程,在每个进程启动时,系统都会给它指定一个唯一的 ID, ...
- 【程序包管理】篇章3:CentOS平台下软件包安装方法总结
1.软件包安装前的学习:程序包管理的基础知识 2.程序包安装的方法介绍: rpm文件的二进制包安装:Linux程序包管理之rpm安装总结 yum安装:Linux程序包管理之yum源安装 链接:本地yu ...
随机推荐
- [PTA] 数据结构与算法题目集 6-8 求二叉树高度 & 6-9 二叉树的遍历
6.8 二叉树高度 int GetHeight(BinTree BT) { if (BT == NULL) return 0; int leftH = GetHeight(BT->Left); ...
- pymysql指南
1 引言 mysql应该说是如今使用最为普遍的数据库了,没有之一,而Python作为最为流行的语言之一,自然少不了与mysql打交道,pymysql就是使用最多的工具库了. 2 创建库.表 我们先从创 ...
- linux初学者-磁盘配额篇
linux初学者-磁盘配额篇 在使用磁盘时,只要有权限,不管什么用户都可以在其中写入数据,但是如果是多人在一个磁盘中写入数据,就会出现争议,如果一个用户将磁盘空间用完,那么其他人无法再使用.如下图所示 ...
- UML同一建模语言
结构型图:描述系统静态结构,显示系统类之间的静态关系. 行为型图:描述系统的动态属性,显示系统元素如何协作产生满足要求的系统行为. 类图分类名,属性清单,方法清单,性质清单几层 类之间的关系:1 一般 ...
- 浅析java中的语法糖
概述 编译器是一种计算机程序, 它主要的目的是将便于人编写.阅读.维护的高级计算机语言所写的源代码程序, 翻译为计算机能解读.运行的低阶机器语言的程序, 即可执行文件.而 javac 就是java语言 ...
- tab选项卡代码
$('.case_header ul li').click(function(){ $(this).addClass('active').siblings().removeClass('active' ...
- 分布式ID系列(2)——UUID适合做分布式ID吗
UUID的生成策略: UUID的方式能生成一串唯一随机32位长度数据,它是无序的一串数据,按照开放软件基金会(OSF)制定的标准计算,UUID的生成用到了以太网卡地址.纳秒级时间.芯片ID码和许多可能 ...
- 3、大型项目的接口自动化实践记录----开放API练习
开始做实际项目前,先拿个网上的简单API练下手 一.API说明: 接口信息 接口名:京东获取单个商品价格 地址:http://p.3.cn/prices/mgets 入参:skuids=J_商品ID& ...
- Usaco Training [1.3] wormhole
传送门 解题要素:代码能力 解题步骤:理解题意 - >搜索枚举所有可能的配对情况 - >判断冲突并求解 - >调试 一. 理解题意 这里讲几个不容易理解的点: 1. +x方向 即向右 ...
- Shiro权限管理框架(三):Shiro中权限过滤器的初始化流程和实现原理
本篇是Shiro系列第三篇,Shiro中的过滤器初始化流程和实现原理.Shiro基于URL的权限控制是通过Filter实现的,本篇从我们注入的ShiroFilterFactoryBean开始入手,翻看 ...