最理想是用两台机器继续验证,一台可以联网,一台无法联网,不过我只有一台机器,所以使用docker来验证。
联网的机器下载deb包和制作离线包:
1,配置软件源
2,配置下载脚本
packages目录可以自由定义你想下载的软件,下载,最好用root用户
3,建立依赖
相关命令说明:
在Ubuntu上安装dpkg-scanpackages,你实际上需要安装dpkg-dev软件包,因为dpkg-scanpackages是dpkg-dev的一部分, dpkg-scanpackages通常用于创建本地的APT软件源。当你有一组.deb文件并希望它们能够被本地机器或其他机器通过APT安装时,你会使用dpkg-scanpackages来生成Packages和Packages.gz文件,如下命令:
dpkg-scanpackages ./ | gzip -9c > Packages.gz
这个命令用于创建一个压缩的 Packages.gz 文件,该文件是 Debian 和 Ubuntu 软件包管理系统(APT)所需的一个重要组件。这个文件包含了关于软件包仓库中所有软件包的信息,如软件包名称、版本号、依赖关系等。APT 工具使用这个文件来了解软件仓库中有哪些软件包可用,并据此来安装、升级或删除软件包。
这条命令的各个部分解释如下:
dpkg-scanpackages ./:dpkg-scanpackages是一个用于生成Packages文件的工具。它扫描指定的目录(在这个例子中是当前目录./)下的所有.deb文件,并生成一个包含这些软件包信息的文本文件。|:这是一个管道符号,用于将一个命令的输出作为另一个命令的输入。在这个例子中,dpkg-scanpackages的输出被传递给gzip命令。gzip -9c:gzip是一个用于文件压缩的工具。-9参数指定了最大的压缩级别(1-9,9 是最高级别),-c参数表示将压缩后的数据输出到标准输出(stdout),而不是覆盖原始文件。> Packages.gz:这部分将前面命令的输出(即经过gzip压缩后的数据)重定向到一个名为Packages.gz的文件中。如果文件已经存在,它会被覆盖;如果不存在,会创建一个新文件。
综合起来,dpkg-scanpackages ./ | gzip -9c > Packages.gz 这个命令会生成一个压缩的 Packages.gz 文件,该文件包含了当前目录下所有 .deb 软件包的信息,并且已经被压缩以减少存储空间和网络传输的开销。这个 Packages.gz 文件通常会被放置在软件仓库的 dists 子目录下,并由 APT 工具在更新软件源时自动下载和解压,以便获取软件包信息。
apt-ftparchive packages . > Packages的作用
apt-ftparchive packages . > Packages 是一个用于创建 Debian 软件仓库的命令。这条命令的作用是将当前目录下的所有 .deb 文件的相关信息导出到 Packages 文件中,这个文件是一个包含所有软件包信息的二进制文件,它可以被 APT 工具用来索引和更新软件包。
这条命令的具体含义如下:
-
apt-ftparchive是一个用于生成 APT 软件仓库的工具。 -
packages是apt-ftparchive的一个子命令,用于列出目录中的所有软件包。 -
.表示当前目录。 -
>是重定向操作符,用于将命令的输出写入到后面指定的文件中。 -
Packages是输出文件的名字,它包含了所有的软件包的信息。
如果你想要执行这条命令,首先你需要确保当前目录下有 .deb 文件。然后,你可以在终端中运行这条命令来生成 Packages 文件。之后,你可以使用 dpkg-scanpackages 命令来生成 Packages 和 Sources 文件,这些文件是用于更新软件源的。
apt-ftparchive release ./ > Release的作用
apt-ftparchive release ./ > Release 命令用于生成一个 Release 文件,该文件是 APT 软件仓库中非常重要的一个组成部分。Release 文件包含了关于软件仓库的元数据信息,如仓库的版本号、软件包的校验和、发布日期等。APT 工具使用这个文件来验证仓库的完整性和可信度,并确定是否需要更新本地软件包列表。
这条命令的各部分含义如下:
-
apt-ftparchive:如前所述,这是一个用于生成 APT 软件仓库的工具。 -
release:这是apt-ftparchive的一个子命令,用于生成Release文件。 -
./:这表示当前目录,即软件仓库的根目录。APT 仓库通常包含一个或多个二进制软件包(.deb文件)以及相关的元数据文件。 -
>:这是重定向操作符,用于将命令的输出写入到后面指定的文件中。 -
Release:这是输出文件的名字,即生成的Release文件。
Release 文件通常包含以下信息:
- Origin:软件仓库的来源,通常是一个软件项目或组织的名称。
- Label:软件仓库的标签,通常与 Origin 相同,但可以是任何描述性字符串。
- Suite:软件仓库的套件名称,例如
stable、testing、unstable等。 - Codename:软件仓库的代号名称,通常是一个描述性的字符串,用于标识仓库的版本。
- Version:
Release文件的版本号,用于跟踪文件的更新。 - Support:提供支持的联系方式或 URL。
- Architectures:软件仓库支持的体系结构列表。
- Components:软件仓库中的组件列表,例如
main、contrib、non-free等。 - Description:软件仓库的描述信息。
- MD5Sum:软件仓库中所有文件的 MD5 校验和。
- SHA1 或 SHA256:软件仓库中所有文件的 SHA-1 或 SHA-256 校验和。
这些信息对于 APT 工具来说是必要的,以确保软件仓库的完整性和可信度。当使用 apt-get update 或其他 APT 命令更新软件源时,APT 会检查 Release 文件中的信息,并根据这些信息来下载和安装软件包。
在制作离线源时,dpkg-scanpackages, apt-ftparchive packages, 和 apt-ftparchive release 这三个命令各自扮演着不同的角色,以生成APT软件仓库所需的不同元数据文件。
- dpkg-scanpackages ./ | gzip -9c > Packages.gz:
dpkg-scanpackages命令扫描指定目录下的所有.deb文件,生成一个包含这些软件包详细信息的文本文件,即Packages文件。这些信息包括软件包的名称、版本号、大小、依赖关系等。然后,通过管道|将Packages文件的输出传递给gzip命令进行压缩,生成Packages.gz文件。压缩后的文件减少了存储空间和网络传输的开销。Packages.gz文件是APT软件仓库中必不可少的组件,因为它为APT工具提供了软件包的基本信息,使得APT能够知道哪些软件包是可用的,以及它们的依赖关系等。 - apt-ftparchive packages ./ > Packages:
apt-ftparchive packages命令也用于生成包含软件包信息的文件,但与dpkg-scanpackages不同的是,它生成的Packages文件是二进制的,而不是文本格式。二进制格式的Packages文件通常更加紧凑和高效,因为它使用了专门的编码和压缩算法。这个命令也是扫描指定目录下的.deb文件,并将软件包信息导出到Packages文件中。虽然dpkg-scanpackages更常用,但apt-ftparchive packages在某些情况下可能也是必要的,特别是在处理复杂的软件仓库结构或需要更高效的索引格式时。 - apt-ftparchive release ./ > Release:
apt-ftparchive release命令用于生成Release文件。Release文件包含了关于整个软件仓库的元数据信息,如仓库的标识、组件列表、签名信息等。这个文件是APT软件仓库中非常重要的组成部分,因为它提供了软件仓库的整体描述和验证信息,使得APT工具能够验证仓库的完整性和可信度。Release文件通常包含软件仓库的版本号、支持的体系结构、组件名称、MD5或SHA校验和等信息。APT工具在更新软件源时,会首先检查Release文件以获取仓库的基本信息和验证签名。
综上所述,这三个命令共同生成了APT软件仓库所需的元数据文件,这些文件提供了软件包的信息和软件仓库的描述,使得APT工具能够正确地索引、更新和安装软件包。在制作离线源时,这些文件需要被复制到离线环境中的适当位置,以便APT工具能够访问和使用它们。
另外一种apt-get保存deb的方式(只适合第一次安装系统,后期ubuntu会定期删除deb包):
默认情况下使用apt install安装包时,会自动下载安装包及其依赖包到/var/cache/apt/archieves目录,可通过如下配置改变这一行为:
#禁止保存
echo 'Binary::apt::APT::Keep-Downloaded-Packages "0";' | sudo tee /etc/apt/apt.conf.d/10apt-keep-downloads
#允许保存
echo 'Binary::apt::APT::Keep-Downloaded-Packages "1";' | sudo tee /etc/apt/apt.conf.d/10apt-keep-downloads


所有评论(0)