[原文發表地址] 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版)用戶們有沒有在期待?趕快發表你的評論吧