程序包管理:

常见的软件包管理器

Debian系列:dpkg (DebianPackager) 管理 以.deb 结尾的软件包。

“Debian”的“Linux ”发行版都使用 “dpkg”,例如 “Ubuntu”、“Knoppix ”等

RedHat系列: rpm ( RPM isPackage Manager ) 管理 以.rpm 结尾的软件包。

以前是RedHat Package Manager的缩写,现在包括OpenLinux、S.u.S.E.以及TurboLinux等

Linux的分发版本都有采用该包管理器,算是公认的行业标准了。

程序包的组成部分:

(1)二进制程序:可执行文件

通常安装在 /bin、/sbin、/usr/bin、/usr/sbin、/usr/local/bin, /usr/local/sbin 目录之下

(2)库文件:程序的运行依赖于库文件,Linux的核心库是glibc,某些软件也会将自己的核心文件封装成库文件

通常安装在 /usr/lib, /usr/lib64, /var/lib, /usr/local/lib 目录下分为静态库和动态库,静态库通常以".a"结尾,动态库通常以".so"结尾

(3)配置文件:通常是纯文本文件,用来定义程序的特性。

通常存放在:/etc, /usr/etc, /usr/local/etc 或指定的路径下(配置文件一般无需额外配置)

(4)帮助文件:man手册、info文件、README

man 的配置文件: /etc/man.config

包管理器的功能:
   打包、安装、卸载、升级、查询、校验;

rpm包命名机制:

格式:name-VERSION-RELEASE.ARCH.rpm

例:

bash-4.2.4-1.el7.x86_64.rpm
        bash-devel-4.2.4-1.el7.x86_64.rpm

Version:major.minor.release——主版本号.次版本号.发行号

主版本号:是程序的主要功能发生了巨大的改变时才使用

次版本号:是在程序的部分功能有重大改变时使用;

发行号:是在修复了一些bug,调整了一些属性后进行的升级。

RELEASE: rpm的制作发行号和源程序本身没有关系,并且这个Release号可能会标明所适用的操作系统平台。

ARCH:只运行在那种系统架构上。例i686、x86_64、amd64

RPM分包机制:

testapp-VERSION.tar.gz

核心包:testapp-VERSION
     支包:testapp-devel-VERSION

VERSION:major.minor.release
      base-4.2.4.tar.gz

包和包之间:有可能存在依赖关系:

rpm数据库:/var/lib/rpm/

获取rpm包方式:
   1、发行版提供的程序包;
   2、Fedora-EPEL
   3、项目的官方站点
   4、搜索引擎
    http://rpmfind.net
    http://rpm.pbone.net
    http://pkgs.org

CentOS识别光盘用的设备文件:/dev/cdrom,

基于rpm命令实现程序包管理:
  安装:
       rpm {-i|--install} [install-options] PACKAGE_FILE ...
        -i:install
        -v:显示详细过程,-vv, -vvv
        -h:用#号显示程序包安装进度

每个rpm包都提供一个或多个capabilities

--nodeps:忽略依赖关系安装
    --replacepkgs:重装程序包

实例:安装程序包

[root@centos6 Packages]# rpm -ivh zsh-4.3.11-4.el6.centos.x86_64.rpm
Preparing...                ########################################### [100%]1:zsh                    ########################################### [100%]
[root@centos6 Packages]# rpm -q zsh
zsh-4.3.11-4.el6.centos.x86_64

实例:忽略依赖关系安装

[root@centos6 Packages]# rpm -ivh php-5.3.3-40.el6_6.x86_64.rpm
error: Failed dependencies:
php-cli(x86-64) = 5.3.3-40.el6_6 is needed by php-5.3.3-40.el6_6.x86_64
php-common(x86-64) = 5.3.3-40.el6_6 is needed by php-5.3.3-40.el6_6.x86_64
[root@centos6 Packages]# rpm -ivh --nodeps php-5.3.3-40.el6_6.x86_64.rpm
Preparing...                ########################################### [100%]1:php                    ########################################### [100%]

实例:不卸载重新安装程序包

[root@centos6 Packages]# rpm -ivh php-5.3.3-40.el6_6.x86_64.rpm
error: Failed dependencies:
php-cli(x86-64) = 5.3.3-40.el6_6 is needed by php-5.3.3-40.el6_6.x86_64
php-common(x86-64) = 5.3.3-40.el6_6 is needed by php-5.3.3-40.el6_6.x86_64
[root@centos6 Packages]# rpm -ivh --nodeps php-5.3.3-40.el6_6.x86_64.rpm
Preparing...                ########################################### [100%]1:php                    ########################################### [100%]

升级:

rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
       rpm {-F|--freshen} [install-options] PACKAGE_FILE ...

-Uvh: 如果有旧版程序包,则升级之;如果没有,则安装之;
        -Fvh: 如果有旧版程序包,则升级之;如果没有,则不安装;

--nodeps:忽略依赖关系
        --oldpackage:降级;安装现有程序包的旧版本程序包时使用
        --force:强制

卸载:
         rpm {-e|--erase} [--nodeps] [--noscripts] [--notriggers] [--test] PACKAGE_NAME ...

实例:卸载程序包

[root@centos6 Packages]# rpm -ivh zsh-4.3.11-4.el6.centos.x86_64.rpm
Preparing...                ########################################### [100%]1:zsh                    ########################################### [100%]
[root@centos6 Packages]# rpm -q zsh
zsh-4.3.11-4.el6.centos.x86_64
[root@centos6 Packages]# rpm -e zsh
[root@centos6 Packages]# rpm -q zsh
package zsh is not installed

查询:

rpm {-q|--query} [select-options] [query-options]

查询选项:
          -qa: 查询本机已经安装的所有程序包;

-qf:/PATH/TO/SOMEFILE: 查询此处的文件由哪个程序包安装生成;

-qc: 查询指定程序包安装生成的配置文件

-qd: 查询指定的程序包安装生成的文档

-qi: 查询指定的程序包的相关信息;

-ql: 查询程序包安装生成的所有文件的列表;

-q --scripts:查询程序包相关的脚本:

preinstall: 安装前脚本
           postinstall:安装后脚本
           preuninstall: 卸载前脚本
           postuninstall: 卸载后脚本

-p: 查询针对是未安装的程序包文件;

实例:查询本机已经安装的程序包

[root@centos6 Packages]# rpm -qa | grep php
php-common-5.3.3-46.el6_6.x86_64
php-cli-5.3.3-46.el6_6.x86_64

实例:查询此处的文件由哪个程序包安装生成

[root@centos6 Packages]# rpm -qf /etc/fstab
setup-2.8.14-20.el6_4.1.noarch

实例:查询指定程序包安装生成的配置文件

[root@centos6 Packages]# rpm -qc zsh-4.3.11-4.el6.centos.x86_64
/etc/skel/.zshrc
/etc/zlogin
/etc/zlogout
/etc/zprofile
/etc/zshenv
/etc/zshrc

实例:查询程序包安装生成的所有文件的列表

[root@centos6 Packages]# rpm -ql zsh-4.3.11-4.el6.centos.x86_64 | wc -l
927

实例:查询指定的程序包安装生成的文档

[root@centos6 Packages]# rpm -qd zsh-4.3.11-4.el6.centos.x86_64 | wc -l
35

实例:查询程序包相关的脚本

[root@centos6 Packages]# rpm -q --scripts  zsh-4.3.11-4.el6.centos.x86_64
postinstall scriptlet (using /bin/sh):
if [ ! -f /etc/shells ] ; thenecho "/bin/zsh" > /etc/shells
elsegrep -q "^/bin/zsh$" /etc/shells || echo "/bin/zsh" >> /etc/shells
fi
if [ -f /usr/share/info/zsh.info.gz ]; then
# This is needed so that --excludedocs works.
/sbin/install-info /usr/share/info/zsh.info.gz /usr/share/info/dir \--entry="* zsh: (zsh).An enhanced bourne shell."

实例:查询程序包的描述信息

[root@centos6 Packages]# rpm -qi zsh
Name        : zsh                          Relocations: (not relocatable)
Version     : 4.3.11                            Vendor: CentOS
Release     : 4.el6.centos                  Build Date: Fri 24 Jul 2015 05:41:25 PM CST
Install Date: Sun 13 Sep 2015 01:52:52 PM CST      Build Host: c6b8.bsys.dev.centos.org
Group       : System Environment/Shells     Source RPM: zsh-4.3.11-4.el6.centos.src.rpm
Size        : 5283457                          License: BSD
Signature   : RSA/SHA1, Sat 25 Jul 2015 04:41:32 AM CST, Key ID 0946fca2c105b9de
Packager    : CentOS BuildSystem <http://bugs.centos.org>
URL         : http://zsh.sunsite.dk/
Summary     : A powerful interactive shell
Description :
The zsh shell is a command interpreter usable as an interactive login
shell and as a shell script command processor.  Zsh resembles the ksh
shell (the Korn shell), but includes many enhancements.  Zsh supports
command line editing, built-in spelling correction, programmable
command completion, shell functions (with autoloading), a history
mechanism, and more.
Name:软件名称
Relocations:在安装时是否可指定安装路径(重定位)
Version:版本号
Vendor:提供商
Release:rpm的发行号
BuildDate:rpm包的制作日期
InstallDate:安装时间
Build Host:在哪个系统上制作的rpm包
Group:包组
SourceRPM:源码的rpm包
Size:包大小
License:许可证
Signature:数字签名(验证来源合法性和包完整性)
Packager:包的制作者
URL:获取源码的网址
Summary:简要说明
Description:略详细的说明

校验:

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/TO/KEY_FILE
       校验:rpm -K /PATH/TO/RPM_FILE

实例:导入公钥验证软件包的来源合法性和完整性

[root@centos6 Packages]# rpm --import /root/package/RPM-GPG-KEY-CentOS-6
[root@centos6 Packages]# rpm -K zsh-4.3.11-4.el6.centos.x86_64.rpm
zsh-4.3.11-4.el6.centos.x86_64.rpm: rsa sha1 (md5) pgp md5 OK

前端管理器

Debian:apt-get

RedHat:yum (Yellowdog Update Modifed)

dnf:下一代解决依赖关系的程序包前端管理器

YUM: Yellowdog Updater Modified

yum repositories:YUM 仓库
  文件服务器:
   ftp://hostname/PATH/TO/REPO
   http://hostname/PATH/TO/REPO
   file:///PATH/TO/REPO

yum程序的配置文件:
  /etc/yum.conf

[root@CentOS-6 ~]# cat /etc/yum.conf
[main]
cachedir=/var/cache/yum/$basearch/$releasever   #缓存目录
keepcache=0   #删除缓存中已安装的rpm包
debuglevel=2   #调试级别
logfile=/var/log/yum.log  #日志文件
exactarch=1   #必须跟当前主机的版本完全精确匹配才安装
obsoletes=1   #过去的,废弃的
gpgcheck=1   #是否检验其来源合法性及数据包完整性
plugins=1   #是否支持插件
installonly_limit=5   #
bugtracker_url=   #追踪bug保存的位置
distroverpkg=centos-release

定义全局配置:对所有仓库都适用的配置

/etc/yum.repos.d/*.repo
   一个文件通常用于一个或一组功能相近或相关的仓库

定义一个仓库指向:
    [REPO_ID]
    name=仓库描述信息
    baseurl=仓库访问路径
    # mirrorlist=SCHEME://HOSTNAME/PATH/TO/MIRROR_LIST_FILE
    enabled={1|0}是否生效
    gpgcheck={1|0}是否校验
    gpgkey=公钥文件(可以放在本地也可放在远程服务器)
    cost=定义次仓库的开销默认为1000

定义仓库指向可用变量:
    $releasever: 引用当前系统的主版本号;
    $basearch: 当前系统的基本架构;
     i386, i486, i586, i686: i386

http://mirrors.magedu.com/CentOS/$releasever/os/$basearch

yum命令:
  yum [options] [command] [package ...]

命令:
    安装:install
    卸载:remove
    升级:update
    查询:
     check-update:检查可升级的程序包

info :列出包的详细信息
     search KEYWORD:基于关键字搜索程序包
     list all|installed|availiable:列出rpm包

(列出所有|列出已安装的|尚未安装可以安装的包)
     provides /PATH/TO/SOMEFILE: 查询指定文件由哪个包安装生成
    重新安装:reinstall
    降级:downgrade
    清理缓存:clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
    生动生成缓存:makecache

包组:
     grouplist:列出所有包组
     groupinfo "GRP_NAME":显示包组相关信息
     groupinstall "GRP_NAME":安装包组
     groupremove "GRP_NAME":卸载包组

三个跟开发相关的包组:

Desktop Platform Development :有图形程序时需安装此组

Server Platform Development :服务器平台开发包组

Developmetn tools:开发包组

仓库:

repolist [all|enabled|disabled]
     repoinfo [all|enabled|disabled]

如何使用光盘当做本地仓库:
  挂载光盘至某目录
  定义仓库,使用file:///指明其访问路径;

创建本地仓库:
  yum install createrepo

createrepo /PATH/TO/RPMFILES/

实例一:建立阿里云YUM仓库

[root@centos6 yum.repos.d]# mv CentOS-Base.repo CentOS-Base.repo.bak 重命名之前仓库
[root@centos6 yum.repos.d]# vim CentOS-Base-aliyun.repo 进入vi编辑器新建仓库
[CentOS6Base]
name=CentOS 6 aliyum
baseurl=http://mirrors.aliyun.com/centos/6/os/x86_64/
enable=1
gpgcheck=0
[root@centos6 yum.repos.d]# yum repolist  查询系统上可使用的仓库
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
CentOS6Base                                                        | 3.7 kB     00:00
CentOS6Base/primary_db                                             | 4.6 MB     00:01
repo id                                 repo name                                   status
CentOS6Base                             CentOS 6 aliyum                             6,575
repolist: 6,575

实例二:安装和卸载程序包

[root@centos6 yum.repos.d]# yum install finger
Loaded plugins: fastestmirror
Setting up Install Process
Loading mirror speeds from cached hostfile
Resolving Dependencies
--> Running transaction check
---> Package finger.x86_64 0:0.17-40.el6 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
==========================================================================================Package           Arch              Version                 Repository              Size
==========================================================================================
Installing:finger            x86_64            0.17-40.el6             CentOS6Base             22 k
Transaction Summary
==========================================================================================
Install       1 Package(s)
Total download size: 22 k
Installed size: 27 k
Is this ok [y/N]: y
Downloading Packages:
finger-0.17-40.el6.x86_64.rpm                                      |  22 kB     00:00
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Warning: RPMDB altered outside of yum.Installing : finger-0.17-40.el6.x86_64                                              1/1 Verifying  : finger-0.17-40.el6.x86_64                                              1/1
Installed:finger.x86_64 0:0.17-40.el6
Complete!
[root@centos6 yum.repos.d]# yum remove finger
Loaded plugins: fastestmirror
Setting up Remove Process
Resolving Dependencies
--> Running transaction check
---> Package finger.x86_64 0:0.17-40.el6 will be erased
--> Finished Dependency Resolution
Dependencies Resolved
==========================================================================================Package           Arch              Version                Repository               Size
==========================================================================================
Removing:finger            x86_64            0.17-40.el6            @CentOS6Base             27 k
Transaction Summary
==========================================================================================
Remove        1 Package(s)
Installed size: 27 k
Is this ok [y/N]: u^Hy
Is this ok [y/N]: y
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running TransactionErasing    : finger-0.17-40.el6.x86_64                                              1/1 Verifying  : finger-0.17-40.el6.x86_64                                              1/1
Removed:finger.x86_64 0:0.17-40.el6
Complete!

实例三:使用光盘建立本地YUM仓库

挂在光驱至某目录

定义仓库使用file:///指明访问路径

1、插入光盘并挂载
[root@centos6 ~]# mount /dev/cdrom /media/cdrom/
mount: block device /dev/sr0 is write-protected, mounting read-only
2、在/etc/yum.repo.d/目录下创建repo配置文件local-media.repo,并编辑
[CentOS_6_ISO]
name=CentOS 6.7 x86_64 release iso file
baseurl=file:///media/cdrom/
enabled=1
gpgcheck=1
gpgky=file:///RPM-GPG-KEY-CentOS-6
3、使用yum repolist验证
[root@centos6 yum.repos.d]# yum repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
CentOS_6_ISO                                                       | 4.0 kB     00:00 ...
CentOS_6_ISO/primary_db                                            | 4.6 MB     00:00 ...
repo id                        repo name                                            status
CentOS6Base                    CentOS 6 aliyum                                      6,575
CentOS_6_ISO                   CentOS 6.7 x86_64 release iso file                   6,575
repolist: 13,150

转载于:https://blog.51cto.com/liulongthe/1693722

9-10 rpm程序包管理和YUM仓库相关推荐

  1. RPM包管理和YUM仓库构建

    RPM包管理(rpm pakages manager) 软件包的类型 分类 安装 版本 rpm包 预先编译打包,安装简单 版本较低 源码包 手动编译打包,安装步骤繁琐 版本最新 二进制包 解压即可用 ...

  2. RPM包管理和YUM仓库的使用

    文章目录 RPM工具管理RPM包 1.RPM包管理 1.1.rpm安装 1.2RPM包查询 1.3RPM包升级 1.4RPM包卸载 1.5RPM包小结 YUM工具管理RPM包 YUM软件仓库管理 1. ...

  3. Linux 自定义 RPM 包及制作 YUM 仓库

    目录 一.定制 rpm 包概述 1.1 什么是定制 rpm 包 1.2 为什么要定制 rpm 包 1.3 如何定制 rpm 包 二.安装 FPM 工具 2.1 我在安装过程出现如下错误:ERROR: ...

  4. CentOS7下搭建yum仓库

    服务端配置: 1.开启yum缓存 sed -i 's#keepcache=0#keepcache=1#g' /etc/yum.conf[root@control /]# cat /etc/yum.co ...

  5. CentOS7常用yum仓库操作及安装

    日常使用到的YUM仓库作整理,包括:YUM仓库常用命令.搭建本地YUM仓库.常见YUM仓库(CentOS-Base.EPEL.nux-dextop.elrepo.MySQL.GoogleChrome. ...

  6. Linux搭建YUM仓库安装软件(Centos 7.5)

    简介:在搭建yum仓库前,应先对Linux系统有一个简单的认识,要理解挂载的概念,对Linux系统的文件对应的目录有一定的认识. 在工作中,我们通过rpm安装软件,经常会出现不能一步到位,还需要好多的 ...

  7. (转)搭建企业内部yum仓库(centos6+centos7+epel源)

    搭建企业内部yum仓库(centos6+centos7+epel源) 原文:https://www.cnblogs.com/nulige/p/6081192.html https://www.linu ...

  8. linux yum仓库制作,yum仓库搭建之RPM包制作

    常见的软件安装方式有以下几种 1.yum安装,可自动解决依赖,但不能自定义软件安装位置 2.编译安装,可指定安装路径,指定装模块,但编译参数冗长,且耗时较长,不能解决依赖问题. 3.rpm安装,安装速 ...

  9. RPM软件包管理 、Yum软件包仓库

    一.环境准备 开启CentOS7虚拟机 1.将光盘光盘镜像文件,放到虚拟的光驱设备 2.建立一个目录,进行挂载 [root@localhost ~]# ls -l /dev/cdrom lrwxrwx ...

最新文章

  1. 第三周项目三-输出星号图(2)
  2. 键盘控制事件应用教程大全
  3. 通过javaMail API 发送邮件
  4. java IO(输入输出) 字符流
  5. JS内置方法(Array)
  6. UVA455 - Periodic Strings(周期串)
  7. 使用 CloudFlare CDN 自定义节点加速网站
  8. Protel DXP 2004 SP3_SP4 注册机
  9. vld检测不输出_原创干货 | 基于机器学习的webshell检测踩坑小记
  10. python傅里叶变换相位谱图_图像傅里叶变换的幅度谱、相位谱以及双谱重构原图像...
  11. 约瑟夫 java_约瑟夫问题 java 实现详解
  12. 如何看待腾讯市值(按 2012 年 8 月 17 日股价)超过 Facebook?
  13. uWSGI, Gunicorn负载服务器怎么选
  14. 网络编程(五) ———— 万字详解TCP协议
  15. 【Navicat】Navicat Premium12 下载、安装、激活、过期解决方法 —— 永久有效
  16. 微信健身房小程序开发源码设计方案
  17. github使用指南(史上最全)
  18. CentOS 8.2云服务器定时运行脚本
  19. 【高数】两类曲线积分的联系
  20. matlab 雷诺,MATLAB在雷诺实验中的简单应用

热门文章

  1. eclipse中开发python
  2. 03Spring_bean的创建和作用域以及生命周期
  3. andorid service 本地服务
  4. MySQL服务启动脚本
  5. Source Insight 有用设置配置
  6. VMware虚拟化--ESXi安装时考虑因素
  7. 上周新闻回顾:Vista麻烦不断 Office波澜再起(2.26-3.4)
  8. 更换ubuntu软件源的方法
  9. 前端工程化系列[02]-Grunt构建工具的基本使用
  10. kubernetes之kubedns部署