(section_package_manager_cli_ope)=
# パッケージマネージャCLI 操作編

パッケージマネージャはGUI版とコマンドインターフェース版の二つがインストールされます。GUI版においては十分なエラー情報が得られない可能性が有ったり、依存関係にある個々の子パッケージの追加、削除など細かな操作ができない可能性があります。

このようにGUI版において何等かの問題が生じた場合、ここで紹介するコマンドインターフェースの操作を行う必要があります。また、インストールするコンポーネントが決まっている場合、GUIでインストール作業を行うより、コマンドを組合せてシェルスクリプトを組む事でインストール作業を自動化できますので便利です。

ここではコマンドラインインターフェース版のパッケージマネージャの扱い方について説明します。

```{note}
コマンドラインインターフェースに関するドキュメントは以下で紹介されています。ただし、パッケージマネージャの最新機能は反映されていません。

[https://infosys.beckhoff.com/content/1033/tc3_installation/15698626059.html?id=5147078465983576506](https://infosys.beckhoff.com/content/1033/tc3_installation/15698626059.html?id=5147078465983576506)
```

## コマンドインターフェースの出現方法

````{grid} 2
```{grid-item} 
:columns: 6
パッケージマネージャは管理者権限で実行する必要があります。このため、Windows環境においては管理者モードによるPowerShellを起ち上げる必要があります。

`Windowsキー` + `X` を押してください。次のメニューが出現しますので、Windows PowerShell(管理者)( A ) を選んで権限昇格のダイアログを許可選択してください。
```
```{grid-item}
:columns: 6
![](assets/2025-03-26-12-25-11.png){align=center height=500px}
```
````

## パッケージを一覧する

インストール可能な全てのパッケージを一覧する方法は、`tcpkg list` を発行します。現在インストールされているパッケージだけを一覧するには、これに `-i` オプションを追加し、`tcpkg list -i` コマンドを発行します。次の通りの書式でパッケージが一覧されます。

```
<パッケージ名> <バージョン番号>
```

以下はインストール済みパッケージを一覧させる例です。

```{code-block} powershell
PS C:\> tcpkg list -i
TcPkg 2.1.86

TC170x.UsermodeRuntime.XAR 4026.14.0
TE1300.ScopeViewProfessional.XAE 34.49.0
TF3300.ScopeServer.XAR 34.49.0
 :
vcredist100.Beckhoff 10.0.40219.325
vcredist140.Beckhoff 14.38.33130
191 package(s) found.
PS C:\>
```

一画面に収まらない場合は、ページネーションしてくれるコマンド `more` と組合せます。パイプ `|` に続いて次の通りコマンド発行してください。

```{code-block} powershell
PS C:\> tcpkg list -i | more
TcPkg 2.1.86

TC170x.UsermodeRuntime.XAR 4026.14.0
TE1300.ScopeViewProfessional.XAE 34.49.0
TF3300.ScopeServer.XAR 34.49.0
 :
TwinCAT.XAE.HART 1.0.4
TwinCAT.XAE.Integration 2.11.0
-- More  --
```

`Enter`キーを押しながら行送りができます。

## パッケージをインストールする

指定したパッケージをインストールするには下記のコマンドを発行します。依存関係にあるパッケージも自動的にインストールされます。リポジトリに登録された最新のパッケージがインストールされます。`-y` オプションを付加することで、インストールしてよいかどうかの確認は行わず、ただちにインストールを開始します。

``` powershell
PS C:\> tcpkg install <パッケージ名> -y
```

任意のバージョンのソフトウェアをインストールしたい場合は `-v` オプションを指定します。

``` powershell
PS C:\> tcpkg install <パッケージ名> -v <バージョン番号>
```

## パッケージをアンインストールする

指定したパッケージをアンインストールするには下記のコマンドを発行します。このコマンドでは依存関係にあるパッケージは連携してアンインストールされることはありません。

``` powershell
PS C:\> tcpkg uninstall <パッケージ名>
```

依存関係にあるパッケージを連携して削除するには、 `--include-dependencies` オプションを付加します。

``` powershell
PS C:\> tcpkg uninstall <パッケージ名> --include-dependencies
```

全てを削除する場合は、パッケージ名を `all` とします。

``` powershell
PS C:\> tcpkg uninstall all
```

(section_tcpkg_export_import)=
## 構成のエクスポートとインポート

1台のパッケージインストールが終了しましたら、エクスポートコマンドを実行する事でインストールしたパッケージとそのバージョン情報が格納されたXMLファイルをエクスポートすることができます。

また、2台目以後はパッケージマネージャのインストールと設定のみ行えば、1台目と同じパッケージインストールを自動化できます。手順を実施してください。

```{attention}

エクスポートしたXMLファイルは、その環境にインストールされた時点におけるパッケージとそのバージョン情報が一覧されているだけで、パッケージ実体そのものは保存されていません。また、これらのバージョンのパッケージが、常にBeckhoffのパッケージサーバに存在するとは限りません。

したがって、このXMLファイルだけではなく、 {ref}`section_package_manager_offline_install` の節をご覧いただき、別途オフラインでパッケージFeedを構築しておいて、これらをペアで配布する必要があります。
```

### エクスポート

次のコマンドにより、現在インストールされているTwinCATコンポーネントの構成を定義ファイルとしてエクスポートできます。

```{code-block} powershell
PS C:\> tcpkg export -o twincat_required.xml
```

上記により、次のように構成定義ファイル `twincat_required.xml` が作成されます。

### インポート

前節でエクスポートしたパッケージ構成ファイルに基づいて同じ構成のTwinCATコンポーネントをインストールします。

```{code-block} powershell
PS C:\> tcpkg import -i twincat_required.xml
```

各オプションの説明は以下の通りです。

`-i`（必須）
    : 読み込む構成定義ファイル。

`-y`
    : インストールするかどうか確認プロンプトは出現せず、インストールを開始します。

`--no-cache`
    : パッケージリポジトリからダウンロードしたファイルをキャッシュせず、インストール完了後ただちに削除します。ディスク容量が節約できます。

`--all-sources`
    : これを指定すると、読み込んだ定義ファイルに指定されたバージョンより最新のバージョンが利用可能であれば、そちらをインストールします。
