问题描述
我有一个朋友有一台没有连接到互联网的电脑。有没有办法轻松离线安装软件?
最佳解决方法
查看Keryx;它是一个离线资源库管理器。
它是如何工作的?它可以让你下载更新和新的程序(依赖)到你的闪存驱动器。
它的界面类似于突触,但它起作用(它不需要安装)。不幸的是,GUI需要wxwidgets,它不会在Ubuntu上预装(它们是cross-platform,可以从here和Ubuntu存储库here中安装)。它只能在Ubuntu系统中安装软件,但您可以在任何Linux,Windows或OS X下载更新或新软件包。
在这里你可以找到a tutorial。
另一个详细的step-by-step教程位于this answer中。
Launchpad还承载downloadable files。
屏幕截图:
次佳解决方法
快速入门
一个简单的方法就是将您下载的所有软件包复制到他的机器上(detailed instructions here)。 .deb文件存储在/var/cache/apt/archives
中,然后在另一台计算机上启动Synaptic,然后选择File -> Add Package Downloaded
并搜索文件夹,然后打开它,接受所有文件(或使用命令sudo dpkg -i DEB_PACKAGE_NAME
从终端安装)。
注意:这假定您的软件包管理器没有设置为在安装后立即删除软件包。它还假定您运行的是相同版本的Ubuntu(10.10,12.04等)和体系结构版本(32b或64b)。
DVD存储库
如果您想要最新的错误修复程序和安全修补程序,请查看this tutorial,其中包括创建您自己的DVD存储库。
第三种解决方法
一个USB存储库
如果您有一个体面的USB存储棒 – 假设大约4-8Gb(或外部硬盘驱动器),您可以设置Ubuntu存储库的自定义副本,并将其配置为本地存储库,位于help.ubuntu.com上的AptGet/Offline/Repository中。
要获得实际的软件包文件(.deb文件),我建议使用apt-mirror
。
apt-mirror
软件包将帮助您创建一个自定义镜像,该镜像应该小于完整存储库的30Gb。安装软件包:
sudo apt-get install apt-mirror
并编辑其配置文件
gksudo gedit /etc/apt-mirror/mirror.list
或从Ubuntu 14.04开始
gksudo gedit /etc/apt/mirror.list
只包含您想要的储存库部分。下面是一个简单的例子,它复制了来自所有4个部分(main,restricted,universe和multiverse)的二进制.deb文件以及最新的错误修复。
# apt-mirror configuration file
##
## The default configuration options (uncomment and change to override)
##
#
set base_path /tmp/ubuntumirror
#
## Repositories to copy from -
## use a mirror so you don't overload the main server!!!
# Lucid binaries - no source files
deb http://archive.ubuntu.com/ubuntu lucid main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu lucid-updates main restricted universe multiverse
## Clean up older .deb files no longer in the archive
clean http://archive.ubuntu.com/ubuntu
据猜测,你将需要大约15Gb的空间用于所有4个部分,没有源代码。
我已将所有.deb文件的路径设置为/tmp
,请确保您有足够的空间以便硬盘驱动器不会填满(如果您的硬盘驱动器已满并且计算机冻结,则应重新启动/tmp
) 。
如果您只想要主文件,请从配置文件中删除受限制的Universe和多个MULEMAEE名称。
如果您使用不同的架构(您有64位,但您的朋友有32位),请在mirror.list配置文件的开头添加以下内容:
set defaultarch i386
一旦你有了apt-mirror
配置,运行apt-mirror
并去做一些有趣的事情或改变生活,因为它需要几个小时或几天才能获得存储库(取决于你的连接和你使用的Ubuntu镜像)。
获得.deb文件后,将文件复制到USB memory 棒(或外部硬盘驱动器),并根据前面提到的文章设置本地存储库。
在把它送给你的朋友之前测试它的工作原理!
第四种方法
您需要先连接互联网的PC,然后才能下载所需的.deb文件。下载完所有文件后,您现在可以创建CD /DVD ROM或ISO文件,您可以使用它来安装已下载到离线PC中的软件。
从干净的安装或虚拟机开始。 sudo apt-get install aptoncd
在一台PC sudo apt-get install gbrainy
上安装你想要的软件包
运行aptoncd点击创建点击刻录并设置选项,然后点击应用刻录或保存
请注意,aptoncd仅备份当前apt-cache中的内容。这就是为什么我们从一个干净的VM /新安装开始,并在一次运行中完成了所有这些。
第五种方法
我使用apt-get和”–print-uris”选项来执行此操作。我还加了”-qq”,所以它会很安静。
使用sed删除添加到某些文件名(比如3%2a)的额外字符并获取文件的url,文件名和md5sum。使用wget下载文件。使用md5sum检查文件是否正确下载。
您可以使用它为Linux或Mac OS创建shell脚本(将命令中的”.cmd”替换为.sh,并执行“chmod a + x(filename)”以添加执行脚本的权限)或Windows命令批处理文件,以及MD5Sum文件以确保文件正确下载。
Commands
创建脚本:
sudo apt-get <<<apt-get command and options>>> --print-uris -qq | sed -n "s/'\([^ ]\+\)' \([^ ]\+\) \([^ ]\+\) MD5Sum:\([^ ]\+\)/wget -c \1/p" > script.cmd
例子:
sudo apt-get install anjuta --print-uris -qq | sed -n "s/'\([^ ]\+\)' \([^ ]\+\) \([^ ]\+\) MD5Sum:\([^ ]\+\)/wget -c \1/p" > install-anjuta.cmd
sudo apt-get upgrade --print-uris -qq | sed -n "s/'\([^ ]\+\)' \([^ ]\+\) \([^ ]\+\) MD5Sum:\([^ ]\+\)/wget -c \1/p" > upgrade.cmd
sudo apt-get dist-upgrade --print-uris -qq | sed -n "s/'\([^ ]\+\)' \([^ ]\+\) \([^ ]\+\) MD5Sum:\([^ ]\+\)/wget -c \1/p" > dist-upgrade.cmd
创建md5sum文件:
sudo apt-get <<<apt-get command and options>>> --print-uris -qq | sed -n -e "s/_[0-9]%[0-9a-f][0-9a-f]/_/" -e "s/'\([^ ]\+\)' \([^ ]\+\) \([^ ]\+\) MD5Sum:\([^ ]\+\)/\4 .\/\2/p" > md5sum.txt
例子:
sudo apt-get install anjuta --print-uris -qq | sed -n -e "s/_[0-9]%[0-9a-f][0-9a-f]/_/" -e "s/'\([^ ]\+\)' \([^ ]\+\) \([^ ]\+\) MD5Sum:\([^ ]\+\)/\4 .\/\2/p" > md5sum.txt
sudo apt-get upgrade --print-uris -qq | sed -n -e "s/_[0-9]%[0-9a-f][0-9a-f]/_/" -e "s/'\([^ ]\+\)' \([^ ]\+\) \([^ ]\+\) MD5Sum:\([^ ]\+\)/\4 .\/\2/p" > md5sum.txt
sudo apt-get dist-upgrade --print-uris -qq | sed -n -e "s/_[0-9]%[0-9a-f][0-9a-f]/_/" -e "s/'\([^ ]\+\)' \([^ ]\+\) \([^ ]\+\) MD5Sum:\([^ ]\+\)/\4 .\/\2/p" > md5sum.txt
如果您使用该操作系统下载文件,则需要md5sum for Windows。
创建脚本以下载存储库列表:
sudo apt-get update --print-uris -qq | sed -n "s/'\([^ ]\+\)' \([^ ]\+\) \([^ ]\+\) :/wget -c \1 -O \2.bz2/p" > update.cmd
检查MD5总和
您可以将这些添加到脚本的末尾以检查md5sum:
Linux的:
md5sum --quiet -c md5sum.txt
Windows(使用旧的md5sum,不支持–quiet):
md5sum -c md5sum.txt
要自动添加到脚本:
echo -e "md5sum -c md5sum.txt\npause" >> script.cmd
安装列表文件(更新命令)
将这些命令运行到目标计算机。
您需要使用bunzip2来提取存储库列表文件:
bunzip2 *.bz2
然后复制到列表文件夹(当前文件夹只包含列表文件):
sudo cp * /var/lib/apt/lists/
以上组合(当前文件夹可能包含其他文件):
for listfile in `ls *.bz2`; do bunzip2 $listfile; sudo cp ${listfile%.bz2} /var/lib/apt/lists/; done
更快的下载
如果您想更快地下载文件,请尝试使用Axel。
用axel ... -o ...
替换wget -c ... -O ...
。
文件夹层次结构(使用Windows下载文件)
我通常创建一个这样的文件夹:
-
apt-get /
-
斌/
-
MSYS-1.0.dll
-
msys-intl-8.dll
-
wget.exe
-
msys-iconv-2.DLL
-
md5sum.exe
-
的libeay32.dll
-
libintl3.dll
-
libssl32.dll
-
libiconv2.dll
-
-
更新/
-
update.cmd的
-
md5sum.txt
-
-
安装/
-
install-foo.cmd
-
install-bar.cmd
-
upgrade.cmd
-
md5sum.txt
-
-
然后将上述行中的wget
更改为..\\bin\\wget.exe
,md5sum
,..\\bin\\md5sum.exe
等。
这会将* .deb文件和列表文件分隔到不同的文件夹中。
更新您的系统
-
启动到使用Ubuntu的计算机
-
创建一个更新脚本
-
通过互联网连接启动计算机
-
运行update.sh(适用于Linux或Mac OS)或update.cmd(Windows)
-
回到目标电脑
-
安装列表文件
-
创建升级脚本/dist-upgrade(添加md5sum命令结束)
-
回到有互联网连接的电脑
-
运行upgrade.sh/dist-upgrade.sh(Linux或Mac OS)或upgrade.cmd /dist-upgrade.cmd(Windows)
-
回到目标电脑
-
将* .deb文件复制到缓存:
sudo cp *.deb /var/cache/apt/archives/
-
运行:
sudo apt-get upgrade
或sudo apt-get dist-upgrade
下载适用于Windows的可执行文件
Wget for Windows:http://gnuwin32.sourceforge.net/packages/wget.htm
Windows的md5sum:http://gnuwin32.sourceforge.net/packages/coreutils.htm或http://www.etree.org/cgi-bin/counter.cgi/software/md5sum.exe
您也可以使用MinGW中的那些,这些都是我使用的。您只需要wget.exe,md5sum.exe和必要的共享库。检查章节”Folder Hierarchy”。
说明
-
我不完全确定上述命令的所有内容是否能够正常工作,因为我现在还没有使用它们一个月。特别是更新命令,我今天没有测试它的一些部分。
-
要轻松查看命令的结果,请在脚本末尾添加”pause”行(如果使用Windows)。
-
如果您经常使用这些命令,我建议创建shell脚本来更新,升级和安装软件包。
第六种方法
离线存储库
here描述了如何创建离线存储库:您只需从archive.ubuntu.com下载适当的文件即可。或者,您可以使用apt-medium
。
编辑:另一种基于*.deb
文件的本地存档的方法在不同的博客条目中进行了介绍(请参阅here和here)。 Sarath Chandra总结如下:
-
创建一个目录(至少由root)
sudo mkdir /var/my-local-repo
-
将所有的deb文件复制到这个目录。
-
使目录为
sudo bash -c 'dpkg-scanpackages /var/my-local-repo /dev/null | gzip -c9 > /var/my-local-repo/Packages.gz'
要么
sudo dpkg-scanpackages /var/my-local-repo /dev/null | gzip -c9 > /var/my-local-repo/Packages.gz
-
将本地回购添加到来源
echo "deb file:/var/my-local-repo ./" > /tmp/my-local.list sudo mv /tmp/my-local.list /etc/apt/sources.list.d/my-local.list sudo apt-get update
第七种方法
您可以使用Cube。它是一个便携式软件包管理器,可让您在另一台连接到互联网的计算机上下载软件包,并在离线状态下将其安装回原始的Linux计算机。
下载应用程序(在Windows上)
安装应用程序(在Linux上)
您可以在Cube的网站上下载它。
第八种方法
在突触中,您可以选择要安装的软件包,并在第一个菜单下有一个选项来生成一个脚本,您可以将脚本带到另一台机器并在其中运行。此脚本将”wget”(即”download”)您指定的所有包(及其依赖关系)包含在可以访问Internet的计算机上运行。
一旦运行,您将拥有断开连接的计算机所需的所有包文件。将它们放在CD /USB存储棒上并通过sudo dpkg -i *.deb
进行安装。
第九种方法
第1步:获取文件中的下载URL:
执行以下命令,将package-names替换为必需的命令,并用空格分隔。
apt-get -y install --print-uris package-name | cut -d\' -f2 | grep http:// > apturls
第2步:将该文件(apturls)复制到具有high-speed Internet访问权限的计算机上,并执行以下命令下载软件包:
wget -i path-to-apturls-file
第3步:现在将这些下载的软件包拿到您的机器上,并使用以下命令进行安装
cd path-to-the-downloaded-packages-directory
sudo dpkg -i *.deb
完成!
第十种方法
您可以使用apt-offline
或apt-offline-gui
。 Pre-requistes:可连接互联网的朋友系统。 apt-offline安装在您的系统中。
离线安装通过3个简单步骤完成。
步骤1:在家中的Disconnected Debian框中生成签名文件apt-offline set /tmp/apt-offline.sig
上述命令将生成apt更新其数据库所需的所有信息。
步骤2:根据之前生成的签名文件下载数据apt-offline get C:\apt-offline.sig --threads 5
上述命令将按签名文件中所述下载数据。为了加速下载(可以来自多个apt仓库),在这个例子中,我们产生了5个下载线程。完成后,您可以将数据(归档文件,如果使用–bundle选项)复制回可移动介质并将其复制回脱机主机。
第3步:回到家用Debian机器后,将数据从可移动介质送入apt-offline:apt-offline install /media/USB/apt-offline.zip
这将无缝地更新断开连接的机器上的APT数据库。
Apt-offline甚至可以在Windows系统中使用。在我看来,apt-offline
是离线安装的最佳选择。