关于软件源的一些总结

一、客户端

1、软件配置

Debian的apt软件配置文件在/etc/apt.conf,RedHat的yum软件配置文件在/etc/yum.conf。

2、软件源地址配置

无论是Debian亦或是Redhat,终端配置的在线软件源地址都不是直接指向某一个安装包目录的,软件源地址配置文件里存的是软件信息列表文件所在的url地址信息,客户端在配置完成后会更新这些列表信息到本地,这些软件信息里保存着这些软件的实际保存地址,客户端在安装软件的时候会读取指定软件的信息并去软件源服务器里找到这个包然后下载安装。

a:Debian客户端的软件源服务器地址配置文件为/etc/apt/source.list,Redhat客户端的软件源服务器地址配置文件为/etc/yum.repos.d/*。

b:Debian客户端的软件源配置文件内容(在线软件源):下载内容(deb deb-src) 空格 软件源地址 空格 系统版本代号-升级类型 (Security,Updates,ProposedBackports,) 空格 软件开放程度(main,restricted,universe,multiverse)

c:RedHat客户端的软件源配置文件内容(在线软件源):

[base]:代表容器的名字。中括号一定要存在,里面的名称可以随意起,但不能有两个相同的容器名称,否则yum会不知道去哪里找容器相关软件列表文件。

name:只是说明一下这个容器的意义而已,重要性不高。

mirrorlist:列出这个容器可以使用的镜像站点,如果不想使用可以批注掉这一行。

baseurl:这个最重要,因为后面接的就是容器的实际网址。mirrorlist是由yum程序自行去找镜像站点, baseurl则是指定固定的一个容器网址。

enable=1:启动这个容器,默认值也为1。关闭这个容器可以设置enable=0。

gpgcheck=1:指定是否需要查阅RPM文件内的数字证书。

gpgkey:数字证书的公钥文件所在位置,使用默认值即可。

d:针对不同类型的软件源,Redhat进一步在/etc/yum.repos.d/目录下分别指定多个文件来划分,例如CentOS-Base.repo指定的是网络软件源,默认开启;CentOS-Media.repo指定本地光盘等介质软件源,默认关闭;还有好多其他文件指定各种类型的软件源,默认也是关闭的。

e:针对不同类型的软件源,Debian没有做划分,都是直接在/etc/apt/source.list这一个文件中配置。

 

3、本地缓存

无论Debian还是Redhat,两种客户端安装软件的机制都相似,都是根据软件源地址配置文件找到软件源服务器相对地址然后拉取所有的软件信息并缓存到本地。Debian把软件信息缓存到/var/lib/apt/lists下面,可以使用apt-config工具设置缓存文件目录,缓存形式是普通文件,运行命令是apt-get update;RedHat把软件信息缓存到/var/cache/yum/下面,缓存形式是sqlite数据库(primary_db.sqlite),运行命令是yum makecache。

 

4、安装包

软件安装的时候,客户端会对软件的依赖进行解析并安装/更新这些依赖,Debian将安装的软件包下载缓存到/var/cache/apt/下,可以使用apt-config工具设置;RedHat将安装的软件包下载缓存到/var/cache/yum/架构/版本/包类型/packages下,与软件信息缓存的位置类似,RedHat现在的软件包存放位置可以通过配置/etc/yum.conf来设置。

 

5、安装日志

a:Debian系统通过apt安装软件包后会把软件信息保存,保存路劲如下

/var/lib/dpkg/available  存放系统所有安装过的软件包信息【List of available packages.】

/var/lib/dpkg/status   存放系统现在所有安装软件的状态信息

/var/log/dpkg.log  dpkg包管理软件的日志文件【Default log file (see /etc/dpkg/dpkg.cfg(5) and option --log)】

b:RedHat系统通过yum安装软件包后会包软件信息保存,保存路径如下

/var/lib/rpm/ 存放安装包基础信息,没有详细的说明

/var/lib/yum/yumdb 存放安装过的软件包的扩展信息

 

二、服务器

1、一个服务器可以作为多种终端的软件源,不同的架构,系统,版本,yum,apt软件源都可以放在一个服务器下管理,当然服务器部署方式不拘一格,可以http也可以ftp,目录组织结构等更是可以自己定制,下面说的是个通常的部署方式

2、Ubuntu版本http服务器部署真实路径

a:软件信息列表文件(内部有软件相互依赖的信息)存放地址:http存放Ubuntu源的根目录/dists/系统版本代号-升级类型/软件开放程度/架构/

b:软件存放地址:http存放Ubuntu源的根目录/pool/软件开放程度/

3、RedHat版本http服务器部署真实路径

a:软件存放地址:http存放RedHat源的根目录/系统版本号/软件类型/软件架构/Packages/

b:软件信息列表文件(内部有软件相互依赖的信息)存放地址:http存放RedHat源的根目录/系统版本号/软件类型/软件架构/repodata/

c:软件信息元数据文件有:“primary.xml.gz;filelists.xml.gz;other.xml.gz;repomd.xml”分别记载的:

1):仓库内所有rpm包列表及包之间的依赖关系,安装之后能够生成的文件列表

2):当前仓库内所有rpm包的所有文件列表

3):rpm包的额外信息,如包的修改日志等

4):记录了其他三个文件的时间戳和校验和(客户端每次都要下载此文件)

4、依赖生成

Debian生成软件信息列表文件的程序是dpkg-scanpackages

RedHat生成软件信息列表文件的程序是createrepo

 

参考文献:

yumdb:https://blog.csdn.net/nawenqiang/article/details/53383765

yum软件源元数据文件描述:https://blog.51cto.com/dspirit/1156345

yum/apt基本使用:https://www.jianshu.com/p/d021380f6d02

 

 

你可能感兴趣的:(linux)