ばったログ

3回に1回くらいはやったことをアウトプットしていく

Amazon Linux 2 でもwinexeが使いたい

Amazon Linux 2 でもwinexeが使いたい

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

winexeについて

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

この記事について

取り扱うこと

取り扱わないこと


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