パッケージマネージャでオフラインインストールする方法#
パッケージマネージャに登録したパッケージのFeedsサーバは初期状態でBeckhoff社のサーバが設定されています。通常はインターネットを経由してここからパッケージを取得してインストールを行います。
しかし、エンドポイントのコントローラは必ずしもインターネットアクセスができる環境にあるとは限りません。よって、いちどパッケージをダウンロードしておき、オフライン状態でもパッケージマネージャを通じてインストールできる必要があります。
また、複数のIPCや開発環境において、同じバージョンに統一したい場合、Beckhoff社サーバから供給を受けていると古いパッケージが供給されなくなることが起こります。このため、お手元のローカルにパッケージを保持しておき、構成のエクスポートとインポートの運用と併用してExportされたパッケージカタログの該当バージョンと共に配布する運用を行うことが求められます。
ここでは、ローカルに保存したパッケージを通じてパッケージマネージャからインストールを行う方法をご説明します。
オンラインPCでのパッケージのダウンロード#
PowerShellなどのコマンドラインインターフェースにて、次のコマンドを発行してください。
インストール可能な代表パッケージ名一覧を出力。
PS> tcpkg list -t workload
この中から必要なパッケージを選択して、次のコマンドによりダウンロードする。
たとえば、XAEとXARの両方を” C:\home\Administrator\pakages” にダウンロードする場合は以下のコマンド発行します。最初表示が無いまま時間を要しますが根気強く待ってください。
PS> tcpkg download TwinCAT.Standard.XAE TwinCAT.Standard.XAR -o "C:\home\Administrator\pakages"
このpackagesフォルダをUSBメモリ等に入れます。
自動化スクリプト#
全てのパッケージ一覧を取得してダウンロードするPowerShellスクリプトをご紹介します。下記のとおりPowershellスクリプトをfetch_packages.ps1という名前で保存してください。
# parameter
param (
[String]$distination = "."
)
# Get package list
$packages = tcpkg list -t workload | ForEach-Object {
if ($_ -match "\[(.+)\]\s+(.+)\s+(.+)") {
New-Object -TypeName PSObject -Property @{
"feed" = $matches[1]
"name" = $matches[2]
"version" = $matches[3]
}
}
}
$command = 'tcpkg download'
foreach ($item in $packages){
$command += " " + $item.name
}
$command += " -o " + $distination
invoke-expression $command
次のコマンドを実行することで、<保存先パス>にFeedに登録したサーバからの全てのパッケージを保存します。
PS> fetch_packages.ps1 <保存先パス>
Tip
スクリプト中、$packages変数にはすべてのパッケージリストのPowerShellのオブジェクトに変換されます。次の通りname列にパッケージ名が一覧されます。
feed name version
---- ---- -------
Beckhoff Stable Feed Beckhoff.DeviceManager.XAR 2.4.5
Beckhoff Stable Feed TC1000.ADS.XAR 1.0.0
:
Beckhoff Outdated Feed TwinCAT.StandardRM.XAE 4024.67.1
Beckhoff Stable Feed TwinCAT.SupportInformationReport.XAE 20.17.3
この一覧から必要なものだけにフィルタしていただいたものを$packagesに設定していただければ、必要なパッケージリストだけをダウンロードする事も可能です。
Tip
構成のエクスポートとインポートでエクスポートされたパッケージだけをダウンロードいただく場合は、次の二つを満たすスクリプトへ改造してください。
エクスポートしたパッケージ構成定義ファイル(XML形式)を読み込んでパッケージ名とバージョンを読み込む
読み込まれたパッケージリストから
tcpkg downloadコマンドにてバージョン指定付きでダウンロードする。バージョン指定する書式はpackageName=versionです。たとえば次のとおりパッケージ名に続いて=4026.21.2のように指定します。PS> tcpkg download TwinCAT.Standard.XAE=4026.21.2 TwinCAT.Standard.XAR=4026.21.2 -o "C:\home\Administrator\pakages"
ただし、パッケージ構成ファイルに記録されているバージョンが古くなると、該当バージョンのパッケージがFeedリポジトリから消滅してしまう可能性があります。構成のエクスポートとインポートでパッケージ構成ファイルをエクスポートするタイミングとダウンロードを行うタイミングはなるべく同時に行ってください。
オフラインインストールを可能にする設定(GUI編)#
次にオフライン環境のIPCにてUSBメモリを挿し、IPC内に展開します。パッケージマネージャの設定にてオフラインパス設定を変更し、そのフォルダからインストールできるようにします。
IPCにUSBメモリを挿し、任意のフォルダへコピーします。
本手順の例では
C:\Users\Administrator\Documents\packagesにコピーしたものとします。パッケージマネージャを起動し、設定画面を開き、
Feedsタブを選び、左下の+アイコンを押します。
追加するFeedの
Nameに適当な名前を付けて、Feed url..にC:\Users\Administrator\Documents\packagesを設定してSaveボタンを押します。
追加したFeed以外のEnableのチェックを外し、右下のフロッピーアイコンを押します。

以上です。通常通りのパッケージインストールを実施してください。
注釈
Feed URLで指定したフォルダを定期的に更新してください。Feed URLで指定したフォルダ内にあるパッケージのみインストール可能です。
オフラインインストールを可能にする設定(CLI編)#
まず、管理者権限でターミナルを起動します。次のコマンドでオンラインfeedを無効化します。
tcpkg source edit "Beckhoff Stable Feed" --enabled false
tcpkg source edit "Beckhoff Outdated Feed" --enabled false
次にオフラインインストール用のFeedを追加します。
tcpkg source add -n "Offline Feed" -s "C:\Users\Administrator\Documents\packages"
もしパスが存在しないと次のとおりエラーとなります。
> tcpkg source add -n "Offline Feed" -s "C:\Users\Administrator\Documents\packages"
Error: A remote target named 'C:\Users\Administrator\Documents\packages' does not exist!
Error: Errors occurred while trying to ensure a safe remote command execution. Aborting command...
追加に成功した場合は次の通り現れます。
> tcpkg source add -n "Offline Feed" -s "C:\Users\Administrator\Documents\packages"
TcPkg 2.4.18
Source 'Offline Feed' has successfully been added.
次に前節でダウンロードしたパッケージファイルを-s "C:\Users\Administrator\Documents\packages"で指定したフォルダへコピーします。
その後、構成のエクスポートとインポートに示すインポートコマンドで構成を適用すると、オフラインのディレクトリに置いたパッケージからインストールが開始されます。