LIUNX中程序包管理

此内容仅为笔记,这一两天给会重新整理补充上操作示例。

一、基础

1、程序描述:

第一种描述: 程序+数据

第二种描述: 算法+数据结构

2、程序的组成部分:

​     1、二进制程序

​     2、配置文件,可以被查看其内容的文件

​     3、库文件,库文件不能独立执行,只能被调用执行

​     4、帮助文件,可以被查看其内容的文件。

解压rpm软件包

rpm2cpio 包文件 | cpio -id

3、程序包管理器描述:

最早的包管理器应用于Debian上,dpkg为第一个包管理工具。

​   程序的组成文件打包 成一个或者有限几个文件

​       安装

​       卸载

​       查询

升级

校验

1> 包组成(每个包都有)

包内的文件

元数据,如:包的名称 版本 依赖性 描述等

可能会有包安装或卸载时运行的脚本

2> 数据库(公共) /var/lib/rpm  自动更新

程序包名称及版本

依赖关系

功能说明

包安装后生成的各文件路径及校验码信息

4、各个发行版本的程序包管理器和前端管理工具

发行版     包管理器   包前端管理工具

​     Debian:   deb     apt-get/apt

​     ubuntu:      deb     apt-get/apt

​     RedHat:    rpm     yum/dnf

​     centos:    rpm      yum/dnf

5、程序编译方式:

​   动态编译:编译时不会把库文件编译进程序,编译好的程序不能独立运行,需要调运库文件,体积小。

​   静态编译:编译时会把需要用到的库文件都编译进程序,编译后程序没有库也可以独立运行,体积大。

6、命令存放路径:

普通命令:/bin     /usr/bin   /usr/local/bin

管理命令:/sbin      /usr/sbin      /usr/local/sbin

库文件:   /lib       /lib64      /usr/lib   /usr/lib64   /usr/local/lib   /usr/local/lib64

7、命令行展开

命令行展开优先级

1、把命令行分成单个命令词

2、展开别名

3、展开大括号的声明{}

4、展开波浪线声明~

5、命令替换$()或··

6、再次把命令行分成命令词

7、展开文件通配符

8、准备I/O重定向

9、运行命令

8、ABI 二进制编程接口

windows:   PE

LINUX:   ELF

虚拟化技术

LINUX:    WINE

windows:      Cygwin

9、LINUX中源文件生成执行文件的过程

预处理:gcc -E hello.c -o hello.i 对hello.c文件进行预处理,生成hello.i文件

编译:gcc -S hello.i  -o hello.s 对预处理文件hello.i进行编译,生成汇编文件hello.s

汇编:gcc -C hello.s -o hello.o 对汇编文件hello.s进行编译,生成目标文件hello.o

链接:hello.o -o hello 对目标文件hello.o文件进行链接,生成可执行文件

gcc hello.c -o hello2 一步到位,直接生成执行文件

选项:

-c 源文件 把源文件编译成目标文件

-o 新名称 目标文件1  目标文件2 把多个目标文件链接成可执行文件,并以新名称命名

-O 此选项主要用于优化编译

-l 库文件名 指定编译时需要的库文件,此库文件名不用写开头字母lib和结尾字母so

-L 库文件路径 路径为目录,指定库文件在什么位置搜索。省略的话默认在/lib  /lib64 /usr/lib /usrlib64等位置搜索

-I 头文件 指定编译时需要用到的头文件

10、软件包名

软件名-软件版本号-编译版本号-适用平台-后缀

适用平台

noarch 无论任何机型都行

i386 只要是x86平台的架构都支持

i686 32位平台

x86_64 64位平台

示例: 查看目录内各个平台架构的数量

ls *.rpm | rev | cut -d . -f2 |rev | sort | uniq -c

练习题:在出现进度条出现的时候按esc键,进入光盘,然后进入救援模式 进行恢复 被删除的基础库文件/lib64/libc.so.6

11、杂项

ldconfig命令

此命令会更具/etc/ldconfig配置文件中记载目录中的库文件加载入缓存中,以提高调用程序的执行速度

-p 显示已经加载到内存中的库文件

autofs工具可以自动挂在/misc/cd目录下

yum -y install autofs

systemctl enable --now autofs

二、软件包和包管理器

rpm命

此命令主要是通过数据库记录的方式来管理软件的安装、卸载、升级、查询、校验等等。

rpm软件的数据包保存在/var/lib/rpm目录中,如果此目录中的数据损坏可以通过rpm --rebuilddb重建数据库

选项:

-i --install 安装

-v 显示详细进度

-h 显示百分比,一个#表示2%

-q 查询

-qa 列出所有已安装的包的,依赖于/var/lib/rpm内的数据库

rpm -qa "*http*" 最好加上双引号,怕出问题。可以直接模糊搜索

-qi 查询某个已安装过的安装包的信息

-qpi 查询指定未安装的安装包的信息

-ql 查询指定已安装的安装包的安装文件列表

-qpl 查询指定未安装的安装包的要安装文件列表

-qf 查询某个命令或文件来自于哪个安装包。很有用

-q --whatprovides /PATH/TO/COMMAND 查询某个命令由哪个安装包所提供

-q --whatrequires 查询指定的安装包被哪个包所依赖

-qc 查询指定安装包的配置文件

-qd 查询指定安装包的帮助文档

-q --changelog 查询指定安装包的变更历史

-q --scripts 查询指定安装包的脚本

-q --provides 查询指定安装包的提供了哪些依赖性

安装脚本分为:

安装前 preinstall

安装后 postinstall

卸载前 preuninstalll

卸载后 postuninstalll

-U 或 --Update 升级或安装软件包

-F 或 --Freshen 只升级,如果没有不安装

-e --erase 卸载,如果卸载的时候别的包,依赖于要下载的包,就卸载不了

--root= 指定根目录

--nodeps 忽略依赖性,强行安装卸载

--force 强制安装

--replacepkgs 重装 和 force差不多,多用于重新安装老版本软件

包校验

--import 导入密钥

-K  或 --checksig 检查签名

-V 查询文件是否有修改

-Va 检查所有安装包,看看哪些包被修改过

S file size differs 文件大小是否被改变

M modediffers 文件的类型或文件属性是否被改变

5 MD5

D device major/minor number设备的主次代码号是否被修改

L readlink path 软连接指向路径是否被修改

U user ownership 属主是否被修改

G group ownership 属组是否被修改

T mtime differ 文件的mtime是否被修改

P

c 配置文件  config file

d 文件   documentation

g 鬼文件,通常时该文件不被某个软件所包含,较少发生  ghost file

l 授权文件  license file

r 自述文件  read me

yum命令

同一台电脑上,只能运行一个yum。yum的日志文件是/var/log/yum.log   centos8:/var/log/dnf.log

命令的选项优先级高于配置文件

-y 不询问,自动安装

-q 或--quiet 静默安装

install 安装

reinsatll 重新安装

remove 卸载

update 升级

history 安装历史

history info # 具体查看安装的几个文件

history undo # 卸载指定第几次操作

history redo # 重新安装指定的第几次操作

list 列表

repolist 仓库列表

search 搜索

deplist 查询依赖关系

info 查看软件信息

repolist [all] 显示yum源列表

--enablerepo=* 临时启用指定某个源

--disablerepo=* 临时禁用指定某个源

--showduplicates 显示重复的源

--noplugins 禁用所有插件

clean all 清理缓存

provides /PATH/TO/COMMAND 查询某个命令是由哪个安装包提供

--nogpgcheck 禁止检查gpgcheck,即使配置文件中指定了需要检查,命令行的优先级高于配置文件

包组

安装卸载包组在引用包组名的时候需要加上引号

groupinstall 安装包组

groupupdate 包组升级

grouplist 查询包组列表

groupremove 包组卸载

groupinfo 查询包组的信息

yum的repo配置文件中的变量

$releasever 当前OS的发行版的主版本号  如 6 7 8

$arch 平台 如:i386  x86_64

$basearch 基础平台 如:1386 ppc arm

createrepo命令

createrepo [options]

--basedir path 用户一定输出repodata的位置。常用于指向软件包的父目录

dpkg包管理器

-i 安装

dpkg -i package.deb

-r 不完全卸载

dpkg -r  package.deb

-l 已安装包的列表

dpkg -l

-L PACKAGE 列出软件包所包含的文件,相当于rpm -ql

-S FILE 查询某个文件属于哪个包,相当于rpm -qf

-a 配置所偶没有配置的软件包

-c

apt命令

包前端管理工具,类似yum命令。debian系统的软件包前端管理工具。之前的叫apt-get

apt install

apt remove

apt purge

apt update

apt upgrade

apt search

apt show

三、仓库

仓库一般由包文件、包文件元数据组成。客户端会先下载元数据下载到本地缓存中。

然后校验元数据,看看元数据是否下载有无问题。

根据元数据内信息再到仓库中下载对应的各种包文件和依赖包文件。

最后安装。

企业中可以单独新建一个软件仓库服务器。通过网络服务(http https ftp)共享给局域网内计算机远程安装。

本地计算机需要配置仓库客户端

centos 8中由两个软件仓库 Base仓库和AppStream仓库

repodata 元数据存放目录

Packages 软件包存放目录

关于仓库路径就是repodata所在的父目录的绝对路径就是仓库路径

仓库配置文件必须放在yum.repo.d目录下。后缀必须是.repo

仓库元数据存放路径/var/cache/yum

yum.conf(centos7)配置文件{

cachedir=/var/cache/yum/$basearch/$releasever

keepcache=0

debuglevel=2

logfile=/var/log/yum.log

exactarch=1

obsoletes=1

gpgcheck=1

plugins=1

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

}

dnf.conf(centso8)配置文件{

gpgcheck=1 是否安装前检测签名

installonly_limit=3 并发安装

clean_requirements_on_remove=True 安装后清空软件

best=True 如果多个仓库中某个软件由多个版本,默认指定安装最新版本

}

repo配置仓库{}

[] 中括号内的是仓库ID,必须项

name=Base 仓库名

mirrorlist= 仓库路径,

baseurl= 仓库路径,建议使用国内

gpgcheck=1 校验包签名

enabled=1 是否启用仓库,如果不写,默认是启用的

gpgkey= 签名保存路径

创建私有仓库

yum -y install httpd

systemctl enable --now httpd

mkdir /var/www/html/centos/8

mount /dev/sr0 /var/www/html/centos/8

用于同步仓库中的软件和元数据

dnf reposync --repoid=REPOID --download-metadata -p /path centos8

reposync --repoid=REPOID --download-metadata -p /path centos7

creatrepo /var/www/heml/epel/ 手工创建元数据

--basedir 指定repodata存放位置

四、源码编译安装

./configure 最终目的是生成Makefile文件

1、通过选型传递参数,指定安装路径、启用特性等,执行时会参考用户的指定的选项以及模板文件Makefile.in 生成Makefile

2、检查依赖到的外部环境,如依赖的软件包

选项:

--prefix=PATH/TO/SOMEDIR 指定总安装目录

--sysconfdir=DIR 指定配置文件安装目录

备注:

autoconf命令,用来生成configure脚本。部分软件没有configure脚本,需要事先自己手工生成,然后再去执行./configure等后续编译安装步骤,也可能已经实现提供号了Makefile文件

automake命令,用于生成Makfiel.in模板文件

make

根据上一步生成的Makefile文件,检测依赖环境,进行构建应用程序

执行make命令之前一定要进入到解压目录,只有在解压目录才能执行成功make

make命令

选项:

-j # 如果软件较大,可以指定多个CPU同时工作

备注:

make命令这一步也会检查环境依赖配置,一般情况下是很顺利,如果这一步检测依赖环境报错,

可能说明上一步configure配置处的Makefile文件有问题,需要删掉整个文件夹,重新来。要不会出现莫名其妙的问题。

make install

复制文件到相应路径

make install 命令会自动创建目录。不用手工创建

可以通过README  INSTALL文件获取安装帮助

开法工具:make gcc

开发环境:开发库(gblic:标准库) 头文件

系统通过修改/etc/man_db.conf文件指定新软件帮助文件的路径。以后就能直接使用man帮助了

五、备注

生产环境一般是最小安装,推荐安装软件明细。

gcc

make

gcc-c++

glibc  glibc-devel

pcre pcre-devel 与正则表达式相关的包

openssl openssl-devel 与openssl加密相关的包

systemd-devel

zlib-devel 与压缩相关的包

vim

lrzsz 传输文件工具,xshell给主机传送文件需要依赖此包,它提供了rz命令

tree

tmux screen 窗口工具。在断开链接后不会终止

lsof

tcpdump 抓包工具

wget 下载工具

net-tools 网络工具

iotop io的检测工具

bc bzip2 zip unzip

nfs-utils

man-pages

软件版本命名sig_LIUNX中程序包管理相关推荐

  1. linux中程序包管理方式出现的原由(转载)

    1.软件的安装卸载是很平常的事情,但是在linux上面却也这么的不简单.Linux的其中一个哲学思想就是 一个程序只做一件事,并且做好. 组合小程序来完成复杂任务.这样做有很多好处.但世界上的东西总是 ...

  2. 程序包管理rpm、yum与简单编译安装程序

    Linux程序包管理 Linux中软件的安装主要有两种形式:一种是直接下载源代码包自行编译后安装,另一种直接获取rpm软件包进行安装. 程序的组成部分: 二进制程序:程序的主体文件,比如我们运行一个l ...

  3. 以rpm为后端及以yum为前端工具的程序包管理器在Linux发行版系统centos中的使用...

    程序包管理: 应用程序的安装,实际上是解压缩并复制程序包中的文件到指定目录的过程: 程序包管理器: 方便终端用户进行程序的安装.卸载.升级.安装信息查询及校验等工作: 不同的Linux的发行版本中,有 ...

  4. 通过程序包管理器控制台解决版本错误(CS1705)

    目录 介绍 背景 解决方案示例 介绍 如果解决方案中有多个项目,而一个项目依赖于其他项目,并且版本引入了重大更改,我们有时会遇到包版本冲突,并且Visual Studio解决方案无法构建.它可能会返回 ...

  5. 详解程序包管理RPM

    一.定义 RPM是RPM Package Manager(RPM软件包管理器)的缩写,这一文件格式名称虽然打上了RedHat的标志,但是其原始设计理念是开放式的,现在包括OpenLinux.S.u.S ...

  6. Linux下程序包管理工具RPM

    实验环境: CentOS release 6.6 (Final)  一台 IP地址:172.16.249.230 RPM 是 Red Hat Package Manager 的缩写,本意是Red Ha ...

  7. Linux学习笔记:rpm程序包管理

    以CentOS为例,rpm程序包管理器的相关内容如下: CentOS的程序包管理器:     程序包的命名规则:         源代码包:             software_name-VER ...

  8. CentOS程序包管理、上

    程序包管理: 应用程序的安装,实际上是解压缩并复制程序包中的文件到指定目录的过程: 应用程序的结构形式:源代码:包含了整个应用程序完整的编程语言的所有代码的文本文件集合:使用源代码安装应用程序:编译开 ...

  9. Kubernetes之(二十)Helm程序包管理器

    目录 Kubernetes之(二十)Helm程序包管理器 概念 部署Helm 下载helm 部署Tiller helm的使用 chart 目录结构 chart模板 定制安装 MySQL chart c ...

最新文章

  1. 北京清华长庚医院入选“首批74家国家临床教学培训示范中心”(附完整版名单)...
  2. 一文看懂循环神经网络-RNN(独特价值+优化算法+实际应用)
  3. [转] UML类图的几种关系总结
  4. rpc 调用webservice怎样传递参数_五分钟让你了解RPC原理详解
  5. 先学python还是先学数据库_跟着销售学python8-微信平台初次见识数据库(6)
  6. 用html制作广告图片切换效果,基于jquery实现图片广告轮换效果代码
  7. 货车定位服务器维护是什么意思,有关货车日常维护的主要内容
  8. 动手学pytorch之通俗易懂何为卷积-深度AI科普团队
  9. 26期20180606 chmod chown umask 隐藏权限
  10. IDEA 提示Unmapped Spring configuration files found的解决办法
  11. python运维都做些什么_系统运维是做什么的(python在实际工作中的应用)
  12. 紫光展锐虎贲T618八核(Android11.0)4G核心板
  13. 还在找怎么修复老照片?火爆全网的老照片修复技术方法其实很简单
  14. oracle快速回收表空间,drop user cascade_快速回收表空间大小
  15. 野人与传教士过河问题
  16. Oracle常用字符ASCII码对应表
  17. 如何设置默认浏览器?快速学会,简单易懂
  18. Linux面试相关知识点看着一文就够了
  19. RecyclerView调用notifyDataSetChanged()不起作用
  20. ionic升华过程8-cordova插件+mui小案例

热门文章

  1. UEFI启动U盘启动不了的解决办法
  2. Jacobi Seidel Sor --Python
  3. GitHub 断供危机来了!权威解读程序员应对指南
  4. IT学生在校学习六层楼
  5. cv2.imshow显示空白
  6. 关于vm虚拟机虚拟网络已禁用
  7. 内存管理(二)-- linux 预留内存几种方法
  8. CVPR2018 Best Paper:Taskonomy: 揭开任务迁移学习的秘密
  9. indoor是什么意思_indoor是什么意思中文翻译
  10. python的requests库介绍_Requests库介绍