cygwin の変更点   

  • 追加された行はこの色です。
  • 削除された行はこの色です。
  • cygwin へ行く。

#author("2022-10-27T23:49:55+00:00","default:pentacle","pentacle")
* install [#j150561a]
 http://cygwin.com/setup-x86_64.exe

 一時保存先を desktop などに聞かれるが
 c:/cygwin64/setup
 などにしておいたほうがよいかも

 admin/cron 
 admin/shutdown
 archive/zip
 archive/unzip
 devel/gcc-core
 devel/gcc-g++
 devel/make
 devel/patch
 devel/gettext-devel
 devel/git
 editor/vim
 editor/emacs 
 libs/libreadline-devel
 libs/libncurses-devel
 libs/zlib
 libs/zlib-devel
 net/curl
 net/inetutils
 net/ncftp
 net/openssh 
 perl 
 system/ping
 system/procps-ng
 system/psmisc
 text/jq
 web/wget 

*** install [#m68ba3a6]
#pre{{

setup-x86_64.exe ^
   --root c:\cygwin64 ^
   --site http://ftp.iij.ad.jp/pub/cygwin/ ^
   --local-package-dir c:\cygwin64\download ^
   --packages cron,shutdown,zip,unzip,gcc-core,gcc-g++,make,patch,gettext-devel,git,vim,emacs,libreadline-devel,libncurses-devel,zlib,zlib-devel,curl,inetutils,ncftp,openssh,ping,procps-ng,psmisc,jq,wget ^
   --quiet-mode

}}



* bash [#ca257a86]

''.bashrc''

#pre{{

export PS1="\n<\u@\h>\n[\w]: "
export PATH=/usr/bin:/usr/local/bin:/sbin:/usr/sbin:$PATH:$HOME/bin

# primitive command
alias ls='ls -F'
alias .='cd `/bin/pwd`'
alias ..='cd `/bin/pwd`; cd ..'
alias rm='rm -f'
alias mv='mv -i'
alias pwd='/bin/pwd'
alias less='lv'
alias c:='cd /cygdrive/c'
alias open=cygstart
alias pwd=/bin/pwd
alias ifconfig='ipconfig /all | nkf -w'
complete -d cd

function emacs(){
	/cygdrive/c/Program\ Files/xyzzy/xyzzy.exe $1 &
}

#alias ls='ls -F --show-control-chars'

# java
export _JAVA_OPTIONS="-Djava.net.preferIPv4Stack=true"

# postgres
export PGHOST='localhost'
export PATH=/usr/local/pgsql/bin:$PATH

# mvn
export PATH=/usr/apache-maven-3.3.3/bin:$PATH

# play2.4
function activator(){
       /usr/local/play24/activator $@
       stty sane
}
function activatordebug(){
	/usr/local/play24/activator -jvm-debug 9999 run
       stty sane
}
function playkill(){
     ps aux |grep java |uniq | head -1 |awk '{print $1;}' |xargs kill 
}


}}



** nkf [#k5e74cc6]
 cd /usr/src
 wget "http://sourceforge.jp/frs/redir.php?m=iij&f=%2Fnkf%2F59912%2Fnkf-2.1.3.tar.gz" -O nkf-2.1.3.tar.gz
 tar xzfp nk*.tar.gz
 cd nkf-2.1.3 
 make 
 make install
 

** psql[#c5496f24]
 cd /usr/src
 wget https://ftp.postgresql.org/pub/source/v12.3/postgresql-12.3.tar.gz
 tar xzfp postgres*.tar.gz
 cd postgresql-*
 ./configure
 make
 make install
 

文字化ける時は psql 実行後に下記コマンドを入力する
 set lc_messages='ja_JP.UTF-8';

あるいは conf に書いても良い


----
* 設定 [#n0837a44]
*** 環境変数 [#a8fe1b40]
 マイコンピュータ右クリック -> プロパティ -> 詳細設定 -> 環境変数
 path に c:\cygwin64\bin\ を加える

*** bash [#r51d60eb]
とりあえず起動するとそのユーザでディレクトリが作成されるので~
下記をコピー
- .bashrc
- .bash_profile 
 alias ls='ls -F --show-control-chars'
 alias open=cygstart
 alias pwd=/bin/pwd
 alias ps=/usr/bin/procps
- .inputrc
 set input-meta on
 set convert-meta off
 set meta-flag on
 set output-meta on

*** maven [#r109cb59]
 http://maven.apache.org/download.cgi

 cd /usr
 wget http://ftp.riken.jp/net/apache/maven/maven-3/3.3.3/binaries/apache-maven-3.3.3-bin.tar.gz
 tar xzfp apache-maven*.tar.gz

* teraterm/cygwin 連携 [#ld7aa086]
cygterm+-x86_64 の cygterm.exe を teraterm ディレクトリのものに上書きコピー

cygterm.exe へのショートカットをコピーし、プロパティで作業ディレクトリを~
 c:\cygwin64\home\【username】\ に変更
~

cygterm.cfg
 TERM = c:\program files\teraterm\ttermpro.exe %s %d /KR=SJIS /KT=SJIS /nossh
 TERM_TYPE = vt100
 PORT_START = 20000
 PORT_RANGE = 40
 SHELL = /bin/bash -rcfile /home/【ユーザ名】/.bash_profile 
 ENV_1 = MAKE_MODE=unix
 ENV_2 = HOME=/home/【ユーザ名】
 ENV_3 = LANG=ja_JP.SJIS
 ENV_4 = CYGWIN=codepage:932
 ENV_5 = TERM=cygwin

cygterm の64bit版
 tar xzfp cygterm+.tar.gz
 make
出来上がったもので teraterm 内のものを上書き

teraterm.ini
 KanjiReceive=SJIS
 KanjiSend=SJIS

http://weierstrass.is.tokushima-u.ac.jp/ir/cygwin/


*** shutdown [#bbff9750]
 shutdown --force -h now 

-----
* cron をいれたい [#i1e89cd1]


$ cygrunsrv -I cron -p /usr/sbin/cron -a -n
$ cygrunsrv -Q cron
$ cygrunsrv -S cron
$ passwd 
$ cron-config

crontab -e

* * * * * date >> /tmp/hoge.txt [#d7010cf8]


&color(white,RED){ssh などが動いている場合は事前に停止しておくこと};
 cygrunsrv -E sshd

setup.exe にて下記を入れる

 admin/cygrunsvr 


&color(white,RED){cygterm を管理者として実行};
 cygrunsrv -I cron -p /usr/sbin/cron -a -n 2>&1 |nkf -w
 cygrunsrv --start cron

 crontab -e

 * * * * * date >> /tmp/cron.txt

*** 以下過去情報 [#y1dc931e]

  cygrunsrv -I cron -p /usr/sbin/cron.exe -a '-D'

  この後、マイコンピュータ(右)-> 管理 -> サービス 
  cron のプロパティ -> ログオン
  アカウントをチェックし、「参照」-> 「詳細設定」-> 「今すぐ検索」
  自分のアカウントを選択
  パスワードを入力
  全般タブに戻り、サービス開始
  (ユーザとパスワードを入れないと //192.168.0.10/c といった
   ネットワークパスが使えないケースがある)

  よく失敗する。
  1062 はユーザアカウントエラー
  1067 はファイルアクセスエラー
    (/var/run/cron.pid と /var/log/cron.log を消すこと)
  1069 はユーザパスワードエラー(パスワード未設定)
  
  何回やってもだめなときは cygwin をフル削除する
  c:\cygwin 削除
  レジストリも cygwin と cron で検索してフル削除して
  最初からやり直すとうまくいった

  $ ps -eaf 
  で cron が動いていればOK
  (または net start |grep cron)でも可
   
  $ crontab -e 
  vi で編集。
  下手に環境変数の EDITORを emacs などにかえるとはまる

  0 * * * * date >> /cygdrive/c/tmp.txt

  これで毎時 0時に日付データを tmp.txt に追記する
  意味はないけど。

*** ネットワークドライブの使用 [#p332f8e1]
- cron起動の batファイル中では「ネットワークドライブの割り当て」→「ログオン時に再接続する」で登録した ドライブ名は使えない。
 たとえば n: を \\192.168.0.1\net に割り当ててるとしたら
 perlスクリプト中では chdir("//192.168.0.1/net/");
 のように書く

*  sshd [#ofe53e8a]
COLOR(RED):cygwin.bat を管理者で実行する

 mkpasswd -l > /etc/passwd
 mkgroup -l > /etc/group
 ssh-host-config -y 

sshd のオーナーのパスワードを設定(使用しない)

 cd /etc
 emacs sshd_config

 PasswordAuthentication no
 ChallengeResponseAuthentication no

 cygrunsrv -S cygsshd
 (cygrunsrv -E cygsshd とめる場合)

後は通常の ssh のように .ssh 中に適切なファイルを作成する

*** firewall を開ける [#efb35962]
 control panel -> ネットワークとインターネット -> windows ファイアーウォール
 -> 詳細設定 -> 受信の規則+右ペイン「新しい規則」→ ポート -> TCP 
 -> 特定のローカルポート 22 → 接続を許可する → すべて選択


* SJIS でターミナルを開きたい [#qb951304]
~
cygterm.cfg に以下を追記
 ENV_3 = LANG=ja_JP.SJIS
 ENV_4 = CYGWIN=codepage:932
 ENV_5 = TERM=cygwin

コマンドラインの場合
 export LANG=ja_JP.SJIS
 export CYGWIN=codepage:932
 export TERM=cygwin

* apt-cyg [#m6dfd480]
 wget https://raw.githubusercontent.com/transcode-open/apt-cyg/master/apt-cyg
 chmod +x apt-cyg
 mv apt-cyg /usr/local/bin/

* pip [#zb5b6700]
  apt-cyg install python3-pip