Linux学习笔记——软件包管理

标签: linux

软件包管理简介

1.软件包分类

1.1 源码包(未经过编译的如C语言等)

其中脚本安装包安装过程类似于Windows,适合初学者使用。源码包可获取源代码,但安装速度较慢。
源码包优点:

  • 开源,可以借鉴或修改源代码
  • 可以自由选择所需功能
  • 软件是编译安装,所以更适合自己的系统,更加稳定和高效
  • 卸载方便

源码包缺点:

  • 安装步骤较多,尤其是安装较大的软件集合时,容易出现拼写错误
  • 编译时间较长,安装比二进制安装时间长
  • 因为是编译安装,安装过程中一旦报错,新手很难解决

1.2 二进制包(RPM包、系统默认包)

经过编译的二进制包,安装速度快,但无法分辨源码 。
二进制包优点:

  • 包管理系统简单,只通过几个命令就可以实现包的安装、升级、查询和卸载
  • 安装速度比源码包安装快得多

二进制包缺点:

  • 经过编译,不再可以看到源代码
  • 功能选择不如源码包灵活
  • 依赖性(如:安装A时必须先安装b)

2.RPM包管理

2.1 RPM包命名与依赖

RPM包命名规则

httpd-2.2.15-15.e16.centos.i686.rpm
  • httpd: 软件包名(注意区分包名和包全名)
  • 2.2.15 : 软件版本
  • 15: 软件发布次数
  • e16.centos: 适合的Linux平台
  • i686: 适合的硬件平台
  • rpm: rpm包扩展名

RPM包依赖性

  • 树型依赖:a->b->c
  • 环形依赖:a->b->c->a
  • 模块依赖:如:
    libc.so.0 #库依赖,需要从模块依赖查询网站查询

包全名与包名

  • 包全名:操作的包是没有安装的软件包时,使用包全名。而且要注意路径
  • 包名:操作已经安装的软件包时,使用包名。是搜索/var/lib/rpm/中的数据库

2.2 RPM安装、升级、卸载

RPM安装

rpm -ivh 包全名

选项:

  • -i(install) 安装
  • -v(verbose)显示详细信息
  • -h(hash)显示进度
  • –nodeps 不检测依赖性(一般不使用

RPM包升级

rpm -Uvh 包全名

选项:

  • U(upgrade) 升级

RPM包卸载

rpm -e 包名

选项:

  • -e(erase) 卸载
  • –nodeps 不检查依赖性

2.3 RPM查询

查询是否安装

rpm -q 包名     #查询包是否安装
rpm -qa    #查询所有已经安装的RPM包

选项:

  • -q:查询(query)
  • -a: 所有(all)

查询软件包详细信息

rpm -qi 包名   #查询已安装RPM包的信息

选项:

  • -i:查询软件信息(information)
  • -p:查询未安装包信息(package),后面应该接包全名而不是包名

查询包中文件安装位置

rpm -ql 包名

选项:

  • -l:列表(list)
  • -p:查询未安装包信息(package),查询系统打算将未安装的软件包安装的位置

查询系统文件属于那个RPM包

RPM-qf 系统文件名

选项:

  • -f:查询系统文件属于那个软件包(file)

查询软件包的依赖性

rpm -qR 包名

选项:

  • -R:查询软件包的依赖性(requires)
  • -p:查询未安装包信息(package)

2.4 RPM包的校验和文件提取

RPM包校验

rpm -V 已安装的包名

选项:

  • -V:校验制定RPM包中的文件(verify)
    校验RPM包是否被修改
    其中验证内容中的8个信息具体内容如下:

  • S (file Size differs)文件大小是否改变

  • M (Modediffers)文件的类型或文件的权限(rwx)是否被改变
  • 5(MD5 sum differs) 文件MD5校验和是否改变(可以看成文件内容是否改变)
  • D(Device major) 设备的主/次代码是否改变
  • L(readlink) 文件路径是否改变
  • U(User ownship differs)文件的所有者是否改变
  • G(Group ownship differs) 文件的所属组是否改变
  • T(mTime differs) 文件的修改时间是否改变

其中c代表文件的类型为普通文件,文件类型有以下几类:

  • c(config file) 配置文件
  • d(documentation) 普通文档
  • g(ghost file) “鬼”文件,很少见,就是该文件比英国被这个RPM包包含
  • l(license file)授权文件
  • r(read me)描述文件

RPM包中的文件提取

rpm2cpio 包全名 | cpio -idev .文件绝对路径
其中,rpm2cpio  #将rpm包转换为cpio格式的命令
     cpio      #是一个标准工具,它用于创建软件档案文件和从档案文件中提取文件

范例:
这里写图片描述

用途:当误删文件后使用文件提取功能回复误删文件

3. yum在线管理

3.1 IP地址配置和网络yum源

IP地址配置

redhat系列:
setup命令

网络yum源

这里写图片描述
这里写图片描述

3.2 yum命令

查询

yum list           #查询所有可用软件包列表
yum search 关键字   #搜索服务器上所有和关键字相关的包

安装

yum -y install 包名

选项:

  • install: 安装
  • -y : 自动回答yes

升级

yum -y update 包名

选项:

  • update:升级
  • -y:自动回答yes

卸载

yum -y remove 包名

选项:

  • remove :卸载
  • -y:自动回答yes

提示:最好不要使用yum卸载命令

yum软件组管理命令

yum grouplist                 #列出所有可用的软件组列表
yum groupinstall 软件组名      #安装制定软件组,组名可以由grouplist查询出来(当软件组名有空格时注意打“”)
yum groupremove 软件组名       #卸载指定软件组

3.3 光盘yum源搭建

搭建步骤:
yum源搭建步骤
yum源搭建步骤

4. 源码包管理

4.1 源码包和RPM包的区别

区别

  • 安装之前的区别:概念上的区别
  • 安装之后的区别:安装位置不同

RPM包安装位置

  • 安装在默认位置中
    RPM包安装位置

源码包安装位置

  • 安装在指定位置当中,一般是/usr/local/软件名/

安装位置不同带来的影响

  • RPM包安装的服务可以使用系统服务管理命令(service)来管理,例如RPM包安装的apache的启动方法是:
    • /etc/rc.d/httpd start
    • service httpd start

4.2 源码包安装过程

  • 安装准备
  • 安装注意事项

    • 源代码保存位置:/usr/local/src/
    • 软件安装位置:/usr/local/
    • 如何确定安装过程报错:
      • 安装过程停止
      • 出现error、warning或no提示
  • 源码包安装过程

    • 下载源码包
    • 解压缩下载的源码包
    • 进入解压缩目录
    • ./configure 软件配置与检查
      • 定义需要的功能选项
      • 检测系统环境是否符合安装要求
      • 把定义好的功能选项和检测系统环境的信息都写入Makefile文件,用于后续的编辑
    • make(编译)
    • make install (编译安装)
  • 源码包的卸载

    • 不需要卸载命令,直接删除安装目录即可。不会遗留任何垃圾文件

5. 脚本安装包

5.1 脚本安装包的定义

  • 脚本安装包并不是独立的软件包类型,常见安装的是源码包
  • 是人为把安装过程写成了自动安装的脚本,只要执行脚本,定义简单的参数,就可以完成安装
  • 非常类似于Windows下软件的安装方式

5.2 Webmin的作用

  • Webmin是一个基于Web的LInux系统管理界面。可以通过图形化的方式设置用户账号、Apache、DNS、文件共享等服务

5.3 Webmin安装过程

  • 下载软件
  • 解压缩并进入解压缩目录
  • 执行安装脚本(./setup.sh)
版权声明:本文为Karen_lrx原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Karen_lrx/article/details/80244264

智能推荐

[java][事务]tcc事务实战学习过程

学习项目:https://github.com/14251104246/spring-cloud-rest-tcc 下载源码,进入源码目录运行:mvn clean package Docker Compose运行 docker-compose -f infrastructure-compose.yml up -d docker-compose -f basic-ms-compose.yml up ...

[学习记录,]Mybatis入门

环境: Eclipse 2019 Tomcat 9.0 jdk1.8 开搞 首先创建工程 结构如下 导入Jar包 可在mybatis官网下载 http://www.mybatis.cn/82.html 配置文件mybatis-config.xml 事务管理有两种:JDBC和MANAGED JDBC: MANAGED 数据源类型:UNPOOLED、POOLED、JNDI 创建实体类文件User.ja...

运用for语句来判断数组中值得大小

总结: 1将if语句与数组联合起来判断输入中各组中的最大最小值; 2注意:定义的数组数量是躲多少就要输入多少组数据,少输入就无法输出;...

Bridging signals

Bridging signals Time Limit: 1000MSMemory Limit: 10000K Total Submissions: 10926Accepted: 5982 Description 'Oh no, they've done it again', cries the chief designer at the Waferland chip factory. Once ...

一天一大 leet

一天一大 leet 题目(难度:困难): 示例 抛砖引玉 官方答案 高手在民间 菜鸡的自白 20200606 题目(难度:困难): 给定一个未排序的整数数组,找出最长连续序列的长度。 要求算法的时间复杂度为 O(n)。 示例 示例 抛砖引玉 要求算法的时间复杂度为 O(n),即限制了只能循环一次; 先对数组排序 循环数组记录后一个元素等于前一个元素+1或者等于前一个元素的数量 满足条件++,不然重...

猜你喜欢

Tensorflow实现的CNN文本分类

https://blog.csdn.net/somtian/article/details/69359498 原博文, github 在这篇文章中,我们将实现一个类似于Kim Yoon的卷积神经网络语句分类的模型。 本文提出的模型在一系列文本分类任务(如情感分析)中实现了良好的分类性能,并已成为新的文本分类架构的标准基准。 本文假设你已经熟悉了应用于NLP的卷积神经网络的基础知识。 如果没有,建议...

JDBC新手入门教程

开发工具:idea 数据库:mysql jar包:junit-4.10 mysql-connector-java-8.0.18 junit-4.10下载 mysql-connector-java-8.0.18下载 注意1:jdbc的驱动因为使用的是mysql-connector-java-8.0.18,所以为(“com.mysql.cj.jdbc.Driver”),而不是(...

Lua 排序 table.sort

    正如C#中有Array.Sort(),lua中也有自己的排序方法即table.sort(table,function)。     lua中的排序默认是从大到小的排序;     传入一个方法参数,可以使排序从小到大; 打印结果:  ...

SURF算法简述及Python标记SURF特征检测实践

目录 一、SURF算法 1.算法简介 2.SURF与SIFT的具体差异 二、Python代码实践 1.测试环境 2.测试代码 3.核心函数 4.测试结果 一、SURF算法 1.算法简介 SURF(Speeded-Up Robust Features)加速稳健特征,是一种稳健的局部特征点检测和描述算法。 SURF是对SIFT算法的改进,该算子在保持 SIFT 算子优良性能特点的基础上,同时解决了 S...

Selenium3自动化测试——19.读取数据文件

1. 实现目标 在测试与开发中,经常需要对文件进行各种读取操作。这里介绍针对txt、csv、xml、json文件的读取。 2. 读取TXT文件 2.1 user_info.txt文件 2.2 读取txt文件.py 2.3 实现结果 3. 读取csv文件 3.1 user_info.csv  这里要注意,csv文件本身打开是utf-8的,而不是乱码 3.2 读取csv文件.py 这里,针对...