Amazon Linux 2 でもwinexeが使いたい

公開日: @t_yama5k

AWS の Linux 機(Amazon Linux 2)から Windows Server 機向けバッチを叩く必要があったので、色々試した時の記録

winexe について

Linux から Windows 上のコマンドを実行することができるツール

この記事について

取り扱うこと

  • ローカル環境で試すための Vagrant の Amazon Linux 2 の紹介
  • Amazon Linux 2 で実際に打ったコマンド

取り扱わないこと


1.Vagrant で Amazon Linux2 を動かす

全く触ったことのなかった Amzon Linux 2 をいじってみたいけど、EC2 のインスタンスをぽんぽん立てる権限は持っていない
そんな自分がローカル環境で色々試すために使っていたのが Vagrant の Amzon Linux 2 の Box イメージ
Vagrant の説明も省いてコマンドだけ載せときます。

vagrant init bento/amazonlinux-2
vagrant up
vagrant ssh

bento の box はchef 社のプロジェクトということで野良 Box よりは安心だと思いますが、
正式な導入方法は Amazon でもアナウンスされているので、そっちの方がより安心な様子。

2.AWS 上の Amazon Linux 2 での winexe の準備

ローカル環境下の Amazon Linux 2 で試行錯誤の後、
EC2 上の Amazon Linux 2 に実際に打ったコマンドを載せていきます。
(root 権限で実行しています。ログは省略)

パッケージの追加

amazon-linux-extras install -y epel
yum update -y
yum install -y gcc \
  perl \
  mingw-binutils-generic \
  mingw-filesystem-base \
  mingw32-binutils \
  mingw32-cpp \
  mingw32-crt \
  mingw32-filesystem \
  mingw32-gcc \
  mingw32-headers \
  mingw64-binutils \
  mingw64-cpp \
  mingw64-crt \
  mingw64-filesystem \
  mingw64-gcc \
  mingw64-headers \
  libcom_err-devel \
  popt-devel \
  zlib-devel \
  zlib-static \
  glibc-devel \
  glibc-static \
  python-devel \
  gnutls-devel \
  libacl-devel \
  openldap-devel \
  jansson-devel \
  lmdb-devel \
  gpgme-devel \
  libarchive-devel \
  pam-devel \
  gdb

samba のソースコード取得と configure まで

mkdir -p /usr/local/src/samba
cd /usr/local/src/samba
wget https://download.samba.org/pub/samba/samba-latest.tar.gz
mkdir samba-latest
tar zxvf samba-latest.tar.gz -C samba-latest --strip-components 1
cd /usr/local/src/samba/samba-latest
PYTHON=python2 ./configure

winexe に必要なパッケージ(mingw32,64 系)がインストールされているかを確認

cat /usr/local/src/samba/samba-latest/bin/config.log | grep HAVE_WINEXE_CC_WIN

出力結果でこのような表示が出ていれば OK

#define HAVE_WINEXE_CC_WIN32 1
#define HAVE_WINEXE_CC_WIN64 1

最後にビルドとインストール

PYTHON=python2 make
PYTHON=python2 make install

winexe バージョン確認

/usr/local/samba/bin/winexe --version

出力結果

winexe version 4.10
This program may be freely redistributed under the terms of the GNU GPLv3

感想

Amazon Linux 2 は Cent OS7 互換だからその辺を参考にすればいけるかと思ったら、思いの外大変だった。
EC2 の標準の AMI に Cent OS がないので(Red Hat はあるけど) Amazon 的には こっちを推してきたいのだなというのは伝わった。
なお、導入した winexe はその後問題なく利用できているが、バッチで使うとき id pass を平文で置いているので(一応権限設定はしているが)、この辺をなんとかしたい。

参考リンク

新しくなった winexe - Qiita

この記事を参考に、以下の変更を加えています。

  • epel-release の部分を Amazon Linux 2 用に変更
  • samba のソースコードを git clone から直接 wget で最新版を取得する方法に変更
  • 初期導入済みの Python2.7 系で実行できるように環境変数設定

AmazonLinux2 に最新の Samba4.10.5 をドメインコントローラとしてインストールする - らくがきちょう

Amazon Linux 2 に samba 導入記事
この記事で紹介されている導入パッケージ群に mingwXX 系を加えることで
winexe も 使えるようになります。

tar(1) でアーカイブ前の名前ではなく新たな名前のディレクトリで展開したいときのメモ - Qiita

tar 解凍時のフォルダ名を指定することで samba のバージョンが変わっても対応できる(はず)