我需要在另一个 ubuntu 安装中从 apt 缓存中安装同一软件的多个 deb 文件。
例如,我在同一文件夹 (/var/cache/apt/archives) 中拥有 vlc 的所有 deb 文件。我需要安装满足所有依赖项的 vlc。dpkg -i vlc*
由于依赖项,我无法使用它进行安装。
有办法解决吗?我的缓存中有很多软件包,我不想再次下载。请帮忙。
答案1
事实上你有很多解决方案:
- 将所有
.deb
文件从/var/cache/apt/archives
复制到新电脑的目录/var/cache/apt/archives
,或者只复制.deb
vlc 依赖项,而不是复制所有这些 deb。您可以通过命令了解 vlc 的依赖项apt-cache rdepends vlc
。现在,一旦您在第二个系统中有了这些 deb ,您就可以/var/cache/apt/archives
运行。sudo apt-get update
sudo apt-get install vlc
但只有当两个系统具有相同的操作系统版本和相同的软件包版本并具有相同的更新时,这才有效。更多信息
- 另一个解决方案是更好的是创建您自己的存储库,这样您就可以安装任何您想要的应用程序,而不必担心离线安装时的依赖关系地狱。看一下:https://askubuntu.com/a/648969/150504
答案2
回答你的问题:
将 /var/cache/apt/archives 中的所有 debs 复制到新机器的 /var/cache/apt/archives,然后像平常一样sudo apt-get update ; sudo apt-get install vlc
- 它将选择存档中的 .debs 并进行安装而无需下载。
更进一步:安装 apt-cacher-ng
在第一台机器上,执行sudo apt-get install apt-cacher-ng
。然后执行sudo nano /etc/apt/apt.conf
并插入字符串Acquire::http::Proxy "http://127.0.0.1:3142/";
- 这会告诉机器apt-cacher-ng
在更新时使用自身实例。现在,导入现有的缓存 debs - sudo cp -a /var/cache/apt/archives/* /var/cache/apt-cacher-ng/_import/
,然后打开浏览器http://localhost:3142/acng-report.html
,向下滚动,然后单击Start Import
。完成后,快速执行sudo apt-get update
- 然后,呼!您现在已经apt-cacher-ng
在主机上运行了,每次主机下载更新时,它都会为自身缓存它们和网络上的任何其他机器。
最后,第二机器,并插入sudo nano /etc/apt/apt.conf
字符串Acquire::http::Proxy "http://first.machine.ip.address:3142/";
第一台机器的 ip 地址apt-cacher-ng
是您在上面一段中安装的机器的 IP 地址- 现在,当您在任何一个机器,它将更新apt-cacher-ng
第一台机器上的,您无需再次下载。设置完成后,非常非常流畅和简单。