我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Linux的包管理工具介绍

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Linux的包管理工具介绍

 概述:

     本章内容:软件的运行环境,软件包基础,rpm包管理,yum管理,定制yum仓库,编译安装

一、软件运行环境 

 1.API:Application Programming Interface (应用程序开发接口)
   POSIX:Portable OS(国际标准)
   程序源代码–> 预处理–> 编译–> 汇编–> 链接
       静态编译:
       共享编译:.so
   ABI:Application Binary Interface(应用二进制程序接口)
        Windows与Linux不兼容
        linux:文件格式:ELF(Executable and Linkable Format)
        win:文件格式:exe,msl PE(Portable Executable)
   库级别的虚拟化:
        Linux: WINE(提供模拟windows的库,运行win环境)
        Windows: Cywin(提供linux的运行环境)
        
2.开发语言
   系统级开发
        C/C++(依赖于c库)
        httpd,nginx,vsftpd,go
   应用级开发
        java(依赖于jvm虚拟机)
        Python(openstack云站),php,perl(依赖于per解释器),ruby
        
3.程序格式:
        c/c++
        源代码:文本格式的程序代码;
        编译开发环境:编译器,头文件,开发库
        二进制格式:文本格式的程序代码–>编译器–>二进制格式(二进制程序、库文件、配置文件、帮助文件)
    java/Python
        源代码:编译能够在其虚拟机(jvm/pvm)运行的格式;
        开发环境:编译器、开发库
        二进制
    项目构建工具
        c/c++:make      jave:maven


二、包管理

1.二进制应用程序的组成部分:
        二进制文件、库文件、配置文件、帮助文件
        
2.程序包管理:
        源代码–>目标二进制格式(二进制程序、库文件、配置文件、帮助文件)–>组织成为一个或有限几个“包文件”(安装,升级,卸载,查询,校验)
    程序包管理器:
        deblan: dpt,dpkg  以".deb"后缀
        redhat: rpm (redhat package manager) 以 ".rpm"后缀 
        S.u.S.E:rpm, ".rpm"命令
        
3.包命令格式
    源代码:
         name-VERSION.tar.gz|bz2|xz
         VERSION: major(主版本号).minor(次版本号).release(发行号)
    rpm包命名格式:
         name-VERSION-release.arch.rpm
         VERSION: major.minor.release(rpm包发行号)
         changelog文档(内容修复改进的相关文档)
         例:bash-4.2.46-19.el7.x86_64.rpm
         release:release.OS
    常见的arch:
         x86: i386, i486, i586, i686
         x86_64: x64, x86_64, amd64powerpc: ppc
         跟平台无关:noarch (适用于所有平台)
         
4.包:分类和拆包
         Application-VERSION-ARCH.rpm: 主包
         Application-devel-VERSION-ARCH.rpm  开发子包
         Application-utils-VERSION-ARHC.rpm  其它子包
         Application-libs-VERSION-ARHC.rpm   其它子包
     包之间:可能存在依赖关系,甚至循环依赖
     自动解决依赖包管理前端工具:
         yum:rpm包管理器的前端工具
         apt-get:deb包管理器前端工具
         zypper: suse上的rpm前端管理工具
         dnf: Fedora 18+ rpm包管理器前端管理工具
         
5.库文件
     查看二进制程序所依赖的库文件:
         ldd /PATH/TO/BINARY_FILE
     管理及查看本机装载的库文件:
         ldconfig
         /sbin/ldconfig-p: 显示本机已经缓存的所有可用库文件名及文件路径映射关系
         配置文件:/etc/ld.so.conf, /etc/ld.so.conf.d/*.conf
         缓存文件:/etc/ld.so.cache
         
6.包管理器
     程序包管理器:
         功能:将编译好的应用程序的各组成文件打包一个或几个程序包文件,从而方便快捷地实现程序包的安装、卸载、查询、升级和校验等管理操作
     程序包的组成清单(每个程序包单独实现)
         RPM包内的文件清单
         RPM的元数据,如名称,版本,依赖性,描述等
         安装或卸载时运行的脚本
     数据库(公共)  路径:/var/lib/rpm 
         程序包名称及版本
         依赖关系
         功能说明
         包安装后生成的各文件路径及校验码信息
             
7. 获取程的来源        
             
1)系统发版的光盘或官方的服务器;
CentOS镜像:
          http://mirrors.aliyun.com
          http://mirrors.sohu.com
          http://mirrors.163.com

2) 项目官方站点

3) 第三方组织:
      Fedora-EPEL
      搜索引擎:
          http://pkgs.org
          http://rpmfind.net
          ttp://rpm.pbone.net

4) 自己制作


三、CentOS系统上rpm命令管理程序包:

功能:安装、卸载、升级、查询、校验、数据库维护


1.安装

格式:rpm -i[option] PACKAGE_FILE
选项:
     -i:表示install安装
     -v -vv:表示显示安装过程,后者显示更加详细;
     -h:以#号显示进度条格式;
     -nodeps:忽略依赖关系
     -force:强制动作,注意安装成功后可能不能运行;
     -test:测试安装,作为测试检查
     -nosignature:不检查签名就是来源合法性;
     -nodigest:不检查包完整性;MD5头;
     -noscipts:不执行程序包脚本片断
                注意:rpm自带四类脚本
                          %pre:安装前脚本;   -nopre
                          %post:安装后脚本;  -nopost
                          %preun:卸载前脚本; -nopreun
                          %postun:卸载后脚本;-nopostun
 使用:
       rpm -ivh  PACKAGE_FILE


2.升级

格式: rpm -U|F[optIon] PACAGE_FILE  
选项:
     -U:表示不管软件事先是否存在都要升级,存在就升级,不存在就安装;
     -F:表示软件软件存在就升级,如何不存在,就放弃升级;
     -oldpackage:降级,如果升级之后发现有Bug或者兼容性问题,可以使用此选项回滚到升级前的版本;
     -force:强制动作,注意安装成功后可能不能运行;
     -replacepkgs:注意不能替换配置文件;
     注意:
        (1)不要对kernel做升级操作;支持多kernel并存;可以直接安装;
        (2)修改过的配置升级不会覆盖,升级同新文件,会重命名为file.rpmnew


3.查询:

格式:rpm -q[option] [PACKAGE-NAME|PACKAGE_FILE]
选项:
     -qa:查询系统所有已安装的程序包;
     -qf /path/to/file:查询文件是由那个程序包生成;
     -ql:查询程序生成的文件:
     -qi:查询程序属性信息;
     -qc:查询程序配置文件;
     -qd:查询程序提供的文档
     -q -whatprovides CAPABILITY(功能):查询这种CAPABILITY由那个程序提供;
     -q -whatrequires CAPABILITY:查询这种CAPABILITY被哪些程序包依赖;
     -q -scripts:查询程序包生成的脚本;
     -q -changelog:查询软件历史
     查询未安装的软件包信息,需要加-p选项跟上面的选项结合使用,后面的参数必须是PACKAGE_FILE;
     列如:
         -qpi:查询指定PACKAGE_FILE的程序属性信息;


4.卸载

格式:rpm -e[option] PACKAGE-NAME
选项:
     -vh:显示过程
     -nodeps:忽略依赖
     -noscripts:忽略脚本
     -allmatches:卸载所有匹配指定名称的程序包,也就是说卸载软件名称中包含此名称的所有包;
     -test:测试检查卸载,不是真卸载
 注意:
     卸载会检查依赖关系,如果卸载的软件被其他程序依赖,请谨慎卸载,否则导致其依赖程序无法运行;
     
使用:
       rpm -e  PACKAGE_FILE

 

5.校验

工作原理:校验检查的是软件包来源的合法性和完整性,要想对它们校验检查,必须要有校验机制,这种机制是根据签名和加密实现的,通常发行版的光盘中会有一个包含所有软件特征码的文件,特征码是根据软件包特征提取的,通过单项加密实现的用来校验软件包的完整性,如果软件包在获取途中被修改,在系统中再次提取软件包特征码,跟系统已有的特征码文件比对,不同则判断被攥该,修改过的软件包,根据相同的加密算法提取的特征肯定不同;来源合法性是根据签名实现的;特征码文件被称为公钥;校验是由校验程序完成的,默认rpm命令安装时会调用;
公钥获取:
      官方网站
      系统光盘
      系统配置文件中,这是系统在安装时从安装光盘复制进去的
        系统公钥位置:/etc/pik/rpm-gpg/RPM-GPG-KEY-CentOS-7
导入公钥:
         rpm -import /path/to/pub.key
校验软件:
         rpm -V PACKAGE-NAME:校验安装文件自安装后是否被修改过,根据PMS记录信息判断;
         rpm -K PACKAGE_FILE:对指定未安装的软件包进行手工校验;


6.数据库重建

默认数据库目录位置:/var/lib/rpm
语法格式:
       rpm -initdb     :初始化数据库
       rpm -rebuilddb  :重新构建
       -dbpath=/path/  :指定数据库创建位置;


四、CentOS系统上yum命令管理程序包:


1.yum配置文件

yum repository:yum repo(yum仓库),存储了众多rpm 包及包的相关的元数据文件(放置于特定目录repodata)
文件服务器:
      ftp://
      http://
      file:///
yum 客户端配置文件:
     /etc/yum.conf :为所有仓库提供公共配置,一般不做更改
     /etc/yum.repos.d/*.repo :为仓库的指向提供配置
仓库指向的定义:
     [repositoryID]
      name=Some name for this repository,yum仓库描述
      baseurl=url://path/to/repository/,yum仓库路径,支持上述三种路径
      enabled={1|0},0表示禁用,1表示启用,可以不写表示启用,但是写错enabled会造成禁用
      gpgcheck={1|0},此行不写要检测,0是不检测包,1是检查包
      pgkey=URL
此外假如系统上已经装有检查文本文件/etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7,相当于以上两项
      enablegroups={1|0},包组
      failovermethod={roundrobin|priority},优先级-(默认为:roundrobin,意为随机挑选; cost=默认为1000)



2.yum 命令的用法

格式:yum [options] [command] [package …]

1)显示仓库列表:
    yum repolist [all|enabled|disabled]

2)显示程序包:
    yum list


3)安装程序包(centos7上yum支持补全,因为其bash版本更高):
    yum install package1 [package2] […]   
    yum reinstall package1 [package2] […] (重新安装)

4)升级程序包:
    yum update [package1] [package2] […]   
    yum downgrade package1 [package2] […] (降级)

5)检查可用升级:
    yum check-update

6)卸载程序包:
    yum remove | erase package1 [package2] […]  )


7)查看程序包信息information:
    yum info […]


8)查看指定的特性( 可以是某文件)是由哪个程序包所提供:
    yum provides | whatprovides feature1 [feature2] […],类似于rpm的-qf选项


9)清理本地缓存(yum缓存在主配置文件中有说明即是#cat /etc/yum.conf有相关说明):
安装程序包时,下载的包文件存放于cachedir=/var/cache/yum/$basearch/$releasever中,其中$basearch是硬件架构,$releasever是操作系统版本号
    yum clean [ packages | metadata | expire-cache |rpmdb | plugins | all ]
.
10) 构建缓存:
    yum makecache

11) 搜索:
    yum search string1 [string2] […],以指定的关键字搜索程序包名及summary信息

12) 查看指定包所依赖的capabilities:
    yum deplist package1 [package2] […]

13) 查看yum 事务历史:
        yum历史日志文件:/var/log/yum.log
    #cat /var/log/yum.log也可以查看yum事务历史
    yum history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]

14) 包组管理的相关命令:
单个包的功能有限,为了实现复杂的功能,需要许多包组成包组
    yum groupinstall group1 [group2] […] ,安装包组
    yum groupupdate group1 [group2] […] ,升级包组
    yum grouplist [hidden] [groupwildcard] […] ,查看包组列表
    yum groupremove group1 [group2] […] ,卸载包组
    yum groupinfo group1 […] ,查看包组信息


3. 如何使用光盘当作本地yum 仓库

1) 挂载光盘至某目录,例如/mnt/cdrom
[root@localhost ~]# mkdir /mnt/cdrom
[root@localhost ~]# mount /dev/cdrom /mnt/cdrom 
2) 创建配置文件
[root@localhost ~]# vim /etc/yum.repos.d/yum.repo
[cdrom]
name=yum test
baseurl=file:///mnt/cdrom或者file:///misc/cd
gpgcheck=0
gpgkey=
enabled=1


4. yum 的命令行选项

-nogpgcheck:禁止进行gpgcheck检查
-y:自动回答为“yes”
-q:静默模式
-disablerepo=repoidglob:临时禁用此处指定的repo
-enablerepo=repoidglob:临时启用此处指定的repo
-noplugins:禁用所有插件


5. yum 仓库

1) yum 的repo配置文件中可用的变量:
     $releasever: 当前OS的发行版的主版本号
     $arch: 平台,i386,i486,i586,x86_64等等
     $basearch:当前基础平台架构
实例:
     baseurl=http://server/centos/$releasever/$basearch/
     http://server/centos/7/x86_64
     http://server/centos/6/i384
2) 创建自定义yum仓库:
     createrepo [options] <directory>
     其中yum需要的一些依靠性、校验信息等等都存放在repodata目录中,所以要自定义建立yum源不仅需要rpm包,也是离不开repodata目录,repodata目录文件可以由createrepo命令生成


五、源码安装


  1. C代码编译安装三步骤-在源代码目录下操作

C代码编译安装三步骤:
   1) ./configure:
        (1) 通过选项传递参数,指定启用特性、安装路径等;执行时会参考用户的指定以及Makefile.in文件生成makefile;
    	(2) 检查依赖到的外部环境;
   2) make:
    	根据makefile文件,构建应用程序;
   3) make install

开发工具:
    	autoconf: 生成configure脚本
    	automake:生成Makefile.in
        建议:安装前查看INSTALL,README

开源程序源代码的获取:
    	官方自建站点:
    	    apache.org (ASF)
    	    mariadb.org
    			...
    	代码托管:
            SourceForge
    	    Github.com
    	    code.google.com

c/c++: gcc (GNU C Complier)
编译C源代码:
    前提:提供开发工具及开发环境
    开发工具:make, gcc等
    开发环境:开发库,头文件
    glibc:标准库

通过“包组”提供开发组件
    CentOS 6: "Development Tools", "Server Platform Development",

第一步:configure脚本
    选项:指定安装位置、指定启用的特性
        --help: 获取其支持使用的选项
    选项分类:
        装路径设定:
    	 --prefix=/PATH/TO/SOMEWHERE: 指定默认安装位置;默认为/usr/local/
    	 --sysconfdir=/PATH/TO/SOMEWHERE:配置文件安装位置;

    system types:
        Optional Features: 可选特性
    	--disable-FEATURE
    	--enable-FEATURE[=ARG]
        Optional Packages: 可选包
    	--with-PACKAGE[=ARG]
    	--without-PACKAGE

第二步:make
第三步:make install



2. 安装后的配置:(以httpd为例子)

1) 将编译安装后的二进制程序目录导入至PATH 环境变量中,就可以直接使用命令而不再用写绝对路径或相对路径;
编辑文件/etc/profile.d/NAME.sh
#vim /etc/profile.d/http2.sh
PATH=$PATH:/usr/local/http2/bin
2) 导入库文件路径
编辑/etc/ld.so.conf.d/NAME.conf
添加新的库文件所在目录至此文件中#vim /etc/ld.so.conf.d/http2.sh
/usr/local/http2/lib
然后让系统重新生成缓存#ldconfig [-v]
3) 导入头文件,头文件的默认位置是/usr/include
基于链接的方式实现:ln -sv
[root@localhost htdocs]# cd /usr/include
[root@localhost include]# ln -s /usr/local/http2/include http2
4) 导入帮助手册
编辑/etc/man.config|man_db.conf文件
添加一个MANPATH /usr/local/http2/man


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Linux的包管理工具介绍

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Linux网络抓包工具tcpdump的详细介绍

这篇文章主要介绍“Linux网络抓包工具tcpdump的详细介绍”,在日常操作中,相信很多人在Linux网络抓包工具tcpdump的详细介绍问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux网络抓包工具
2023-06-13

JDK14性能管理工具:jstat使用介绍

今天我们的系列文章要介绍的是这四个工具:Jstat(sun.tools.jstat) 它的全称是Java Virtual Machine Statistics Monitoring Tool,是用来监控JVM状态的工具。jstack(sun
2023-06-03

Linux包管理工具yum、apt的区别

目录概述RedHat 系列Debian系列系列对www.cppcns.com比 使用方式1 dpkg包2 APT3 rpm包3.1 安装3.2 升级3.3 卸载3.4 查看4 yum安装yum特点yum详细指令总结一般来说著名的 linux
2023-04-22

Node.js包管理工具

本文主要详细介绍了node包管理工具,主要介绍了npm,cnpm及yarn,文中有详细的代码示例,对学习具有一定参考价值,需要的朋友可以参考一下
2023-05-15

Linux抓图工具KSnapshot的详细介绍

这篇文章主要讲解了“Linux抓图工具KSnapshot的详细介绍”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux抓图工具KSnapshot的详细介绍”吧!启动TurboLinux6
2023-06-16

Linux中软件包管理工具选择

在Linux系统中,选择合适的软件包管理工具对于系统的稳定性和安全性至关重要。以下是一些常见的Linux软件包管理工具及其特点:常见软件包管理工具dpkg:Debian及其衍生版(如Ubuntu)的基础包管理工具,用于安装、删除、存储和提
Linux中软件包管理工具选择
2024-09-24

C++技术中的内存管理:内存管理工具和库的介绍

c++++ 内存管理:内存管理工具:调试器用于识别内存错误;内存分析工具提供内存使用情况见解。内存管理库:智能指针自动管理内存分配和释放,例如 c++11 的 unique_ptr 和 shared_ptr;boost 库提供更丰富的智能指
C++技术中的内存管理:内存管理工具和库的介绍
2024-05-08

基于Docker封装的开发包工具介绍

本篇内容介绍了“基于Docker封装的开发包工具介绍”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!基于 Docker1.12+ (Docke
2023-06-04

python 包管理工具 —— setu

1. 创建一个简单的包创建 setup_demo文件夹,编写如下的 setup.py 文件:from setuptools import setup, find_packagessetup( name = "demo", ver
2023-01-31

Android aapt自动打包工具详细介绍

Android aapt自动打包工具 概念 在Android.mk中有LOCAL_AAPT_FLAGS配置项,在gradle中也有aaptOptions,那么aapt到底是干什么的呢? aapt即Android Asset Packagin
2022-06-06

Linux下如何安装conda包管理工具

这篇文章给大家分享的是有关Linux下如何安装conda包管理工具的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。conda是一个包,依赖和环境管理工具,适用于多种语言,如: Python, R, Scala, J
2023-06-27

桌面管理员必知Windows工具与术语介绍

对于IT管理员来说,坚持使用最新的桌面工具、组件和产品是件重要的事情,但这绝不是一件容易的事情。     除了要知道一些术语如AppX、预读文件(prefetch folder)和BIOS密码的意义之外,还需要明白这些Windows工具的工
2023-05-31

Win8应用商店管理小工具具体功能详细介绍

Win8的 程序和管理 功能为啥不支持对App清理卸载,部分APP还不提供清理 缓存 功能,会导致系统盘越来越肥,有时候卸载不全的应用会无法重装,需要到PowerShell下进行操作,那串长长的PackageFullName相当的烦人,于是
2022-06-04

详解node中的包和包管理工具

本篇文章带大家深度解析一下node的包和强大的包管理工具,希望对大家有所帮助!
2022-11-24

编程热搜

目录