构造本地APT数据源

版权声明:代码自由使用 https://blog.csdn.net/qq_33745102/article/details/85246298

APT数据源的结构了解是相当有必要的,在离线分析的环境中,集群中只有一个能够联网的计算机,这是一种必要的安全措施。因此必须构造本地数据源,从而使得局域网中的主机像联网那样利用apt的一键式安装来管理集群应用,包括升级,安装…

成为一个镜像网站

apt-get install apt-mirror

编辑镜像配置文件

在这里插入图片描述

进入到下载库源的地方,运行apt-mirror

在这里插入图片描述


文件存储过大,放弃…

公共库源简介

Debian公共包库参见

https://www.debian.org/mirror/list

中国公共包库镜像网站

ftp2.cn.debian.org/debian/	
ftp.cn.debian.org/debian/

上面的公共库包提供的是全部基于Debian的linux的包源。

对于特定的系统,可以查看/etc/apt/sources.list中的链接来看到
比如Ubuntu 16

在这里插入图片描述

访问网站看到一个合法的apt源应该是什么样子。
如图,是apt源的根目录:

在这里插入图片描述

dists目录可以理解为数据库
pool存放所欲安装包
剩下的我也不知道

apt源目录结构探索

二进制安装包在哪里呢?

在根目录的pool下:
在这里插入图片描述

apt如何索引这些安装包?

这些安装包的名字显然和使用apt-install命令中使用的名字不一样,必然需要一个
记录文件来记录文件的位置等源信息。这就是Packages.gz(或其他压缩方式,但文件名
都是Packages)

使用wget来下载一个这种文件:

http://us.archive.ubuntu.com/ubuntu/dists/xenial-updates/main/binary-amd64/Packages.gz

由于团队一直在维护,因此这个路径有可能会变,以链接的目录结构构造出来的链接为准。

链接构造相当符合直觉,一个子目录就在URL上加个/

解压后就一个文件,看一下:
这是截取的内容

Package: apache2
Architecture: amd64
Version: 2.4.18-2ubuntu3.9
Priority: optional
Section: web
Origin: Ubuntu
Maintainer: Ubuntu Developers <[email protected]>
Original-Maintainer: Debian Apache Maintainers <[email protected]>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 490
Provides: httpd, httpd-cgi
Pre-Depends: dpkg (>= 1.17.14)
Depends: lsb-base, procps, perl, mime-support, apache2-bin (= 2.4.18-2ubuntu3.9), apache2-utils (>= 2.4), apache2-data (= 2.4.18-2ubuntu3.9)
Recommends: ssl-cert
Suggests: www-browser, apache2-doc, apache2-suexec-pristine | apache2-suexec-custom, ufw
Conflicts: apache2.2-bin, apache2.2-common
Replaces: apache2.2-bin, apache2.2-common
Filename: pool/main/a/apache2/apache2_2.4.18-2ubuntu3.9_amd64.deb
Size: 86570
MD5sum: 46da8df93cf6778393e5783189065eaa
SHA1: fda3026c4f70d48f3a7c2d8cb968facc49a6494a
SHA256: 506433d09407f420f9ac956d1ac9f1ff3adddbbae92b0690d532485b6fc3e491
Homepage: http://httpd.apache.org/
Description: Apache HTTP Server
Task: lamp-server, mythbuntu-frontend, mythbuntu-desktop, mythbuntu-backend-slave, mythbuntu-backend-master, mythbuntu-backend-master
Description-md5: d02426bc360345e5acd45367716dc35c
Supported: 5y

上面的可以和apt get来对上号了。我下载apache2的时候就是使用:

apt install apache2

注意到一开始Package字段就是apache2
除此之外,还可以看到其他源信息(位置,加密),比如:
依赖信息:

Depends: lsb-base, procps, perl, mime-support, apache2-bin (= 2.4.18-2ubuntu3.9), 
         apache2-utils (>= 2.4), apache2-data (= 2.4.18-2ubuntu3.9)

软件安装包的路径

Filename: pool/main/a/apache2/apache2_2.4.18-2ubuntu3.9_amd64.deb

文件的路径是相对路径,根为Archive Root即为文档根

另外还有Releases记录所有Package类型文件的信息
这里Releases+Releases.gpg和InReleases完成的相同的功能。

在这里插入图片描述

建造一个平面apt源

构造一个层级apt源是一个艰巨的任务,我想任何人都不想一个人完成如此浩大的工程。
于是,Reference 链接2来搞一个平面apt源

对于Ubuntu系统其是预装的,对于其他系统参见:

https://www.gnupg.org/download/index.html

运行随便一个合法的加密命令以创建GPG初始化目录,~/.gnupg/
在这里插入图片描述

gpg --help  #查看完整命令

Debian对于gpg的完整支持参见:

https://manpages.debian.org/stretch/gnupg/gpg.1.en.html

注意到.gnupg目录已经创建

Reference

  1. Debian-repository wiki
  2. Create your own custom and authenticated APT repository

猜你喜欢

转载自blog.csdn.net/qq_33745102/article/details/85246298