我正在尝试在没有Internet连接的计算机上安装软件包。我想要做的是下载具有Internet连接的计算机上的所有软件包和依赖项,然后将所有内容运送到离线计算机。
我一直在玩apt-get
和apt-cache
,但我还没有找到一种快速简便的方法将软件包和依赖项一下子下载到我选择的目录中。我该怎么做?我正确地解决了这个问题吗?
您将如何安装具有大量依赖关系的脱机包?
答案 0 :(得分:63)
标记的答案存在以下问题:正在执行下载的计算机上的可用程序包可能与目标计算机不同,因此程序包集可能不完整。
为了避免这种情况并获得所有依赖关系,我使用以下内容:
apt-get download $(apt-rdepends <package>|grep -v "^ ")
答案 1 :(得分:35)
# aptitude clean
# aptitude --download-only install <your_package_here>
# cp /var/cache/apt/archives/*.deb <your_directory_here>
答案 2 :(得分:18)
同样的问题已在这里回答: How to list/download the recursive dependencies of a debian package?
尝试:
PACKAGES="wget unzip"
apt-get download $(apt-cache depends --recurse --no-recommends --no-suggests \
--no-conflicts --no-breaks --no-replaces --no-enhances \
--no-pre-depends ${PACKAGES} | grep "^\w")
答案 3 :(得分:17)
aptitude --download-only ...
方法仅适用于您手中有互联网连接的debian发行版。
如果不这样做,我认为最好在断开连接的debian机器上运行以下脚本:
apt-get --print-uris --yes install <my_package_name> | grep ^\' | cut -d\' -f2 >downloads.list
将downloads.list文件移动到连接的linux(或非linux)计算机上,然后运行:
wget --input-file myurilist
将所有文件下载到当前目录中。之后,您可以将它们复制到USB密钥上,然后安装在断开连接的debian机器上。
信用:http://www.tuxradar.com/answers/517
PS 我基本上复制了博客文章,因为它不太可读,如果帖子将消失。
答案 4 :(得分:8)
对我来说有点简化(以及对我有用的)方式(基于以上所有)
请注意,依赖关系层次结构可以更深入,然后是一个级别
获取包的依赖关系
$ apt-cache depends mongodb | grep Depends:
Depends: mongodb-dev
Depends: mongodb-server
获取网址:
sudo apt-get --print-uris --yes -d --reinstall install mongodb-org mongodb-org-server mongodb-org-shell mongodb-org-tools | grep "http://" | awk '{print$1}' | xargs -I'{}' echo {} | tee files.list
wget --input-file files.list
答案 5 :(得分:7)
这会将所有Debs下载到当前目录,如果找不到候选人,则不会失败。
也不要求sudo运行sript!
nano getdebs.sh && chmod +x getdebs.sh && ./getdebs.sh
#!/bin/bash
package=ssmtp
apt-cache depends "$package" | grep Depends: >> deb.list
sed -i -e 's/[<>|:]//g' deb.list
sed -i -e 's/Depends//g' deb.list
sed -i -e 's/ //g' deb.list
filename="deb.list"
while read -r line
do
name="$line"
apt-get download "$name"
done < "$filename"
apt-get download "$package"
注意:我用这个作为我的例子,因为我实际上是在尝试使用针对SSMTP的Deps而且在debconf-2.0上失败了,但是这个脚本让我得到了我需要的东西!希望它有所帮助。
答案 6 :(得分:4)
我使用apt-cache depends package
获取所有必需的软件包,如果已经安装在系统上 。
所以它总能正常工作
因为命令apt-cache的工作方式不同,具体取决于语言,所以必须在系统上尝试此命令并调整命令。
apt-cache取决于你的包装
在englisch系统上,你得到:
$ apt-cache depends yourpackage
node
Depends: libax25
Depends: libc6
在德国体系中,你得到:
节点
Hängt ab von: libax25
Hängt ab von: libc6
englisch版本的术语:
&#34; Depends:
&#34;
你必须改变术语&#34; yourpackage
&#34;在这个命令中你的愿望两次,照顾这个!
$ sudo apt-get --print-uris --yes -d --reinstall install yourpackage $(apt-cache depends yourpackage | grep " Depends:" | sed 's/ Depends://' | sed ':a;N;$!ba;s/\n//g') | grep ^\' | cut -d\' -f2 >downloads.list
和德语版本的术语:
&#34; Hängt ab von:
&#34;
你必须改变术语&#34; yourpackage
&#34;按照你的意愿两次执行此命令,请注意这一点!
此文本在此命令中使用两次,如果您想使其适应您的语言,请注意这一点!
$ sudo apt-get --print-uris --yes -d --reinstall install yourpackage $(apt-cache depends yourpackage | grep "Hängt ab von:" | sed 's/ Hängt ab von://' | sed ':a;N;$!ba;s/\n//g') | grep ^\' | cut -d\' -f2 >downloads.list
您可以在downloads.list中找到链接列表
检查列表,转到您的文件夹并运行列表:
$ cd yourpathToYourFolder
$ wget --input-file downloads.list
您所需的所有套餐均在:
$ ls yourpathToYourFolder
答案 7 :(得分:1)
我假设你有一个不错的USB高清和良好的网络连接。您可以使用apt-mirror来创建自己的debian镜像。
答案 8 :(得分:0)
这会将所有软件包和依赖项(尚未安装)下载到您选择的目录中:
sudo apt-get install -d -o Dir::Cache=/path-to/directory/apt/cache -o Dir::State::Lists=/path-to/directory/apt/lists packages
确保/path-to/directory/apt/cache
和/path-to/directory/apt/lists
存在。
如果您未设置-o Dir::Cache
,则它指向/var/cache/apt
,
Dir::State::Lists
指向/var/lib/apt/lists
(保留可用软件包的索引文件)
-o
的两个选项都可以用于更新和升级,而不能用于安装。
在不同的计算机上运行不带'-d
'的相同命令