Amazon Linux 2 でもwinexeが使いたい
AWS の Linux 機(Amazon Linux 2)から Windows Server 機向けバッチを叩く必要があったので、色々試した時の記録
winexe について
Linux から Windows 上のコマンドを実行することができるツール
この記事について
取り扱うこと
- ローカル環境で試すための Vagrant の Amazon Linux 2 の紹介
- Amazon Linux 2 で実際に打ったコマンド
取り扱わないこと
- winexe の使い方
参考リンクとしても後述していますが、こちらの記事が詳しいです。
ローカルアカウントで winexe を利用する - Qiita
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 でもアナウンスされているので、そっちの方がより安心な様子。
- Amazon Linux 2 を仮想マシンとしてオンプレミスで実行する - Amazon Elastic Compute Cloud
- Vagrant で Amazon Linux 2 を実行する | DevelopersIO
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 のバージョンが変わっても対応できる(はず)