如何在没有 Internet(离线)的情况下安装软件或软件包?

aks*_*atj 278 package-management

我有一个朋友,他有一台无法连接到 Internet 的计算机。有什么方法可以轻松离线安装软件?

Jav*_*era 133

查看Keryx;它是一个离线存储库管理器。

它是如何工作的?它允许您将更新和新程序(带有依赖项)下载到您的闪存驱动器

它的界面类似于synaptic,但它可以从一个pendrive 运行(它不需要安装)。不幸的是,GUI需要wxWidgets的,不来在Ubuntu(从他们的跨平台和安装预装这里和Ubuntu库在这里)。它只能在 Ubuntu 系统中安装软件,但您可以在任何 Linux、Windows 或 OS X 中下载更新或新软件包。

在这里你可以找到一个教程

另一个详细的分步教程在这个答案中

Launchpad 还包含可下载的文件

截图:

屏幕截图

  • keryx 不再处于开发阶段,如果您在较新版本的 Ubuntu 上尝试此操作,请使用便携式版本来避免依赖关系的麻烦。 (13认同)
  • 我刚刚发布了一个新版本的 Keryx ([0.92.5](https://launchpad.net/keryx/stable/0.92)),这可能会解决一些问题。编译后的版本应该包含诸如 wxWidgets 之类的依赖项,并允许您在 Windows 上毫无问题地运行。 (3认同)
  • [如何使用?](http://askubuntu.com/a/181913/58950) (2认同)

jr0*_*ket 62

快速破解

一个快速的技巧是将你下载的所有安装包复制到他的机器上(详细说明在这里)。.deb 文件存储在 中/var/cache/apt/archives,然后在另一台计算机中启动Synaptic并选择File -> Add Package Downloaded并搜索放置文件的文件夹并打开它,接受所有(或使用命令从终端安装sudo dpkg -i DEB_PACKAGE_NAME)。

注意:
这假设您的包管理器未设置为在安装后立即删除包。它还假设您正在运行相同版本的 Ubuntu (10.10、12.04 等)和架构版本(32b 或 64b)


DVD 存储库

如果您想要最新的错误修复和安全补丁可用,请查看本教程,其中包括创建您自己的 DVD 存储库。

  • 如果你不能运行 `sudo apt-get update` 这将不会很好地工作,在设置新系统时仍然是一个很好的节省时间:) (2认同)

jr0*_*ket 45

USB存储库

如果您有一个大小合适的 USB 记忆棒 - 假设大约 4-8Gb(或外部硬盘驱动器),您可以设置 Ubuntu 存储库的自定义副本并将其配置为本地存储库,如help.ubuntu 上的AptGet/Offline/Repository 中所述.com。

要获取实际的包文件(.deb 文件),我建议使用apt-mirror.

apt-mirror软件包将帮助您创建一个自定义镜像,该镜像应小于完整存储库的 30Gb。安装软件包:

sudo apt-get install apt-mirror
Run Code Online (Sandbox Code Playgroud)

并编辑其配置文件

gksudo gedit /etc/apt-mirror/mirror.list
Run Code Online (Sandbox Code Playgroud)

或自 Ubuntu 14.04

gksudo gedit /etc/apt/mirror.list
Run Code Online (Sandbox Code Playgroud)

仅包含您想要的存储库部分。这是一个简单的示例,它从所有 4 个部分(主、受限、宇宙和多元宇宙)以及最新的错误修复复制二进制 .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
Run Code Online (Sandbox Code Playgroud)

估计在没有源的情况下,所有 4 个部分都需要大约 15Gb 的空间。

我已将所有 .deb 文件的路径设为/tmp,请确保您有足够的空间,以免硬盘驱动器填满(如果您的硬盘驱动器填满并且计算机死机,/tmp应通过重新启动清除)。

如果您只需要主文件,请从配置文件中删除受限制的、Universe 和多元宇宙名称。

如果您使用不同的架构(您有 64 位,但您的朋友有 32 位),则在mirror.list配置文件的开头添加以下内容:

set defaultarch i386
Run Code Online (Sandbox Code Playgroud)

一旦你有了apt-mirror你想要的配置,运行apt-mirror并去做一些有趣或改变生活的事情,因为获取存储库需要数小时或数天(取决于你的连接和你使用的 Ubuntu 镜像)。

获得 .deb 文件后,将文件复制到 USB 记忆棒(或外部硬盘驱动器)并按照前面提到的文章设置本地存储库。

在把它带给你的朋友之前测试它是否有效!


Arn*_*rja 36

apt-get--print-uris选项一起使用并添加-qq它会很安静。

使用sed删除添加到一些文件名额外的字符(像3%2a),并获得文件的URL,文件名和的md5sum。使用wget下载的文件。使用md5sum检查,如果文件被正确下载。

您可以使用它来创建适用于 Linux 或 Mac OS 的 shell 脚本(替换.cmd命令中的 to.sh和 dochmod a+x <filename>以添加执行脚本的权限)或 Windows 命令批处理文件和 MD5Sum 文件,以确保正确下载文件。

命令

创建脚本:

sudo apt-get <<<apt-get command and options>>> --print-uris -qq | sed -n "s/'\([^ ]\+\)' \([^ ]\+\) \([^ ]\+\) MD5Sum:\([^ ]\+\)/wget -c \1/p" > script.cmd
Run Code Online (Sandbox Code Playgroud)

例子:

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
Run Code Online (Sandbox Code Playgroud)

创建 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
Run Code Online (Sandbox Code Playgroud)

例子:

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
Run Code Online (Sandbox Code Playgroud)

md5sum如果您使用该操作系统下载文件,则需要Windows。


创建脚本以下载存储库列表:

sudo apt-get update --print-uris -qq | sed -n "s/'\([^ ]\+\)' \([^ ]\+\) \([^ ]\+\) :/wget -c \1 -O \2.bz2/p" > update.cmd
Run Code Online (Sandbox Code Playgroud)

检查 MD5 和

您可以将这些添加到脚本的末尾以检查 md5sum:

Linux:

md5sum --quiet -c md5sum.txt
Run Code Online (Sandbox Code Playgroud)

Windows(使用较旧的 md5sum,不支持 --quiet):

md5sum -c md5sum.txt
Run Code Online (Sandbox Code Playgroud)

自动添加到脚本:

echo -e "md5sum -c md5sum.txt\npause" >> script.cmd
Run Code Online (Sandbox Code Playgroud)

安装列表文件(更新命令)

对目标计算机运行这些命令。

您需要使用bunzip2来提取存储库列表文件:

bunzip2 *.bz2
Run Code Online (Sandbox Code Playgroud)

然后复制到列表文件夹(当前文件夹只包含列表文件):

sudo cp * /var/lib/apt/lists/
Run Code Online (Sandbox Code Playgroud)

以上组合(当前文件夹可能包含其他文件):

for listfile in `ls *.bz2`; do bunzip2 $listfile; sudo cp ${listfile%.bz2} /var/lib/apt/lists/; done
Run Code Online (Sandbox Code Playgroud)

更快的下载

如果您想更快地下载文件,请尝试使用 Axel。

替换wget -c ... -O ...axel ... -o ...

文件夹层次结构(使用 Windows 下载文件)

我通常会创建一个这样的文件夹:

  • apt-get/
    • 仓/
      • msys-1.0.dll
      • msys-intl-8.dll
      • 可执行文件
      • msys-iconv-2.dll
      • md5sum.exe
      • libeay32.dll
      • libintl3.dll
      • libssl32.dll
      • libiconv2.dll
    • 更新/
      • 更新命令
      • md5sum.txt
    • 安装/
      • 安装-foo.cmd
      • 安装栏.cmd
      • 升级命令
      • md5sum.txt

然后将wget上面的行更改为..\\bin\\wget.exemd5sum..\\bin\\md5sum.exe等。

这会将 *.deb 文件和列表文件分开到不同的文件夹中。

更新您的系统

  1. 启动到使用 Ubuntu 的目标计算机
  2. 创建更新脚本
  3. 启动到具有 Internet 连接的计算机
  4. 运行update.sh(适用于 Linux 或 Mac OS)或update.cmd(Windows)
  5. 返回目标计算机
  6. 安装列表文件
  7. 创建一个脚本upgrade/dist-upgrade(添加md5sum命令结束)
  8. 回到有互联网连接的电脑
  9. 运行upgrade.sh/dist-upgrade.sh(Linux 或 Mac OS)或upgrade.cmd/dist-upgrade.cmd(Windows)
  10. 返回目标计算机
  11. 复制*.deb文件到缓存:sudo cp *.deb /var/cache/apt/archives/
  12. 运行:sudo apt-get upgradesudo apt-get dist-upgrade

下载适用于 Windows 的可执行文件

Wget对于 Windows:http : //gnuwin32.sourceforge.net/packages/wget.htm

md5sum对于 Windows:http : //gnuwin32.sourceforge.net/packages/coreutils.htmhttp://www.etree.org/cgi-bin/counter.cgi/software/md5sum.exe

您也可以使用MinGW 中的那些,这是我使用的。你只需要wget.exemd5sum.exe和必要的共享库。检查“文件夹层次结构”部分。

笔记

  • 我不完全确定上面的所有命令是否都有效,因为我已经有一个月没有使用它们了。特别是update命令,我今天还没有测试它的某些部分。
  • 如果使用 Windows,要轻松查看命令的结果,请在脚本末尾添加“暂停”行。
  • 如果您经常使用这些命令,我​​建议您创建 shell 脚本来更新、升级和安装软件包。

  • 你能为此创建一个简单的 gui 吗:) (3认同)
  • 它也适用于Linux(这实际上更好,因为你不需要安装md5sum和wget)。Windows 部分适合那些没有可连接互联网的 Linux 计算机的人,因此您可以在网吧或只有 Windows 的朋友计算机中使用它。 (2认同)

Rob*_*ans 29

您需要先获得一台可以连接 Internet 的 PC,您可以在其中下载所需的 .deb 文件。下载所有文件后,您现在可以创建 CD/DVD rom 或 ISO 文件,您可以使用它来安装已下载到离线 PC 上的软件。

从全新安装或 VM 开始。
sudo apt-get install aptoncd

在一台 PC 上安装所需的软件包
sudo apt-get install gbrainy

运行aptoncd
在此处输入图片说明
点击创建
在此处输入图片说明
单击刻录并设置选项,然后单击应用
在此处输入图片说明
烧掉它或保存它
在此处输入图片说明

请注意, aptoncd 仅备份当前 apt-cache 中的内容。
这就是为什么我们从一个干净的 VM/新安装开始,并在一次运行中完成所有这些。

  • 只要您使用相同的基本系统媒体,就可以。如果您正在部署办公室,并且想要一种快速简单的方式来添加内容,那么这将非常有用。如果你使用 create-meta 包,是的 (2认同)

har*_*mkv 29

第 1 步:获取文件中的下载 URL:

执行以下命令,用所需的包名替换包名,用空格分隔。

apt-get -y install --print-uris package-name | cut -d\' -f2 | grep http:// > apturls
Run Code Online (Sandbox Code Playgroud)

第二步:将这个文件(apturls)复制到可以高速上网的机器上,执行如下命令下载包:

wget -i path-to-apturls-file 
Run Code Online (Sandbox Code Playgroud)

第 3 步:现在将这些下载的软件包下载到您的机器上,并使用以下命令安装它们:

cd path-to-the-downloaded-packages-directory

sudo dpkg -i *.deb
Run Code Online (Sandbox Code Playgroud)

完毕!

  • `--print-uris` 是否甚至打印系统中已经安装的依赖项? (2认同)

toh*_*ohu 23

离线存储库

此处描述如何创建离线存储库:您只需从archive.ubuntu.com下载适当的文件;或者,您可以使用apt-medium.

编辑:另一种基于本地文件存档的*.deb方法在不同的博客条目中进行了描述(请参阅此处此处)。Sarath Chandra总结如下:

  1. 使目录可访问(至少通过 root 访问)

    sudo mkdir /var/my-local-repo
    
    Run Code Online (Sandbox Code Playgroud)
  2. 将所有 deb 文件复制到此目录。

  3. 将目录设为 gzip:

    sudo bash -c 'dpkg-scanpackages /var/my-local-repo /dev/null | gzip -c9 > /var/my-local-repo/Packages.gz'
    
    Run Code Online (Sandbox Code Playgroud)

    或者

    sudo dpkg-scanpackages /var/my-local-repo /dev/null | gzip -c9 > /var/my-local-repo/Packages.gz
    
    Run Code Online (Sandbox Code Playgroud)
  4. 将本地仓库添加到源

    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
    
    Run Code Online (Sandbox Code Playgroud)


Cam*_*cri 20

您可以使用CubeGet。它是一个便携式软件包管理器,可让您在另一台联网的计算机(Linux 或 Windows)上下载软件包,然后将它们离线安装回您的原始 Linux 计算机。

CubeGet 所做的是创建一个Project,其中将包含计算机的存储库列表、已安装包的列表以及计算机的分发详细信息 (lsb_release)。然后使用该项目,它可以使用 CubeGet 在其他 Internet 连接的计算机(Windows 也)上打开,搜索和下载新存储库、包更新和特定包。

  • 没有 .deb 文件,因为它是独立的、可移植的,无需安装即可执行(只需运行立方体普通文件)。Cube.exe 也适用于 Windows 用户。 (2认同)

pop*_*pey 17

在突触中,您可以选择要安装的包,在第一个菜单下有一个选项可以生成脚本,您可以将其带到另一台机器并在那里运行。您在计算机上运行该脚本将“wget的”(即“下载”),你指定你想要的包(和它们的依赖)确实有互联网接入。

运行后,您将拥有断开连接的计算机所需的所有包文件。将它们放在 CD/USB 记忆棒上并通过sudo dpkg -i *.deb.


Has*_*ken 16

您可以使用apt-offlineapt-offline-gui
先决条件:有互联网连接的朋友的系统。apt-offline 安装在您的两个系统中。

离线安装只需 3 个简单步骤即可完成。

第 1 步
在家里
apt-offline set /tmp/apt-offline.sig
的已断开连接的 Debian 机器上生成签名文件上述命令将生成 apt 所需的有关更新其数据库的所有信息。

第二步
根据之前生成的签名文件
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是离线安装的最佳选择。

来源

  • 如何在离线机器上安装apt-offline? (2认同)

Dus*_*and 11

上面列出了几个好的,有效的答案。然而,这是我个人使用的机制—— apt-ftparchive。我在这里记录它,以防我将来再次需要它。也许它可能对你有用。

创建存档快照

  • 创建一个密切模仿目标环境的 Ubuntu 实例
    • 例如,Amazon 中的 Ubuntu 12.04 64 位实例
  • 从一个干净的包环境开始
    • sudo apt-get clean
  • 更新包列表
    • sudo apt-get update
  • 下载所有可用的软件包更新
    • sudo apt-get dist-upgrade --download-only
  • 下载所有相关的包和依赖项
    • sudo apt-get install --download-only byobu run-one bikeshed dotdee powernap
  • 安装 apt-ftparchive 实用程序
    • sudo apt-get install apt-utils
  • 创建包清单
    • (cd /var/cache/apt/archives/ && sudo apt-ftparchive packages . ) | sudo tee /var/cache/apt/archives/Packages
  • 创建包的存档
    • sudo tar cvf snapshot.tar -C /var/cache/apt archives/

在脱机目标系统上使用存档快照

  • 通过某种机制,您需要从源系统到目标系统获取snapshot.tar。也许在 USB 记忆棒上,或以其他方式。
  • 提取目标系统上的存档(在本例中,在 /home/ubuntu 中)
    • tar xvf snapshot.tar
  • 将本地离线源添加到 /etc/apt/sources.list
    • echo "deb file:/home/ubuntu/archives /" | sudo tee -a /etc/apt/sources.list
  • 更新包裹清单
    • sudo apt-get update
  • 根据需要安装软件包
    • sudo apt-get install byobu run-one bikeshed dotdee powernap


Har*_*ary 5

对于离线安装,您将需要这些软件包。如果您使用的是 Debian 系统

  • 获取带有.deb文件扩展名的包文件并用于dpkg -i package_name安装
  • 获取带有.tar.gz.tar.bz2文件扩展名的源 tarball ,然后使用以下命令提取并安装它们:

    tar -zxvf your_pack.tar.gz` or tar `-jxvf your_pack.tar.bz2
    make
    sudo make install
    make clean        (optional, and may prevent uninstallation)
    
    Run Code Online (Sandbox Code Playgroud)

您可能会遇到依赖项问题。您需要先安装所有这些才能成功进行离线安装。