我想了解 apt 如何工作以及如何从 中的镜像中获取对象sources.list
。我如何手动浏览这些存储库、手动下载它们并手动构建它们(不使用源代码和 github 等...)?
答案1
当我想手动下载某个软件包的特定版本时wget
,我会使用pkgs.org。该网站基本上包含所有主要存储库的索引,并提供了许多软件包详细信息。
它除了支持 Ubuntu 之外,还支持大量发行版(例如,您可以通过从 Debian 不稳定版本安装来找到较新的软件包)以及amd64
和arm64
体系结构。
您可以在这里浏览或搜索任何包,并直接获得下载链接。
以这个例子为例适用于 Ubuntu 20.04 的 Nano。
您将获得一个下载链接、依赖项列表、文件列表等。要手动下载此包,只需使用wget
提供的链接即可:
wget http://archive.ubuntu.com/ubuntu/pool/main/n/nano/nano_4.8-1ubuntu1_amd64.deb
然后你就可以继续用这个包做任何你想做的事情了。
答案2
再次尝试手动下载包将会导致依赖地狱。
这就是为什么我根据个人需求创建了特殊的基于 Docker 的脚本。它位于https://github.com/N0rbert/deb-download。
目前此脚本支持所有在 dockerhub 上有 docker 基础镜像的 Debian 和 Ubuntu 版本,因此支持从 12.04 LTS 开始的 Ubuntu、从 6 开始的 Debian 和从 18 开始的 Mint。脚本支持 EOL 和实际版本。
如何使用:
了解所需的 Debian衍生物名称(如 Debian 本身、Ubuntu 和 Mint),其代码名称和包裹通过使用本地工具(如 )来命名
apt-cache policy
;rmadison
或者访问https://packages.debian.org,https://packages.ubuntu.com,http://packages.linuxmint.com,https://repology.org,https://pkgs.org, ETC 。例如使用 docker.io 包在机器上安装 Docker(docker.com 的包也可以)
sudo apt-get update sudo apt-get install docker.io git sudo usermod -a -G docker $USER
并重启机器。
克隆存储库并运行脚本以获取包及其依赖项
cd ~/Downloads git clone https://github.com/N0rbert/deb-download.git cd deb-download chmod +x deb-download.sh # derivative codename package(s) # ↓ ↓ ↓ ./deb-download.sh ubuntu bionic zenmap
从子文件夹中获取下载的 deb 包
storage
。也可以从中获取 URL 列表文件storage/urls.txt
。仔细检查子文件夹的内容
storage
,然后尝试将主 deb 包安装到目标系统,然后逐一修复其依赖项。例如,可以使用以下命令在 Ubuntu 20.04 LTS 系统上安装 ZenMap:
cd storage sudo apt-get install ./zenmap_7.60-1ubuntu5_all.deb ./python-gtk2_2.24.0-5.1ubuntu2_amd64.deb