[原文发表地址] Announcing the release of AMQP support with Windows Azure Service Bus git
[原文发表时间] 2013-5-23 7:42 AM github
它能作什么 web
Chocolatey 使得人们能够经过一个安装脚本的主目录快速地使用命令行来安装Windows应用程序。你能够安装Git,7Zip甚至Microsoft Office(若是已经得到密钥)。此技术的思想是用一个众所周知的密钥来实现无缝平滑地安装。 shell
举个例子,一旦安装了Chocolatey,你能够采用以下命令行来安装应用程序: npm
这是它的基本应用。 windows
它的安装目录已经发展地如此完整,事实上,最近我想安装DosBox,这样就能玩Zork。我碰运气地运行了“const dosbox”,它竟然成功安装了DosBox。这就是Chocolatey作的承诺。 api
启动Chocalatey 安全
在开始安装以前,先安装Chocalatey包管理器。复制粘贴下列到你的命令行,并运行它。(一开始都会过度恐惧这一步) ruby
@powershell -NoProfile -ExecutionPolicy unrestricted -Command "iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))" && SET PATH=%PATH%;%systemdrive%\chocolatey\bin 服务器
想必你在作以前想知道哪些命令行即将做用于你的电脑,让咱们来逐行解析。这就要启动PowerShell来作这项困难的工做。如今几乎全部的windows机器都有Powershell,也正是PowerShell使得Chocolatey工做的。
一些人拥有自定义配置文件,NoProfile会强制性切换到自定义配置文件来防止安装冲突。它执行从https://chocolatey.org/install.ps1/下 载的PowerShell脚本。注意它的执行策略被设置为unrestricted。要明白,它是在执行从web上下载的代码,因此这不是一点风险没有。 接着它会添加Chocolatey到你的路径下(在这个窗口下)这样你就能够立马使用它。之后Chocolatey会被自动添加到多个命令行窗口中.
如今请看https://chocolatey.org/install.ps1。这是段简短清晰易读的脚本代码。它用来下载Chocolatey安装zip文件(一般是个NuGet包),解压而且经过安装包中工具部分来运行脚本继续安装。
它如何工做
Chocolatey是一个引导程序。它使用PowerShell脚本和NuGet包格式为你安装应用程序。NuGet是Windows开发者用来在project级别导入库的包管理系统。Chocolatey(懂吗? Chocolatey Nu-Get?)扩展这个概念到在系统级别导入应用程序。
今天若是你想要7Zip,一般会google它,找到这个网站,找到最新版本或与你系统匹配的版本,下载并运行。点击若干个“下一步”,直到“完成”,或许还须要把它添加到你的path环境变量下。Chocolatey会为你作这些。
重复一遍,NuGet是为项目本地安装的类库,Chocolatey是为你的整个系统全局安装的应用程序。
Chocolatey采用包开发人员用来连续安装程序和构建依赖树的PowerShell脚本(你永远不用考虑它)。以一个Git安装脚本的内部结构为例:
你要采用的最重要部分就是第一行。注意这个Chocolatey脚本是从MySysGit网站上下载G
it的。Chocolatey并无改变、生成或者hosting安装程序。它是在自动运行枯燥的获取软件操做,可是它仍旧老是从同一个地方获取软件。
高级配置
既然已经学习了基础知识—它们的确是很基础—这里有更深的Chocolatey知识去探究。除了cinst和cuninst,还有别的命令使得在Windows上安装东西更加简单。记住,这些命令都在你的PATH下,因此你能够随时调用它们。
每个主要的源均可以被调用,使用带有-source参数的cinst命令 像 "cinst IISExpress - source WebPI" 或者使用下面指定的他们本身的别名.
Cwindowsfeatures - 若是你已经打开过添加/移除程序,而后点击安装Windows特性来安装IIS或Hyper-V,那么这个命令就适合你。
几个例子:
cwebpi – 网站平台安装程序是一个下载任何你在Windows网站开发中可能须要的开发工具的强大图形用户界面。它是一个目录,一个安装程序,并且仍是一个关联者。也包括集成了Chocolatey的命令行版本的WebPI,因此你能够:
在Chocolatey命令参考中包含了更加完整的列表,它包括了Chocolatey是如何与Cygwin Gems和Python集成 的。
安全问题
这 是一个棘手的事情。如何让一个系统在让你直接从互联网上快速、干净且简单的安装任何东西的同时,却不会直接安装一些有害的东西呢?你但愿与服务器的交互是 安全,包是可信的,但同时你也但愿这些包从被上载后没有被篡改过。这样就不可避免的存在中间人攻击的威胁。你会想要留意恶意包且当有偷溜进入时启用快速拿 下。
固然,安全顾虑并非Chocolatey独有的。 自从包仓库生成之初,它即是其中一部分。NPM库在2012年三月有一个安全漏洞,andyet博客的家伙们围绕这个漏洞进行了探究,一样也指出了我的责任感也在发挥做用。
Linux的apt-get经过对密码学的恰当使用和效仿最佳实践解决了许多安全问题。在apt库中的包都添加SecureApp标记,当你使用第三方库或者安装没有标记的包时会发出警告。
Chocolatey 团队已经很快的扑向了安全问题而且他们很是的可靠。他们在恰当的地方添加SSL而且关注到来的任务。若是Chocolatey获得大的(在我看来带宽和花 费是一个大问题)也多是非营利性组织的介入来不只提供花费,并且提供安全审计和最佳实践,那就最好不过了。
Chocolatey的领头人Rob在其邮寄名单的一篇博文中,也是在2012年3月,讲了如下几点(我添加编辑过):
安全性是Chocolatey良好发展前景的很大一部分。当前我是负责人,天天都会收到邮件告知前一天加入的新包。我看着新做者们开发的全部包,典型地查看我与之保持良好联系的做者们开发的大多数新包的初版。
我详细地与他人谈过每一个包都有feed放缓的一面,每一个新版本会在主feed展现以前经过。我在关注debian如何用多个feeds作事并想在那个方向进展.
安全性?未来咱们将寻找一小组人组成nupkgs的审批机构。咱们也讨论了向nupkg展现散列,而且可能让人们为安装程序指定一个散列,这样Chocolatey就能够在程序下载还未执行时就验证它。
我能够将一个Chocolatey包命名为"FormatMyHardDrive"吗?固然能够,就像我可让你打开一个管理员提示窗口而后输入c:/q,你不会去作,对吧?;)
接下来?
固然,Chocolatey并非必须被你的“Gender Non-Specific Non-Technical Parent”所用。并且它的确以Ninite GUI安装工具的形式拥有必定的“竞争力”。虽然还不至于成为“普普统统的张三李四”且只有有限的目录,Ninite却的确是填补了为超级用户快速得到他们想要的应用程序和工程的空白。
此外,Chocolatey真的是apt-get吗?它尚未安装系统级的包,不过没有理由它不能。其余开放源代码的项目如CoApp想要成为Windows app-get,不过CoApp更像一个“系统级的库、C++支持、且相似Unix的工程”而Chocolatey更像是一个“开发者和高级用户的工程和它们的依赖”。
Chocolatey的确安装了依赖,你能够尝试用对git有依赖的“cinst gitextensions”来查看。Chocolatey会遍历整个关系图而后在最终安装gitextensions前安装它所须要的东西。
Chocolatey, 终究Windows本身在哪儿安装受控于不规则的路径控制和安装位置。由于Windows对事物没有正式的安装位置,而且Chocolatey先把本身放 在了PATH下,可能出现奇怪的状况:安装在Chocolatey 外面的应用程序不参与安装在内部的应用程序的排队. 举个例子,几个月前,我用Chocolatey安装了Git,忘记了它的版本。而后本身安装了一个最新版本的Git。可是我一直遇到一个旧的git bug,由于Chocolatey的Git版本是“优先的”。我相信这类错误已经在最近的Chocolatey版本中修复了,可是重点是:现在对于在 windows上低级别工程的安装,什么时候,何处结束很困难.
扩展
现 在,我绝对没有要从Rob和团队手中拿走这项艰巨工做的意思,可是(我以前和Rob谈过这事)对于Chocolatey这个名字,让我以为很难抉择。当 然,“Chocolatey”有两种拼写方法,至少对我来讲可靠地打出“Chocolatey”很艰难。-ey理论上说是一个合法的变形体,可是在 Word里这种拼写会被标记上红色波浪线。更少除了是拼写,更多它是一个名字。它不像“npm”这样乏味,也不像“apt-get”这样严肃,没有 “gem”诗意般的简洁。我意识到咱们生活在一个围绕Hulu、Yahoo、Microsoft(严格的说,MICRO SOFT,那是什么?)和Google这样的公司名字的世界,可是值得指出的是一个好的名字的确会让一个项目上一个台阶。我不肯定Chocolatey对 这个项目来讲是个合适的名字,可是这彻底是个人观点。
我鼓励你,专业的读者,本身体验下Chocolatey!它是一个强大的工具,一个忙碌且正在成长中的社区且它自己就是一种有趣的技术。
Chocolatey(apt-get Windows版)用户们有没有在期待?赶快发表你的评论吧