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目录已经创建