我试图在没有Internet连接的机器上安装一个包。我想要做的是通过互联网连接下载所有软件包和依赖关系,然后将所有内容都连接到离线计算机。如何下载所有依赖项和包到目录
我一直在玩apt-get
和apt-cache
,但我还没有想出一个简单快捷的方法来将软件包和依赖关系一次下载到我选择的目录中。我将如何做到这一点?我正确地解决这个问题吗? 你将如何安装具有很多依赖关系的脱机软件包?
我试图在没有Internet连接的机器上安装一个包。我想要做的是通过互联网连接下载所有软件包和依赖关系,然后将所有内容都连接到离线计算机。如何下载所有依赖项和包到目录
我一直在玩apt-get
和apt-cache
,但我还没有想出一个简单快捷的方法来将软件包和依赖关系一次下载到我选择的目录中。我将如何做到这一点?我正确地解决这个问题吗? 你将如何安装具有很多依赖关系的脱机软件包?
# aptitude clean
# aptitude --download-only install <your_package_here>
# cp /var/cache/apt/archives/*.deb <your_directory_here>
只有当您没有在本地安装软件包或其依赖项时才可以使用。 – Kissaki
在现实世界中,这不适合你。在大多数情况下,已经安装了许多依赖项包,因此--download-only不会下载它们,也不会将它们放在/ var/cache/apt/archive /目录中。所以你最终会得到不完整的依赖包。 – Shnd
我想这将工作,如果你可以保持安装,源(大概连接到互联网)和目标(没有互联网连接)完全相同,例如在两台机器上从相同的ISO安装Ubuntu,然后清理所有'。 deb源代码,然后安装所需的东西,将所有新下载的'.deb'复制到目标机器,然后运行'sudo dpkg -i * .deb'? – Mahesha999
我假设你有一个不错的胖USB高清和一个很好的网络连接。你可以使用apt-mirror来创建你自己的debian镜像。
不,我不知道。我玩apt-mirror,但我没有胖USB高清或与网络的良好连接。我真的只想下载我绝对需要的软件包。 – Rell3oT
的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
此下载所有的文件到当前directory.After,你可以复制他们在一个USB密钥和断开连接的Debian系统中安装。
学分:http://www.tuxradar.com/answers/517
PS 我基本上复制了博客文章,因为它不是非常可读的,在案件后就会消失。
apt-get方法仅在没有安装包时才起作用 –
在apt-get行中添加'-qq'就不再需要'grep'(并且需要'--assume-yes') – jpaugh
标记的答案有问题,正在下载的机器上的可用软件包可能与目标机器不同,因此软件包集可能不完整。
为了避免这种情况,并得到所有的依赖关系,我现在用的是以下几点:
apt-get download $(apt-rdepends <package>|grep -v "^ ")
我使用了' apt-rdepends,因为它会递归地列出所需的软件包。 但是,这两种解决方案都存在仍然(小的IMO)问题,即某些依赖项只能由实际命名为依赖项的包提供。一些依赖关系通过名称不同的包来解析,但具有相应的“提供”标签。例如,我遇到了debconf-2.0的参考资料尚未解决的问题 - 我的工具但非常可行的解决方案是手动将这些(通常很少)的包与另一个添加到管道的“grep -v”过滤掉。 – onno
你确定rdepends是否意味着递归依赖?我认为这是逆向依赖。 –
对于上面我的上面的评论,我把apt-cache rdepends与apt-rdepends混淆了。我的错误 - 你是对的,这是强大的。 –
我用apt-cache depends package
获得所有需要的软件包在任何情况下如果是已经安装在系统或不。 所以它会始终正确工作。
由于命令apt-cache的工作方式不同,根据语言的不同,您必须在系统上尝试此命令并调整命令。 容易缓存依赖yourpackage
上englisch系统,您可以:
$ apt-cache depends yourpackage
node
Depends: libax25
Depends: libc6
上的德国系统,您可以: 节点
Hängt ab von: libax25
Hängt ab von: libc6
的englisch版本与术语:
“ Depends:
“
您必须在此命令中将”yourpackage
“这个术语更改为您的愿望两次,注意这个的!
$ 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
和德国版本与术语:
“Hängt ab von:
”
你必须术语“yourpackage
”更改为您的心愿两次在此命令,照顾这!
如果您想使其适应您的语言,请在此命令中使用此文本两次!
$ 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
一旦获得文件,您将使用什么命令来确保在执行脱机安装时使用所有这些文件? – dtmland
我想如果你做的是dpkg -i package .deb package2.deb,dpkg会计算出安装的顺序 – FreeSoftwareServers
这对我来说不起作用,因为我的一个Depends是
有点简化(对我来说什么工作)的方式,为我工作(基于所有以上)
注意,依赖关系层次结构可以去更深然后一个层次
让你包的依赖
$ 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
非常感谢。我真的不知道是否有办法告诉APT也下载依赖关系并将它们缓存在/ var/cache/apt/archives中。我想下载'texlive-full --install-recommendation',并且只能在我的档案中找到一个名为'texlive-full'的元包。 –
我不知道缓存。你将不得不自己尝试http://askubuntu.com/questions/463380/difference-between-apt-get-d-install-apt-get-download – ozma
这将下载所有德布斯到目前目录,并且如果它找不到候选人将不会失败。
也不需要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中的DEP和失败的debconf上-2.0,但这个剧本让我什么,我需要!希望能帮助到你。
这对我很好。我不得不添加另一行来处理PreDepends。感谢分享! – tay10r
这里已经回答了同样的问题: 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")
http://superuser.com/questions/876727/how-to-download-deb-package-and-all-依赖关系| http://askubuntu.com/questions/492435/how-to-download-apt-and-all-its-dependencies | http://askubuntu.com/questions/219828/getting-deb-package-dependencies-for-an-offline-ubuntu-computer-through-windows | HTTP:// askubuntu。com/questions/216746/dependency-not-satisfiable-offline-deb-package-install/216755 –