我有两台电脑:一台在线且已完全更新,另一台离线。我想下载特定的 .deb 文件,然后手动将它们部署到离线电脑上。例如,我想安装libapache2-mod-php5
。
问题在于,在线计算机上的所有依赖项都已安装,并且不会被重新安装开关所拾取。build-essential
在这方面尤其成问题,因为它本质上是一个元包。
在网上:
root@online:~/temp# apt-get install libapache2-mod-php5 --reinstall --yes -s
Reading package lists... Done
Building dependency tree
Reading state information... Done
0 upgraded, 0 newly installed, 1 reinstalled, 0 to remove and 0 not upgraded.
Inst libapache2-mod-php5 [5.4.15-1~lucid+1] (5.4.15-1~lucid+1 PPA for PHP5:10.04/lucid)
Conf libapache2-mod-php5 (5.4.15-1~lucid+1 PPA for PHP5:10.04/lucid)
离线(为了论证的目的,我将其在线化)
root@offline:~# apt-get --print-uris install libapache2-mod-php5 --reinstall --yes -s
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
apache2-mpm-prefork apache2-utils apache2.2-bin apache2.2-common libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap php5-common
Suggested packages:
apache2-doc apache2-suexec apache2-suexec-custom php-pear php5-suhosin
The following NEW packages will be installed:
apache2-mpm-prefork apache2-utils apache2.2-bin apache2.2-common libapache2-mod-php5 libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap php5-common
0 upgraded, 10 newly installed, 0 to remove and 96 not upgraded.
Inst libapr1 (1.3.8-1ubuntu0.3 Ubuntu:10.04/lucid-updates)
Inst libaprutil1 (1.3.9+dfsg-3ubuntu0.10.04.1 Ubuntu:10.04/lucid-updates)
Inst libaprutil1-dbd-sqlite3 (1.3.9+dfsg-3ubuntu0.10.04.1 Ubuntu:10.04/lucid-updates)
Inst libaprutil1-ldap (1.3.9+dfsg-3ubuntu0.10.04.1 Ubuntu:10.04/lucid-updates)
Inst apache2.2-bin (2.2.14-5ubuntu8.10 Ubuntu:10.04/lucid-updates)
Inst apache2-utils (2.2.14-5ubuntu8.10 Ubuntu:10.04/lucid-updates)
Inst apache2.2-common (2.2.14-5ubuntu8.10 Ubuntu:10.04/lucid-updates)
Inst apache2-mpm-prefork (2.2.14-5ubuntu8.10 Ubuntu:10.04/lucid-updates)
Inst php5-common (5.3.2-1ubuntu4.19 Ubuntu:10.04/lucid-updates)
Inst libapache2-mod-php5 (5.3.2-1ubuntu4.19 Ubuntu:10.04/lucid-updates)
Conf libapr1 (1.3.8-1ubuntu0.3 Ubuntu:10.04/lucid-updates)
Conf libaprutil1 (1.3.9+dfsg-3ubuntu0.10.04.1 Ubuntu:10.04/lucid-updates)
Conf libaprutil1-dbd-sqlite3 (1.3.9+dfsg-3ubuntu0.10.04.1 Ubuntu:10.04/lucid-updates)
Conf libaprutil1-ldap (1.3.9+dfsg-3ubuntu0.10.04.1 Ubuntu:10.04/lucid-updates)
Conf apache2.2-bin (2.2.14-5ubuntu8.10 Ubuntu:10.04/lucid-updates)
Conf apache2-utils (2.2.14-5ubuntu8.10 Ubuntu:10.04/lucid-updates)
Conf apache2.2-common (2.2.14-5ubuntu8.10 Ubuntu:10.04/lucid-updates)
Conf apache2-mpm-prefork (2.2.14-5ubuntu8.10 Ubuntu:10.04/lucid-updates)
Conf php5-common (5.3.2-1ubuntu4.19 Ubuntu:10.04/lucid-updates)
Conf libapache2-mod-php5 (5.3.2-1ubuntu4.19 Ubuntu:10.04/lucid-updates)
我希望能够在在线计算机上下载所有这些 deb 文件,而不必逐一指定它们。
答案1
在线计算机上有一份礼物在等着你/var/cache/apt/archives
- 更具体地说,是它下载的每个软件包的副本(除非你清除了它们)。你可以获取它们而不必下载它们。
构建完整的依赖关系图以了解您具体需要哪些可能有点棘手,但没有什么可以阻止您将它们全部放在硬盘上并将它们移动到离线计算机。
这个帖子详细说明如何Packages.gz
为文件夹创建.deb
文件,以便您可以/etc/apt/sources.list
在每台机器上添加路径并从中安装软件包:
- 将所有内容复制
.debs
到您的闪存驱动器或 USB 驱动器。我们将用作/media/flash_drive
示例路径。 - 跑步
dpkg-scanpackages /media/flash_drive file | gzip > /media/flash-drive/Packages.gz
- 在每台离线计算机上,添加
deb file:/media/flash_drive
到/etc/apt/sources.list
- 连接并挂载闪存驱动器,然后用于
apt-update
加载包列表。
将来,重复步骤 1、2 和 4 来添加/更新软件包。如果您可以在离线计算机之间通过网络安装文件共享,那么您可以使用该路径而不是闪存驱动器来分发 s .deb
!许多拥有大量 Linux 机器的大公司将创建这些存储库镜像以减少带宽。