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

#1 楼

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

它是如何工作的?它使您可以将更新和新程序(具有相关性)下载到闪存驱动器。

其界面类似于synaptic,但可从pendrive(无需安装)中工作。不幸的是,GUI需要wxwidget,它们并未预装在Ubuntu上(它们是跨平台的,可从此处和Ubuntu存储库安装)。它只能在Ubuntu系统中安装软件,但是您可以在任何Linux,Windows或OS X上下载更新或新软件包。

在这里可以找到教程。

此答案中还有另一个详细的分步教程。

Launchpad还托管可下载的文件。

屏幕截图: />

评论


keryx不再在开发中,如果您正在较新版本的Ubuntu上尝试使用此版本,请使用可移植版本来避免依赖的麻烦。

– Alex R
2012年12月6日上午10:54

尽管显然需要进一步的开发和改进,但我仍然会使用keryx而不出现任何问题。

–卡尼迪尔
13年9月27日在22:44

如何使用?

–卡尼迪尔
16年2月24日在4:41

如果其他脱机计算机没有gcc,g ++怎么办?这是一个全新安装的ubuntu。如何安装wxwidgets?没有wxwidgets,它会抱怨缺少模块...

–报价不能拒绝
16年8月31日在12:10



我刚刚发布了Keryx(0.92.5)的新版本,该版本可能会解决一些问题。编译后的版本应包含诸如wxWidgets之类的依赖项,并允许您在Windows上毫无问题地运行。

– Michael Crenshaw
17年6月21日在14:36

#2 楼

快速攻克
快速攻克是将您安装时下载的所有软件包复制到他的机器上(此处有详细说明)。 .deb文件存储在/var/cache/apt/archives中,然后在另一台计算机上启动Synaptic,然后选择File -> Add Package Downloaded并搜索文件夹(如果您放置了这些文件并打开它),接受所有文件夹(或使用命令sudo dpkg -i DEB_PACKAGE_NAME从终端安装)。
注意:
这假设您的软件包管理器未设置为在安装后立即删除软件包。它还假设您正在运行相同版本的Ubuntu(10.10、12.04等)和体系结构版本(32b或64b)。和可用的安全补丁,然后看看本教程,其中涵盖了创建自己的DVD存储库。

评论


如果您无法运行sudo apt-get update,它将无法很好地工作,但是在设置新系统时仍然可以节省时间:)

–GM-Script-Writer-62850
13年4月30日在1:54



同意,刚刚将两台计算机从13.04升级到13.10。第一个不得不下载〜1.8Gb,将/ var / cache / apt / archives的内容复制到第二个使得它只能下载〜250Mb。尽管如此,您仍需要连接才能运行安装。

– MaximimeR。
13年2月2日在18:16

如果您复制/ var / lib / apt / lists,则不需要apt-get更新-此目录包含apt-get更新下载的存储库信息。

–ignis
2014年3月19日在21:21

我将.deb从/ var / cache / apt / archives复制到了USB。在另一台计算机上,我仅打开USB驱动器,然后双击.deb,这将启动Ubuntu GUI软件更新程序。容易偷懒。

–杰克逊克
16-4-20的3:30

@ jr0cket:有什么方法可以避免在安装Debian时已经(内置)的/ var / cache / apt / archives文件夹中的软件包吗?我的USB驱动器是4 GB。

–贾斯汀
16-4-25在9:07



#3 楼

USB存储库

如果您拥有合适的USB记忆棒-假设容量约为4-8Gb(或外部硬盘驱动器),则可以设置Ub​​untu存储库的自定义副本并将其配置为本地存储在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个部分(主要,受限,Universe和Multiverse)以及最新的错误修复程序中复制二进制.deb文件。
据推测,所有4个部分将需要大约15Gb的空间,而没有源。您的硬盘驱动器没有装满(如果硬盘驱动器没有装满,并且计算机死机,应重新启动以清除/tmp)。

如果您使用的是其他体系结构(您使用64位,而您的朋友使用32位),则在mirror.list配置文件的开头添加以下内容:

# 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


一旦您拥有所需的/tmp配置,请运行apt-mirror并进行一些有趣的事情或改变生活,这将需要数小时几天或几天来获取存储库(取决于您的连接和所使用的Ubuntu镜像)。

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

进行测试,然后再将其用于您的朋友!

评论


apt-mirror软件包的详细信息位于:apt-mirror.sourceforge.net

– jr0cket
2010年8月5日上午10:39

当我在台式机版/ Rufus / USB记忆棒/试用模式的Ubuntu 16.10(Yakkety Yak)上尝试sudo apt-get install apt-mirror时,出现“ E:无法找到apt-mirror包”。已通过ping验证与Internet的连接。

– Peter Mortensen
17-3-30在11:32



运行sudo apt-get update无法修复它。

– Peter Mortensen
17 Mar 30 '17 at 11:37

#4 楼

apt-get--print-uris选项一起使用并添加-qq,这样它就会很安静。文件。使用sed下载文件。使用3%2a来检查文件是否已正确下载。脚本)或Windows Command批处理文件,以及MD5Sum文件以确保正确下载文件。

命令

创建脚本:

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


示例:

sudo apt-get install anjuta --print-uris -qq | sed -n "s/'\([^ ]\+\)' \([^ ]\+\) \([^ ]\+\) MD5Sum:\([^ ]\+\)/wget -c /p" > install-anjuta.cmd
sudo apt-get upgrade --print-uris -qq | sed -n "s/'\([^ ]\+\)' \([^ ]\+\) \([^ ]\+\) MD5Sum:\([^ ]\+\)/wget -c /p" > upgrade.cmd
sudo apt-get dist-upgrade --print-uris -qq | sed -n "s/'\([^ ]\+\)' \([^ ]\+\) \([^ ]\+\) MD5Sum:\([^ ]\+\)/wget -c /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:\([^ ]\+\)/  .\//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:\([^ ]\+\)/  .\//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:\([^ ]\+\)/  .\//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:\([^ ]\+\)/  .\//p" > md5sum.txt


如果要使用Windows操作系统下载文件,则需要Windows的wget。 >创建脚本以下载存储库列表:

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



检查MD5汇总

您可以将其添加到脚本末尾,检查md5sum: />
md5sum --quiet -c md5sum.txt


T o自动添加到脚本:

md5sum -c md5sum.txt


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

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

需要使用md5sum提取存储库列表文件:

echo -e "md5sum -c md5sum.txt\npause" >> script.cmd


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

bunzip2 *.bz2


以上结合在一起(当前文件夹可能包含其他文件):

sudo cp * /var/lib/apt/lists/


快速下载

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

.cmd替换.sh。 br />我通常会创建一个像这样的文件夹:


apt-get /


bin /


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 /


update.cmd
md5sum.txt


安装/


install-foo.cmd
install-bar.cmd md5sum.txt





,然后将上方的chmod a+x <filename>更改为md5sum,将bunzip2更改为wget -c ... -O ...,等等。

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

更新系统


引导到目标计算机使用Ubuntu
创建更新脚本<​​br />引导到具有Internet连接的计算机
运行axel ... -o ...(对于Linux或Mac OS)或wget(Windows)
返回目标计算机
安装列表文件
..\bin\wget.exe创建脚本(添加q431 2079q命令结束)
返回具有Internet连接的计算机
运行md5sum(Linux或Mac OS)或..\bin\md5sum.exe(Windows)
返回目标计算机
update.sh文件复制到缓存:update.cmd

运行:upgrade/dist-upgrademd5sum


下载Windows的可执行文件

Windows的upgrade.sh/dist-upgrade.sh:http:// gnuwin32。适用于Windows的sourceforge.net/packages/wget.htm

upgrade.cmd/dist-upgrade.cmd:http://gnuwin32.sourceforge.net/packages/coreutils.htm或http://www.etree.org/cgi-bin /counter.cgi/software/md5sum.exe

您也可以使用MinGW中的那些,这就是我使用的。您只需要*.debsudo cp *.deb /var/cache/apt/archives/和必要的共享库。检查“文件夹层次结构”部分。

注意事项


我不确定上面命令中的所有命令是否都能正常工作,因为我没有使用它们一个月了。特别是sudo apt-get upgrade命令,我今天尚未对其进行某些部分的测试。
若要轻松查看命令的结果,请在脚本的末尾添加“暂停”行(如果使用Windows)。
如果使用这些命令,我​​建议创建Shell脚本来更新,升级和安装软件包。经常。


评论


您可以为此创建一个简单的GUI):

–快球
2012年7月22日,下午3:32

使用Windows似乎很奇怪...

– Alex R
2012年12月6日上午11:50

它也适用于Linux(实际上更好,因为您不需要安装md5sum和wget)。 Windows部分适用于那些没有可连接Internet的Linux计算机的用户,因此您可以在网吧或只有Windows的朋友的计算机中使用它。

– Arnel A. Borja
2012年12月10日的1:32

-qq选项似乎禁止apt-get update的所有输出。我想你真的不想要这个选项。

–俄罗斯
18年6月25日在14:59

#5 楼

您需要首先获得一台具有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 /新安装开始并一次执行所有这些操作的原因。

评论


那么,您是在说如果我制作了一个vm并安装了我想要的所有应用程序,然后运行此程序,将cd / dvd放入了离线PC。并会在上面安装所有应用程序?

– Alex
2012年5月1日22:51

只要您使用相同的基本系统介质,就可以。如果您要部署办公室,并且想要一种快速简单的方法来添加内容,那么这将非常有用。如果使用create-meta包,是

–RobotHumans
2012年5月1日22:56



从映像还原需要安装hal,但据我所知,它已被弃用,不再受支持。

– Flashrunner
17年5月23日在21:06

有一个生动的代码构建.launchpad.net /〜ubuntu-branches / ubuntu / vivid / hal / vivid

–RobotHumans
17年5月23日在22:28

#6 楼

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

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

apt-get -y install --print-uris package-name | cut -d\' -f2 | grep http:// > apturls


第2步:将此文件(apturls)复制到具有高速Internet访问权限的计算机上,然后执行以下命令以下载软件包:
步骤3:现在将那些下载的软件包下载到您的计算机上,并使用:

wget -i path-to-apturls-file 


完成!
安装它们。

评论


--print-uris是否可以打印系统中已经安装的依赖项?

– yuric
2015年9月25日在21:18

#7 楼

脱机存储库

此处描述了如何创建脱机存储库:您只需要从archive.ubuntu.com下载相应的文件即可;或者,您可以使用apt-medium

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



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

所有的deb文件都到该目录。

将该目录作为gzip:

sudo mkdir /var/my-local-repo






将本地仓库添加到资源中

sudo bash -c 'dpkg-scanpackages /var/my-local-repo /dev/null | gzip -c9 > /var/my-local-repo/Packages.gz'




#8 楼

您可以使用CubeGet。它是一个便携式软件包管理器,可让您在另一台与Internet连接的计算机(Linux或Windows)上下载软件包,然后将其脱机安装回原始Linux计算机。项目,将包含计算机的存储库列表,已安装软件包的列表以及计算机的分发详细信息(lsb_release)。然后,使用该项目,可以使用CubeGet在其他与互联网连接的计算机上打开该项目,也可以搜索并下载新的存储库,软件包更新和特定的软件包。

评论


是.deb还是.exe?

–user204653
2013年12月15日下午3:53

没有.deb文件,因为它是独立的,可移植的,并且无需安装即可执行(只需运行多维数据集普通文件)。 Windows用户还包括Cube.exe。

–卡米里
2013年12月18日下午4:10

需要更多的人对此进行了解。我爱你。

– Howderek
15年6月24日在19:19

在Win 7 Ultimate 32位上运行此应用程序时出现错误。图片:i.stack.imgur.com/XW3wt.jpg错误消息:问题签名:问题事件名称:CLR20r3问题签名01:cube.exe问题签名02:1.0.9.3问题签名03:54bd0258问题签名04:glib-sharp问题签名05:2.12.0.0问题签名06:517edc4c问题签名07:1b4问题签名08:17问题签名09:System.DllNotFoundException OS版本:6.1.7600.2.0.0.256.1语言环境ID:16393

–山迪普
16年6月6日在8:11



多维数据集(launchpad.net/cube-server)不在Windows上列出项目。

–titusfx
18年6月17日在16:46



#9 楼

在synaptic中,您可以选择要安装的软件包,并在第一个菜单下有一个生成脚本的选项,您可以将该脚本带到另一台计算机并在该计算机上运行。该脚本将“ wget”(即“下载”)您指定要使用的所有软件包(及其依赖项),这些软件包将在具有Internet访问权限的计算机上运行。

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

评论


这是一个不错的技巧,但是2台计算机可以完成此过程?嗯

– Suhaib
2012年10月2日14:23

@Suhaib-不知道如何在没有“两台计算机”的情况下以任何方式下载所需的软件包……您需要一台“在线”计算机才能将软件包以某种方式发送到离线计算机(即使它是在不同主机操作系统上运行的VM或Docker容器,或将一堆手动curl / wget副本复制到某些外部媒体上...

–灰烬
19年5月20日在13:54

#10 楼

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

只需3个简单步骤即可完成脱机安装。

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

步骤2:
根据早期生成的签名文件下载数据/>以上命令将按照签名文件中的说明下载数据。为了加快下载速度(可以从多个apt仓库中下载),在本示例中,我们产生了5个下载线程。
完成后,您可以仅复制数据(如果使用--bundle选项,则为存档文件)返回到可移动介质,然后将其复制回您的脱机主机。

步骤3:
一旦回到家用Debian机器上,就将数据从可移动介质馈送到apt -offline:apt-offline get C:\apt-offline.sig --threads 5
这将无缝更新断开连接的计算机上的APT数据库。

Apt-offline甚至可以在Windows系统中使用。我认为,apt-offline install /media/USB/apt-offline.zip是脱机安装的最佳选择。



评论


有两个观察结果:第一,从.sig文件为空的意义上说,为已安装或准备安装的软件包生成签名“失败”。这有点令人不安,但显然很正常。其次,仅当/ var / lib / apt / lists已正确植入种子时,apt和apt-offline才能正常工作。如果目标计算机和主机具有不同的体系结构,则这是相当大的工作量。

–Urhixidur
2014年7月30日13:26



源PC和目标PC是否都需要具有相同版本的Ubuntu?

–图兰斯·科尔多瓦(TulainsCórdova)
15年7月21日在16:32

如何将apt-offline安装到脱机计算机?

–萨米人
19年5月9日在6:25

apt-offline已于2019年10月从直播CD上的Xubuntu和Ubuntu Studio删除,不再可用在Ubuntu 20.04 LTS软件包存档中。

–斯蒂芬·迈克尔·凯拉特(Stephen Michael Kellat)
19年12月8日在21:12

@Sami通过在https://packages.ubuntu.com/上搜索软件包,将.deb文件传输到脱机计算机并尝试使用sudo dpkg -i apt-offline.deb进行安装来完成此操作。然后它会给出错误,因为它依赖于其他软件包,因此请以相同的方式先安装这些软件包。

– TamaMcGlinn
20 Mar 24 '20 at 12:35

#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/



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


通过某种机制,您将需要从源获取快照。到目标系统。
解压缩目标系统上的档案(在这种情况下,在/ 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




#12 楼

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


使用.deb文件扩展名获取软件包文件,并使用dpkg -i package_name进行安装

使用.tar.gz获取源tarball, .tar.bz2文件扩展名,然后使用以下文件解压缩并安装它们:

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



您可能会遇到依赖项问题。您需要先安装所有这些组件,然后才能成功进行脱机安装。

#13 楼

是。您可以下载DVD iso,将其刻录在DVD上,然后从DVD安装软件。参见此处CD和DVD可以作为包管理器的源,与在线存档一样。

#14 楼

在脱机软件包安装之前,您可以做的第一件事就是更新所需的存储库。您应该肯定喜欢更新主存储库(免费和官方支持的软件)。

您要安装的应用程序可能在其他一些存储库中,例如Universe(免费,但没有官方支持),Restricted(非免费,官方支持),或Multiverse(非-免费,没有官方支持)存储库。因此,您可能也想要其中的一个或多个。

因此,该过程的第一步是构建更新的脱机存储库;然后生成“要下载”列表并下载它们,最后是安装。操作方法如下:source


输入网址:http://archive.ubuntu.com/ubuntu/dists/suiteCodename,其中SuiteCodename应该适当地标上,表示对Ubuntu 12.04精确穿山甲)(或Ubuntu 14.10的utopic(Utopic独角兽)),因此您现在可以进入http://archive.ubuntu.com/ubuntu/dists/precise/或任何其他特定于您套件的目录。
下载适用于您的体系结构的文件Release,Release.gpg和Contents-????。gz文件(即Contents-i386.gz,假设您的体系结构是i386)。将这三个文件保存在以suiteCode名称(Precise Pangolin的精确名称)命名的目录/文件夹中。

接下来,您必须对每个存储库(在Main,Universe,Restricted,多宇宙)。

a。转到目标存储库目录,例如。主要,然后到架构目录,例如。 binary-i386,以便您进入http://archive.ubuntu.com/ubuntu/dists/suiteCodename/repositoryName/binary-????/

b。下载内容Packages.bz2,Packages.gz,Release,并将其保存在以repositoryName命名的目录中,例如。 main,然后将此目录放置在先前创建的suiteCodename目录中。

c。重复一个。和b。针对您想要的每个存储库。


最后,您应该具有如下结构:并且需要主存储库和Universe存储库)

接下来,在下载更新的存储库之后,将下载的文件以适当的结构(如上所示)放置在目标脱机计算机的目录中。将目录结构precise保存在用户主目录(~/offlineRepository/dists/precise)或其他任何位置(/home/offlineRepository/dists/precise,使用终端中的sudo特权或使用以gksu nautilus开头的Nautilus文件管理器)中的名为offlineRepository / dists / precise的文件夹中;还请确保您具有对复制的结构)。这样便可以使用您的脱机存储库信息。
将本地存储库添加到源列表中。使用Ubuntu Software Center,转到编辑->软件源...->其他软件->添加...,然后在APT行的字段中添加:deb file:///home/offlineRepository precise main universe并单击添加源。确保修改有关目录/文件结构和套件的行。然后重新加载软件包,或在终端中运行sudo apt-get update。我从以前的askUbuntu帖子之一中借用了以下代码行:

 precise
 ├── Contents-i386.gz
 ├── main
 │   └── binary-i386
 │       ├── Packages.bz2
 │       ├── Packages.gz
 │       └── Release.txt
 ├── Release.gpg
 ├── Release.txt
 └── universe
     └── binary-i386
         ├── Packages.bz2
         ├── Packages.gz
         └── Release.txt


例如。要安装Synaptic软件包管理器:

sudo apt-get install packageName --print-uris | grep -o '\'http.*\' | tr "\'" " " > /tmp/package-list.txt


(您也可以类似的方式生成更新列表。)

可以使用生成的列表在在线计算机上下载软件包和整个依赖项。在某些下载管理器中创建脚本以下载或使用列表进行批量下载。 (还请注意,生成的文本文件使用Unix / Linux行尾,并且您可能希望将其更改为Windows。)当Synaptic Package Manager是Ubuntu中的默认应用程序时,曾经有一种更简单的方法。
最后,可以在目标系统中使用dpkg或任何其他方式安装软件包。

获取包括安全更新的更新的软件包数据库
结构,除了上面的解释外,还应该给您一个概念:


sudo apt-get install synaptic --print-uris | grep -o '\'http.*\' | tr "\'" " " > /tmp/package-list.txt



#15 楼

如果您没有任何与Internet的连接,并且附近没有人可以连接到Internet,则还有一个未提及的选择:让某人通过常规帖子发送源文件。

您可以通过购买DVD来通过邮件获得整个Ubuntu OS。您可以用相同的方式要求在线朋友向您发送DEB文件甚至是VLC之类包的源文件。虽然让某人发送包含所有软件包的完整DVD可能是值得的。这样,您可以从该DVD安装它。

#16 楼

浏览以下内容的答案后:如何在没有Internet(离线)的情况下安装软件或软件包? ,我发现Arnel A. Borja的这段代码最有用。

sudo apt-get install PACKAGE --print-uris -qq | sed -n "s/'\([^ ]\+\)' \([^ ]\+\) \([^ ]\+\) MD5Sum:\([^ ]\+\)/wget -c /p" > install.sh


无论如何,这里有一些关于新手的说明。我希望您会发现它们很有用。


为Ubuntu 15.10+的其他用户提供完整的下载说明: + ALT + T)
使用以下命令导航至要将软件包下载到的文件夹:


cd FOLDERNAME cd Desktop)
提示:您还可以使用dir命令列出文件夹。


在说明上方的代码中,将PACKAGE替换为要下载的软件包。
复制并粘贴修改后的代码(快捷键CTRL + SHIFT + V),然后按Enter键。


示例代码下载Synaptic软件包管理器:sudo apt-get install synaptic --print-uris -qq | sed -n "s/'\([^ ]\+\)' \([^ ]\+\) \([^ ]\+\) MD5Sum:\([^ ]\+\)/wget -c /p" > install.sh
示例代码下载VLC播放器:sudo apt-get install vlc --print-uris -qq | sed -n "s/'\([^ ]\+\)' \([^ ]\+\) \([^ ]\+\) MD5Sum:\([^ ]\+\)/wget -c /p" > install.sh


如果询问,请键入root密码,然后按Enter。 (如果未显示密码字符,请不要惊慌。这只是一种安全措施。)
现在应生成“ install.sh”文件。脚本中包含了所有需要的依赖项。
现在,我们需要使用以下命令运行脚本:sh install.sh
等待下载文件
之后,您可以使用此命令在文件夹中安装所有软件包:



sudo dpkg -i *.deb或者您可以使用Synaptics之类的程序来安装软件包。 (突触:文件-添加下载的软件包)
另外,您也可以双击文件。这将打开Ubuntu软件中心。加载软件中心后,按安装按钮。重复此操作,直到安装了文件夹中的所有文件。





评论


给读者的建议:第一段中提到的问题是对该答案发布到的同一问题的递归。

–里卡多
20-4-28在21:11



#17 楼

我有一个可以在Windows上运行的小型python脚本,该脚本可以解析ubuntu软件包网站,以找到依赖关系树并下载所有需要的软件包,并进行校验和验证。

这显然可以下载所需的更多内容,但是对我来说,这是最简单的解决方案。这样可以避免重新安装已安装的软件包。

用法:

usage: ubuntu-deps.py [-h] [-a ARCH] [-r RELEASE] [-m MIRROR] [-f FALLBACK] [-d DIRECTORY] dep [dep ...]

Download ubuntu dependencies

positional arguments:
  dep                                  The main/top package

optional arguments:
  -h, --help                           show this help message and exit
  -a ARCH, --arch ARCH                 The architecture to use (default: amd64)
  -r RELEASE, --release RELEASE        Ubuntu release (default: trusty)
  -m MIRROR, --mirror MIRROR           Mirror to use for download (default: http://no.archive.ubuntu.com/)
  -f FALLBACK, --fallback FALLBACK     Mirror to use when main mirror is not found (default:
                                       http://security.ubuntu.com/)
  -d DIRECTORY, --directory DIRECTORY  Target directory (default: pkg)


#18 楼

对于将始终保持脱机状态的系统,通常最好使用其他一些答案中介绍的可靠的脱机软件包管理方法之一。这是因为它们有助于使已安装的软件包保持最新状态,而不仅仅是一次安装少量软件包。

但是,在个别情况下,您只想在没有安装此软件包的系统上快速安装软件包没有Internet连接(您可以将它们下载到另一台计算机上并带到那里),您可以这样做。主要的麻烦在于确定所需的内容,因为一个软件包通常还有其他依赖于它的软件包,因此必须在安装软件包之前或同时安装。

此答案受Ubuntu 14.04中的重复问题g ++启发,并以需要安装g++的情况为例。

我强调,不应长期使用此方法作为替代方法至少有助于自动确定和安装所需的安全更新。永不连接网络会大大降低遭受攻击的可能性,但是可以通过来自任何来源的数据来利用某些安全漏洞。

虽然这种方法看起来很复杂,但通常只需要几分钟。对于具有大量依赖关系的程序包,可能需要更长的时间。对于安装具有大量依赖关系的元软件包(例如,在最小系统上为ubuntu-desktop),下载所有必需的.deb文件可能需要更长的时间,因此该方法不太适合。

确定所需的依赖关系

您可以模拟安装以确定需要哪些其他软件包来满足软件包的依赖关系。将-s标志传递给apt-get(在您指定任何操作之前)会执行此操作。我已经省略了apt-get -s install g++ ,因为这只是一个模拟,所以不需要root特权。

如果您实际上想安装所有最常用的工具来构建软件包,而不仅仅是sudo,则可以可能更喜欢:

 g++ 


输出(对于apt-get -s install build-essential )看起来像这样:

NOTE: This is only a simulation!
      apt-get needs root privileges for real execution.
      Keep also in mind that locking is deactivated,
      so don't depend on the relevance to the real current situation!
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  g++-4.8 libstdc++-4.8-dev
Suggested packages:
  g++-multilib g++-4.8-multilib gcc-4.8-doc libstdc++6-4.8-dbg
  libstdc++-4.8-doc
The following NEW packages will be installed:
  g++ g++-4.8 libstdc++-4.8-dev
0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded.
Inst libstdc++-4.8-dev (4.8.2-19ubuntu1 Ubuntu:14.04/trusty [amd64])
Inst g++-4.8 (4.8.2-19ubuntu1 Ubuntu:14.04/trusty [amd64])
Inst g++ (4:4.8.2-1ubuntu6 Ubuntu:14.04/trusty [amd64])
Conf libstdc++-4.8-dev (4.8.2-19ubuntu1 Ubuntu:14.04/trusty [amd64])
Conf g++-4.8 (4.8.2-19ubuntu1 Ubuntu:14.04/trusty [amd64])
Conf g++ (4:4.8.2-1ubuntu6 Ubuntu:14.04/trusty [amd64])


这表明要在我的系统上安装g++,我需要软件包g++g++g++-4.8。模拟通常比简单地查看软件包的依赖项(或假设您需要的与上面的软件包相同)要好,原因是:


您可能已经安装了一些依赖项。 />依赖项(即某个软件包需要安装或工作的其他软件包)本身可能具有尚未安装的依赖项。

获取软件包

一旦您知道什么包装es,您可以下载它们。我建议为此使用Launchpad,因为下载文件是经过SSL加密的,这有助于防止文件损坏。它还有助于防止意外的文件损坏,这对于下载的文件来说是更常见的问题。
它不能阻止一种情况:当文件仅部分下载但您认为下载完成时。通常使用libstdc++-4.8-dev打包,否则软件中心不需要HTTPS,因为其哈希是根据经过数字签名的哈希列表进行验证的。如果最终将这些软件包放入软件包缓存中并使用apt-get进行安装,则会发生这种情况。 />
您可以通过在https://launchpad.net/ubuntu的“程序包”下键入其名称并单击“查找程序​​包”来搜索程序包。例如,搜索apt-get将带您进入gcc-4.8源代码包页面。

然后向下滚动至Ubuntu版本的代号。您正在运行14.04,所以这是Trusty Tahr。版本Wiki页面上列出了所有Ubuntu版本的代号。单击向右指向的三角形,以查看相应的软件包下载。您可能会看到:



发行版,Ubuntu发行版附带的软件包版本(或在发行时可用);

安全性,发布后发布的安全更新;

更新,发布后发布的任何更新;

,建议可以安装的更新,但仍在测试中,不建议使用供一般使用;

backports,软件源于Ubuntu的更高版本,并为较早的版本进行了重建。 >


通常,如果存在安全性或更新的软件包,则通常需要软件包,否则,则需要发行的软件包。

一旦扩展了软件包列表,找到适合您的体系结构的dpkg -i文件。 Deb的名称为g++-4.8。最常见的体系结构是:


64位PC / Mac(对于Intel和AMD处理器均称为.deb
32位PC / Mac(也称为name_version_architecture.deb)例如,要获取64位版本的Ubuntu的amd64软件包,可以下载i386

安装软件包

如果您检索到的软件包与g++-4.8g++-4.8_4.8.4-1ubuntu15_amd64.deb操作将自动检索并安装的版本相同(如果您的系统已通过网络连接),则可以将软件包放入apt-get并只需运行以下命令:

 install 


如果该系统从未连接到Internet,则可能是所有您从发布袋中取出的软件包。无论系统是否曾经连接到Internet,如果Launchpad上没有显示任何其他口袋中的包装,则几乎总是如此。 (基本上唯一的情况是,如果您安装了alpha或beta系统并且从未更新过它。)

在安装/var/cache/apt/archives的特定情况下,我会使用sudo apt-get install g++

在无法正常运行或您认为无法正常运行的情况下,请通过将软件包放在其他空文件夹中并运行来安装软件包:

 g++ 


,也可以单独命名软件包。此示例假定这些软件包位于当前目录中(即,您已apt-get到包含它们的目录中):

 sudo dpkg -Ri /path/to/folder 


除非安装的软件包数量很少,并且您知道为了满足依赖关系而需要安装的确切顺序,否则使用这些方法要比手动安装更为有效分别安装每个软件包。

#19 楼

这不是一个完整的详细答案,但是您可以从高层次进行:


获取所需的.deb pkgs(并创建它们的列表)(包括它们所依赖的软件包尚未安装)
创建包含它们的apt存档
将apt存档复制到CD或USB
将CD或USB插入目标系统
在目标上配置apt系统以将CD或USB apt存档包含为源
,使用apt-get install(pkgs列表)从列表中安装软件包


#20 楼

我建议自定义Live CD并安装它们。

您也可以从http://packages.ubuntu.com/filename下载文件,但是随后您还必须注意相关性。

评论


(最初,这是对一个稍有不同的问题的答案,该问题与该问题合并。)

–雅各布
2012年7月11日在20:35

消磨时间

–托蒂
13年5月22日在8:40

#21 楼

另一种可能性是使用remastersys。该工具允许您从自己的系统制作iso映像,并通过unetbootin创建可启动的USB记忆棒后,可以将自定义系统安装到所需的任意多台计算机上。

评论


但是,后来如何更新它们呢?

– Eliah Kagan
2012年7月22日,下午3:23

#22 楼

我有几个简单的建议。你可以去图书馆。在“计算机”部分中查找所需的操作系统,其中一些书中包含DVD。另外,如果您想要最新的操作系统,我建议您在此网站上以象征性的价格购买DVD。 www.ubuntu.com/download/desktop。

#23 楼

这个问题有点老了,所以目前的答案可能是多余的,但也许您也可以尝试使用dpkg-offline。安装bzr,然后:

bzr branch lp:dpkg-offline


其中包含一个教程和一个自述文件。

假设您要在Ubuntu上安装git 14.04 amd64系统,即使您的系统例如12.04 i386,您可以:


下载ubuntu-14.04-desktop-amd64.iso映像
运行dpkg-offline ubuntu-14.04-desktop-amd64.iso git

您将获得tar您可以传输到目标系统的.gz文件,它将包含种子包(git)及其所有依赖项。它还包含一个用于添加本地存储库的帮助程序脚本,因此您可以使用apt-get安装软件包。

dpkg-offline可以与10.04以后的任何Ubuntu桌面版本一起使用(我尚未进行过测试)较旧的版本,但它们也应该可以使用),以及从12.10开始的任何Ubuntu服务器版本。无论主机体系结构如何,它也应与amd64,i386和armhf映像一起使用。同样,我还没有使用arm64或powerpc / ppc64el进行过测试,但是它们也可以工作。

评论


很好,但是我认为下载整个发行版以使用脚本是过分的,希望仅指定所需的软件包和目标发行版就可以工作

–哈维尔·洛佩斯(JavierLópez)
17年6月12日在18:54

#24 楼

有些软件包已安装在安装USB记忆棒上。
我卸载了network-manager并想再次安装。是/dev/sdb

将棍子固定在某个路径上(在我的情况下是/tmp/mnt

mkdir /tmp/mnt
sudo mount /dev/sdb1 /tmp/mnt


然后,我编辑/etc/apt/sources.list只包含

deb file:///tmp/mnt/ main universe


然后,我

sudo apt-get update


我可以安装network-manager

注意:这可能不是上面问题的答案,而是我在查找此问题时遇到的问题。

评论


您可能应该备份sources.list,然后也将其还原。

–柴T.雷克斯
17年11月17日在8:43