初心者が Chocolatey をインストールしてみた

# 初心者が Chocolatey をインストールしてみた

初心者がやってみた形式でやったことをそのまま時系列にメモします。真面目に導入したい方はほかの人の Qiita 見たほうがよかったりするかもです。

## Chocolatey とは

要するに Windows 用の apt/yum 的なものである。これを駆使してかっこよくいろいろな構築を今後していきたいものである。

- [chocolatey 公式](https://chocolatey.org/)

## インストール手順

公式を参考にしていく

- [chocolatey 公式 インストール説明](https://chocolatey.org/install)

### Step 1: Subscribe to the Chocolatey Newsletter

いち早くセキュリティ情報を得たい人は是非登録してください。インストール自体には不要です。

### Step 2: Choose Your Installation Method

- 引用
    - `With PowerShell, you must ensure Get-ExecutionPolicy is not Restricted. We suggest using Bypass to bypass the policy to get things installed or AllSigned for quite a bit more security.`
        - `Run Get-ExecutionPolicy. If it returns Restricted, then run Set-ExecutionPolicy AllSigned or Set-ExecutionPolicy Bypass -Scope Process.`
- とのこととなので以下を powershell 上で実行
    - `Get-ExecutionPolicy`

    ```
    > Get-ExecutionPolicy
    Restricted
    ```

余裕の restricted やったねたえちゃん。いったんこれを変えた場合どう変わるのかを公式で確認してみる

- [About Execution Policies](https://docs.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_execution_policies?view=powershell-6)
    - 引用
        - `Long Description`
            - `PowerShell's execution policy is a safety feature that controls the conditions under which PowerShell loads configuration files and runs scripts. This feature helps prevent the execution of malicious scripts.`
        - `Defaults`
            - `Sets the default execution policy.`
            - `Restricted for Windows clients.`
            - `RemoteSigned for Windows servers.`
        - `Process`
            - `The Process scope only affects the current PowerShell session. The execution policy is saved in the environment variable $env:PSExecutionPolicyPreference, rather than the registry. When the PowerShell session is closed, the variable and value are deleted.`
    - コメント
        - うーん・・・まあ・・・ bypass にしろって chocolatey 書いてあるけど・・・終わったら戻さなきゃだよね・・と確認してたらあった
            - `Set-ExecutionPolicy` 時の実行挙動で Process を指定しておけば chocolatey が終わったら powershell 閉じればよさそうね。
        - まあいったん `Get-ExecutionPolicy -List`でもしてみるか

            ```
            > Get-ExecutionPolicy -List

                    Scope ExecutionPolicy
                    ----- ---------------
            UserPolicy       Undefined
                Process       Undefined
            CurrentUser       Undefined
            LocalMachine       Undefined
            ```
        - まあこんなもんか。Windows Server の場合の default が remotesigned で今は普通の windows だからこの undefined 状態だとさっきみたいに Restricted になるのね。

と、まぁ Chocolatey の公式に戻るが、以下を powershell で流せと言われている。

- `Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))`
    - `Set-ExecutionPolicy Bypass -Scope Process` 部分についてはいったんこのプロセスのみなので 終わった後powershell を落とせば大丈夫そう。

### いざいわれている通りに実行

1. コマンド実行
    - `Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))`
2. 管理者権限で実行せず無事爆死

    ```
    +     throw "Installation of Chocolatey to default folder requires Admi ...
    +     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : OperationStopped: (Installation of...-administrator.:String) [], RuntimeException
    + FullyQualifiedErrorId : Installation of Chocolatey to default folder requires Administrative permissions. Please run from elevated prompt. Please see https://chocolatey.org/install for details and alternatives if needing to install as a non-administrator.
    ```
3. で実行するの忘れていた・・・
    - `Installation of Chocolatey to default folder requires Administrative permissions.`
4. 気を取り直して管理者権限でもう一度実行
    - 完了

## 最後に

ps1 を読めと言われたけど長すぎて読めませんでした申し訳ありませんでした。

## 参考

- [chocolatey 公式](https://chocolatey.org/)
- [chocolatey 公式 インストール説明](https://chocolatey.org/install)
- [About Execution Policies](https://docs.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_execution_policies?view=powershell-6)