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のバージョンが変わっても対応できる(はず)