我正在尝试自动设置开发机器软件安装。当您连接到互联网时,Chocolatey可以很好地安装软件包。有没有办法离线安装包?我只想将所有软件包放在共享网络文件夹中并使用该软件包进行安装。如果您有任何内部应用程序,如何将它们转换为巧克力包?以前有人试过吗?
答案 0 :(得分:9)
虽然有办法设置原始nupkg(包含其上的版本,而不是packages目录中的版本 - 使用Chocolatey community package repository上的包页左侧的下载)并将下载的二进制文件预设为缓存文件夹,并不总是确定它会起作用。您还可以覆盖缓存位置,以便该文件夹位于TEMP中的某个位置。请参阅choco config
,choco config -h
和choco config set cacheLocation c:\some\location
来执行此操作。
对于您需要离线的软件包,您可以管理自己的软件包,并且可以将软件直接嵌入到软件包中。当您想要离线管理软件时,这是理想的,因为社区存储库中的大多数东西都受版权法和发行权的约束(为什么他们不仅仅拥有嵌入的软件)。
创建和使用自己的软件包非常安全,但确实需要花费时间。如果您自己这样做,那么它可以覆盖使用Chocolatey和社区存储库作为消费者所获得的任何时间节省。
对于组织,我们开发了Package Builder,可在5-10秒内创建完整的软件部署(包)。它还可以在60秒内创建现有已安装软件(程序和功能)的软件包!详细了解Package Builder。
这里你可以做的最好的事情是一个称为内化的过程,你下载并解压缩包,下载所有资源并将它们嵌入到包中(或将它们放在本地的某个地方),编辑脚本以使用那些嵌入的/ local资源并重新编译包。
这使您可以利用现有的包逻辑而不会出现互联网问题。
有关详细信息,请参阅Manually Internalizing Packages和Package Internalizer - Automatically Internalize Packages。
大多数使用Chocolatey的组织正在组合创建包和内化包,因为在生产场景中使用时,它们需要可靠性和绝对信任以及对这些包的控制。
答案 1 :(得分:4)
我创建了一个名为ChocolateStore的项目,该项目可以自动完成从在线资源中复制Chocolatey软件包的过程,并使该软件包可供离线使用。
您可以在此处查看来源: https://github.com/BahKoo/ChocolateStore
答案 2 :(得分:1)
Chocolatey文档可能会回答问题的第一部分:“How To Host Your Own [Private/Internal/Public] Package Repository Server (aka Package Feed)”
它解释了三种类型的软件包存储库,使您能够在LAN / Intranet或共享卷中提供软件包:
问题的第二部分可以用Chocolatey´s documentation about recompiling packages回答。标题听起来比实际更复杂,可能只是“如何使现有的包本地化”,我认为那里描述的内容可以应用于问题作者所谓的“内部应用程序”(我猜他意味着程序也称为.exe文件,这些文件在任何公共提要上都不可用)。
答案 3 :(得分:0)
漂亮,这正是我目前正在做的事情!
要从网络共享文件夹安装它的价值,我使用:
choco upgrade eclipse -y -s \\network\users\KyleStoflet\Eclipse
例如,在这里我将升级eclipse,我将更多地解释这一行:
-y
会跳过确认
-s
提供了源路径
network
和users
是我们的网络和用户目录的占位符
...为了测试目的,我的目录中已经有了我们的版本。在该目录中,有多个目录用于Eclipse,Visual Studio以及我们用于开发的其他各种软件。
一个重要提示:我只是为直接从chocolatey packages page检索的.nupkg文件工作。我没有找到可执行文件的修复程序。
答案 4 :(得分:0)
将安装程序放在缓存目录中:
%TEMP%\chocolatey\<pkg>\<version>
并进行强制安装:
choco install -f <package_name>
我的版本(v0.9.10.3)工作正常。
答案 5 :(得分:0)
所以,我创建了一个Nullsoft安装程序,需要从离线计算机安装Choco软件包。这是整体步骤:
1)使用以下命令将Choco软件包下载到临时目录:
NuGet.exe Install some_package_name -OutputDirectory C:\Temp\ChocoPackages -ExcludeVersion
2)在Nullsoft脚本中,添加以下行以获取下载包:
nsExec::Exec 'choco feature disable -n=allowGlobalConfirmation'
SetOutPath "${TmpPath}ChocoPackages"
File /r "C:\Temp\ChocoPackages\*.*"
3)当仍在Nullsoft脚本中时,使用此命令从安装过程中放置文件的Temp目录安装choco包:
choco install --Source "${TmpPath}ChocoPackages" ${Name_Of_ChocoPackage} --acceptlicense --yes
答案 6 :(得分:0)
巧克力使用$ env:TEMP作为缓存目录,并将下载文件放置在
Traceback (most recent call last):
File "protein.py", line 15, in <module>
line = "{}\t{}\n".format(zip(rep,n))
IndexError: tuple index out of range
60.0.2是软件包版本,Firefox是软件包名称。
答案 7 :(得分:0)
A.如何使用chocolatey离线安装chocolatey包
从巧克力网站下载巧克力 NuPackage。 https://chocolatey.org/api/v2/package/chocolatey
放在本地文件仓库中,例如:D:\chocoOfflineRepository
choco source add -n=chocoOfflineControl -s="file:///d:/chocoOfflineRepository/"
choco install -f package
可选: 就我而言,我还将缓存文件夹设置为我的外部 D 驱动器,而不是我的管理员用户帐户上的 Temp 文件夹。
choco config set cacheLocation D:\chocoOfflineRepository
B.如何离线安装巧克力
另外,假设您已经安装了巧克力,但是,以防万一
$packageRepo = 'file:///d:/chocoOfflineRepository/chocolatey.0.10.15.nupkg'
$searchUrl = $packageRepo.Trim('/')#($packageRepo.Trim('/'), 'Packages()?$filter=(Id%20eq%20%27chocolatey%27)%20and%20IsLatestVersion') -join '/'
调试:
如果这里有错误:
Download-Package $searchUrl $localChocolateyPackageFilePath
cp d:/chocoOfflineRepository/chocolatey.0.10.15.nupkg C:\ProgramData\choco-cache\chocolatey.nupkg
Install-ChocolateyFromPackage $localChocolateyPackageFilePath
注意像@ferventcoder 指出的那样,它不是确定性的,由于内部依赖或代理限制,某些包可能无法工作。就我而言,由于公司代理,我无法使用远程社区库,所以我一直在使用它,直到找到更好的解决方案。 =)