Windows包管理工具Chocolatey

来源(https://isaachan.github.io/)[https://isaachan.github.io/blog/2013/02/07/chocolatey-i-love-you/]


Chocolatey, 我爱你
FEB 7TH, 2013

巧克力在很多文化里都代表了美好的事物。如果你是Windows的使用者,可能Windows复杂、丑陋的包管理正在把你折腾的很惨。*NIX平台上的各种优雅的包管理工具这时让人非常眼馋。直到有一天Chocolatey出现了,让我看到了Windows平台上的包管理朝着正确的方向前进了。看来,和巧克力沾边的东西都能让人产生幸福的感觉。

  1. 安装
    Chocolatey的安装过程简单至极,在Chocolatey.org上最醒目的地方有一行命令,把它复制到命令行中运行,只要一分钟左右,安装就完成了。在命令下键入
    1

chocolatey help

可以验证安装是否成功。

  1. 初体验
    默认情况下,Chocolatey会把自己安装到C:\Chocolatey目录下。该目录下还有三个子目录,它们的作用分别是
    bin - Chocolatey自身的命令,以及通过Chocolatey安装的某些软件会在bin下增加一个*.bat的快捷方法。
    chocolateyInstall - Chocolatey运行时的程序以及各种log。
    lib - 安装过程中下载的包。

是时候尝试一下Chocolatey的威力了,在命令行上键入
1

chocolatey install 7zip

此时会出现下载的进度信息。耐心等一会儿,Chocolatey会告诉你安装完成。
1

“Finished installing '7zip' and dependencies - if errors not shown in console, none detected. Check log for errors if unsure”

这之后检查你的Program Files(或者Program Files (x86))下应该包含7-Zip目录了。

  1. 安装自己的包
    在我写这篇博客的时候,我的机器上并没有中文输入法。在Chocolatey上寻找未果后(http://chocolatey.org/packages?q=google+pinyin)(在你读到这篇Blog的时候,我已经上传了Google Pinyin的安装包),我只能自己为Google Pinyin创建一个Chocolatey的安装包。研究过C:\Chocolatey\lib\下面的7Zip的包文件后,我们可以获知创建Chocolatey包的方法。
    Chocoletay包一个满足特定目录结构的NuGet包。NuGet是另一个Windows上令人心动的工具,它是一种特定的包格式,类似于.deb .rpm,同时它也具有版本化的包管理功能。与Chocolatey的不同在于,NuGet关注在开发人员使用的包,而Chocoletay更关注最终用户可用的软件包。既然Chocolatey包就是NuGet包,可以用命令
    1

NuGet.exe pack ****.nuspec

创建。如果你没有安装NuGet没有关系,Chocolatey包含了一个NuGet的二进制执行文件,可以使用命令
1

cpack.bat pack ****.nuspec

创建。cpack.bat可在C:\Chocolatey\bin目录下找到。
不过Chocolatey的包还需要一些特殊的内容,才能被Chocolatey识别并安装。查看7Zip的安装文件后,可以看到我们需要在包的顶级目录下创建一个tools目录,并在下面包含一个chocolateyInstall.ps1文件,该文件是安装包的(PowerShell)代码。 综上所述,我们需要很少的步骤,就能创建Google Pinyin的包:
— C:/GooglePinyinPackage/google-pinyin.nuspec —
1234567891011121314151617

<?xml version="1.0"?><package> <metadata> <id>google-pinyin</id> <version>1.0</version> <title>Google Pinyin</title> <authors>Han Kai</authors> <owners>Han Kai</owners> <requireLicenseAcceptance>false</requireLicenseAcceptance> <description>Google pinyin installation for Chinese requirement.</description> <copyright>Copyright 2012</copyright> <tags>google pinyin</tags> </metadata> <files> <file src="chocolateyInstall.ps1" target="tools/chocolateyInstall.ps1" /> </files></package>

以及 — C:/GooglePinyinPackage/chocolateyInstall.ps1 —
12345

try { Install-ChocolateyPackage 'google-pinyin' 'exe' '/s' 'http://dl.google.com/pinyin/v2/GooglePinyinInstaller.exe'} catch { Write-ChocolateyFailure 'Google Pinyin' "$($_.Exception.Message)"}

此处使用了Chocolatey提供的Install-ChocolateyPackage函数,它需要四个参数,id(google-pinyin,这个要和google-pinyin.nuspec中的一致),安装文件类型,安装参数(/s是silent installation)和安装文件的下载路径。
这时在C:\google-pinyin目录下运行下面的命令,可以生成google-pinyin.nupack包:
1

cpack google-pinyin.nuspec

运行下面的命令可以安装这个包,
1

cinst googe-pinyin -source C:\GooglePinyinPackage

其中,cinst是chocolatey install的快捷方式。-source C:\GooglePinyinPackage非常重要,它将本地C:\GooglePinyinPackage目录设置为cinst的安装软件包源。如果没有这个参数,cinst会在默认的两个源中查找,而后抱怨找不到google-pinyin。cinst的两个默认源是这里这里
现在,安装应该结束了,可以看一看你的输入法列表中是否包含了Google拼音输入法。

  1. 分享你的安装包
    到目前为止,我们安装了两个包,7Zip和Google拼音输入法,一个来自于Chocolatey.org,一个是我自己创建的。Chocolatey.org实际上是个社区,鼓励大家分享不同人创建的安装包。这正是我钟爱Chocolatey的原因!那么,接下来我要把刚刚创建的安装包发布到Chocolatey社区中。
    发布安装包需要注册Chocolatey账户。注册完成后,可以在这里上传安装包。
    上传Chocolatey安装包
    上传Chocolatey安装包
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,080评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,422评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,630评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,554评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,662评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,856评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,014评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,752评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,212评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,541评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,687评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,347评论 4 331
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,973评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,777评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,006评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,406评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,576评论 2 349

推荐阅读更多精彩内容