레이블이 brew인 게시물을 표시합니다. 모든 게시물 표시
레이블이 brew인 게시물을 표시합니다. 모든 게시물 표시

homebrew disabled the alacritty cask

brew install alacritty 를 해도 안되고
 alacritty (disabled)

brew install --cask alacritty 를 해도 다음과 같이 mac gatekeeper 를 통과하지 못해 설치를 못한다고 한다.
Error: alacritty: Cask 'alacritty' has been disabled because it does not pass the macOS Gatekeeper check! It was disabled on 2026-09-01.

homebrew gatekeeper(맥에 내장된 기본 보안 기능으로 인터넷이나 외부 경로로 다운로드한 응용프로그램이 안전한지 검증하고 신뢰할 수 없으면 실행을 차단) 통과 필수 적용
- 5.0.0 릴리스 공지에서 gatekeeper 를 통과하는 패키지만 설치 가능
- cask 비활성화 사유를 unsigned에서 fails_gatekeeper_check로 바꾼 PR
- alacritty cask disable 처리
- alacritty 같이 .app을 빌드하는 formula는 받지 않는다는 규정

alacritty 대응
- 공증(gatekeepe 통과를 위한 서명) 논의https://github.com/alacritty/alacritty/issues/8749

공증을 받으려면 apple developer 계정이 필요하고 연 $99 비용이 든다.
메인테이너(chrisduerr)는 이를 "scam", "ransom" 이라고 거부하고 비용을 대신 내겠다는 댓글도 스팸으로 보겠다고 한다.
homebrew 가 소스를 받아 직접 빌드하고 서명해서 배포해야 한다고 주장하지만 homebrew는 .app을 빌드하는 formula를 받지 않고 있다.
homebrew 쪽에서 alacritty 전용 tap(외부 저장소, tap 있다면 brew install 가능하고, 맥에서 실행시 인증되지 않은 프로그램 허용하면 실행까지 된다.)을 만들라고 제안했지만 alacritty 는 만들지 않고 있다.

흠, 그냥 cargo 로 설치하자.
cargo install alacritty

replace intel app to apple app

mac intel -> M1(apple silicon)으로 마이그레이션 후
intel kind의 프로세서들은 rosetta2 에뮬레이터가 변환해서 apple silicon 에서도 동작한다.
하지만 변환과정으로 비효율적이다.
activity Monitor.app > kind 로 intel 프로세스를 확인할 수 있다.

아직 apple silicon(arm64) 바이너리가 많이 없지만 있다면 대체해보자.

# file 명령으로 바이너리가 어떤 환경에서 실행 되는지 알 수 있다.
file /bin/sh

# bin/zsh 는 arm64, x86_64 둘다 지원하는 universal binary 다.
file /bin/zsh

# intel 용으로 zsh 를 실행하기
arch -x86_64 /bin/zsh

# arm64 용으로 zsh 를 실행하기
arch -arm64 /bin/zsh

# 그런데 /usr/local/bin/zsh 는 x86_64 바이너리다.
file /usr/local/bin/zsh

# 아래 사이트에서 brew 설치 스크립트를 실행하면
# apple silicon 용(/opt/Homebrew/bin 에 설치) homebrew 로 설치 된다.
# 설후 설정을 보면 HOMEBREW_PREFIX: /opt/Homebrew 로 되어 있다.
brew config

# apple silicon 용 brew 등의 바이너리를 우선 실행할 수 있도록 한다.
export PATH=/opt/Homebrew/bin:$PATH

# 이제 쉘을 재시작하고 zsh 설치해 보자.
# bash 도 arm64 으로 설치하자.
brew install zsh bash

# 새로 설치된 zsh 는 arm64 버전이다.
which zsh
/opt/Homebrew/bin/zsh
file /opt/Homebrew/bin/zsh
/opt/Homebrew/bin/zsh: Mach-O 64-bit executable arm64

# 이제 brew 로 arm64 버전의 프로그램을 설치 할 수 있다.
brew install vim fzf git lsd wegt dog 등등

# 참고로 x86_64 용(/usr/local/bin 에 설치) brew 를 사용하려면
# x86_64 용(/usr/local/bin 에 설치) homebrew 설치하고
arch --x86_64 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/
install/HEAD/install.sh)"

# 다음과 같이 사용한다.
arch --x86_64 /usr/local/Homebrew/bin/brew install {패키지이름}

#####

arm64 zellij (/opt/Homebrew/bin/zellij) 0.39.1 을 사용하면 status-bar 등의 코드에서 에러가 발생한다.
SSE2 명령셋등 intel cpu 종속적인 코드가 있어 보인다.

# 당분간은 x86_64 zellij 사용하기 위해 arm64 로 설치된 zellij 는 제거한다.
brew uninstall zellij

# 몇주 후 0.39.2 버전이 나왔고 설치하니 해결되었다.
arch -arm64 brew install zellij

# 버전확인
/opt/homebrew/bin/zellij --version
zellij 0.39.2

# arm64 바이너리 확인
file /opt/homebrew/bin/zellij
/opt/homebrew/bin/zellij: Mach-O 64-bit executable arm64

#####

# 마이그레이션 후 파이썬 설치시
brew install python

# 또는 uname -m 이 x86_64 라면
arch -arm64 brew install python

# 다음과 같은 에러가 발생했다.
Error: An exception occurred within a child process:
  FormulaUnavailableError: No available formula with the name "/opt/Homebrew/Library/Taps/homebrew/homebrew-core/Aliases/python".

# 확인해보니 다음 경로 자체가 없었다.
/opt/Homebrew/Library/Taps/homebrew/homebrew-core

# homebrew/core 를 다시 구성후 설치하면 된다.
# 구성에 시간이 좀 걸린다.
brew tap homebrew/core

# 만약 /opt/Homebrew/Library/Taps/homebrew/homebrew-core 경로가 있는 상태에서도 안되면 삭제후 시도해보자.
rm -rf /opt/Homebrew/Library/Taps/homebrew/homebrew-core

#####

# 마이그레이션 후 
# pyenv 로 python 설치하면 다음과 같은 이유로 실패 한다.
pyenv install -v 3.12
ld: warning: duplicate -rpath '/Users/ysoftman/.pyenv/versions/3.12.0/lib' ignored
ld: warning: duplicate -rpath '/opt/homebrew/lib' ignored
ld: warning: search path '/Users/ysoftman/.pyenv/versions/3.12.0/lib' not found
ld: warning: search path '/Users/ysoftman/.pyenv/versions/3.12.0/lib' not found
ld: Undefined symbols:
ld: Undefined symbols:
  _libintl_bindtextdomain, referenced from:
      __locale_bindtextdomain in _localemodule.o
      __locale_bindtextdomain in _localemodule.o
  _libintl_dcgettext, referenced from:
      __locale_dcgettext in _localemodule.o
  _libintl_dgettext, referenced from:
      __locale_dgettext in _localemodule.o
  _libintl_gettext, referenced from:
      __locale_gettext in _localemodule.o
  _libintl_setlocale, referenced from:
      __locale_setlocale in _localemodule.o
      __locale_setlocale in _localemodule.o
      __locale_localeconv in _localemodule.o
      __locale_localeconv in _localemodule.o
      __locale_localeconv in _localemodule.o
      __locale_localeconv in _localemodule.o
  _libintl_textdomain, referenced from:
      __locale_textdomain in _localemodule.o
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [Programs/_freeze_module] Error 1
make: *** Waiting for unfinished jobs....

# libintl.a 라이브러리에 있는 심볼들이 보인다.
# /opt/homebrew/lib/libintl.a 를 참조하지 않는게 문제 같다.
nm /opt/homebrew/lib/libintl.a | rg  "_libintl_(bindtextdomain|dcgettext|dgettext|gettext|setlocale)$"

# 구글링으로 여러 방법들을 시도...
# gettext library 를 찾지 못한다고 해서 다시 설치했지만 안된다.
brew reinstall gettext

# arm64 library 을 찾도록 LDFLAG 를 설정해도 안된다.
export LDFLAGS="-L/opt/homebrew/lib"
export CPPFLAGS="-I/opt/homebrew/include"

# 기존 x86_64 라이브러를 우선 참조하게 되는것 같아 해당 path 를 강제 삭제해도 안된다.
rm -rf /usr/local/Cellar/{gettext,readline}

# arm64 용으로 make gcc 등 컴파일러 최신으로 설치해도 안된다.
arch -arm64 brew install cmake make gcc

# 이번에는 실제 파이썬 소스를 다운받아 다음과 같이 빌드하면 잘된다.
# 아래처럼 configure 로 Makefile 이 생성하면 CC=gcc CXX=g++ 로 설정되어 있다.
git clone https://github.com/python/cpython
cd cpython; ./configure && make -j10

# pyenv 빌드시 clang (Apple clang version 15.0.0) 대신 
# 컴파일러를 gcc(없다면 설치 brew install gcc)로 변경하니 된다.
CC=/opt/homebrew/bin/gcc-13 pyenv install -v 3.12

# 몇달 후 zellij, /opt/homebrew 패키지들을 arm64 로 다시 설치등의 변화가 있었는데,
# 별도 CC 설정없이 clang (Apple clang version 15.0.0) 로도 됐다.
pyenv install -v 3.12

######

2026년 현재 macOS 27 Golden Gate는 로제타 2를 온전하게 지원하는 마지막 버전이고,
내년에 나올 차기 버전인 macOS 28부터는 인텔 전용 앱 지원이 대폭 축소되거나 본격적으로 제거될 예정이라고 한다.

intel 맥 -> apple sillicon 맥으로 마이그레이션 후 intel 환경에서 사용하던 brew 프로그램들(/usr/local/{bin,opt}등)올 제거하는 스크립트가 추가됐다.(2024-05-24)
curl -fsSLO https://raw.githubusercontent.com/Homebrew/install/HEAD/uninstall.sh
/bin/bash uninstall.sh --path /usr/local

추가로 예전 intel 맥에서 쓰던 pip, npm 패키지들도 삭제
/usr/local/anaconda3
/usr/local/lib/python2.7 ~ python3.12
/usr/local/lib/node_modules

brew warning

# brew 설치/삭제 시 다음과 같이 openjdk 에러 발생한다.
Warning: Calling the `appcast` stanza is deprecated! Use the `livecheck` stanza instead.
Please report this issue to the adoptopenjdk/openjdk tap (not Homebrew/brew or Homebrew/homebrew-core),
or even better, submit a PR to fix it:
  /usr/local/Homebrew/Library/Taps/adoptopenjdk/homebrew-openjdk/Casks/adoptopenjdk11.rb:9

# openjdk 저장소를 강제로 untap 후 openjdk 를 삭제해야 한다. 
brew untap --force adoptopenjdk/openjdk
brew uninstall adoptopenjdk11 adoptopenjdk12

# brew doctor 로 발견된 warning 해결하기
brew doctor

#####

Warning: A newer Command Line Tools release is available.
Update them from Software Update in System Preferences.

If that doesn't show you any updates, run:
  sudo rm -rf /Library/Developer/CommandLineTools
  sudo xcode-select --install

Alternatively, manually download them from:
  https://developer.apple.com/download/all/.
You should download the Command Line Tools for Xcode 14.2.

# 해결방법
sudo rm -rf /Library/Developer/CommandLineTools
sudo xcode-select --install

#####

Warning: Some installed kegs have no formulae!
This means they were either deleted or installed manually.
You should find replacements for the following formulae:
  python@2
  ccze
  erlang@19
  spdylay
  boost-python

# 해결방법
brew uninstall --ignore-dependencies python@2 ccze erlang@19 spdylay boost-python

#####

Warning: You have the following deprecated, cask taps tapped:
  caskroom/versions
Untap them with `brew untap`.

# 해결방법
brew untap caskroom/versions

#####

Warning: Some installed formulae are deprecated or disabled.
You should find replacements for the following formulae:
  cronolog
  delta
  dosbox
  gcal
  glide
  ilmbase
  lua@5.1
  octant
  sdl_net
  sdl_sound
  sshfs
  xml2

# 해결방법
brew uninstall --ignore-dependencies cronolog delta dosbox gcal glide ilmbase lua@5.1 octant sdl_net sdl_sound sshfs xml2

#####

Warning: Unbrewed dylibs were found in /usr/local/lib.
If you didn't put them there on purpose they could cause problems when
building Homebrew formulae, and may need to be deleted.

Unexpected dylibs:
  /usr/local/lib/libDSToolkitV30-v3.4.2.20.dylib
  /usr/local/lib/libevent-1.4.2.1.3.dylib
  /usr/local/lib/libevent_core-1.4.2.1.3.dylib
  /usr/local/lib/libevent_extra-1.4.2.1.3.dylib
  /usr/local/lib/libldap.dylib

# 해결방법
rm -rf  /usr/local/lib/libDSToolkitV30-v3.4.2.20.dylib
rm -rf  /usr/local/lib/libevent-1.4.2.1.3.dylib
rm -rf  /usr/local/lib/libevent_core-1.4.2.1.3.dylib
rm -rf  /usr/local/lib/libevent_extra-1.4.2.1.3.dylib
rm -rf  /usr/local/lib/libldap.dylib

#####

Warning: Unbrewed header files were found in /usr/local/include.
If you didn't put them there on purpose they could cause problems when
building Homebrew formulae, and may need to be deleted.

Unexpected header files:
  /usr/local/include/evdns.h
  /usr/local/include/event-config.h
  /usr/local/include/event.h
  /usr/local/include/evhttp.h
  /usr/local/include/evrpc.h
  /usr/local/include/evutil.h
  /usr/local/include/memcached/protocol_binary.h
  /usr/local/include/python3.7m/greenlet/greenlet.h

# 해결방법
rm -rf /usr/local/include/evdns.h
rm -rf /usr/local/include/event-config.h
rm -rf /usr/local/include/event.h
rm -rf /usr/local/include/evhttp.h
rm -rf /usr/local/include/evrpc.h
rm -rf /usr/local/include/evutil.h
rm -rf /usr/local/include/memcached/protocol_binary.h
rm -rf /usr/local/include/python3.7m/greenlet/greenlet.h

#####

Warning: Unbrewed '.la' files were found in /usr/local/lib.
If you didn't put them there on purpose they could cause problems when
building Homebrew formulae, and may need to be deleted.

Unexpected '.la' files:
  /usr/local/lib/libevent.la
  /usr/local/lib/libevent_core.la
  /usr/local/lib/libevent_extra.la

# 해결방법
rm -rf  /usr/local/lib/libevent.la
rm -rf  /usr/local/lib/libevent_core.la
rm -rf  /usr/local/lib/libevent_extra.la

#####

Warning: Unbrewed static libraries were found in /usr/local/lib.
If you didn't put them there on purpose they could cause problems when
building Homebrew formulae, and may need to be deleted.

Unexpected static libraries:
  /usr/local/lib/libevent.a
  /usr/local/lib/libevent_core.a
  /usr/local/lib/libevent_extra.a

# 해결방법
rm -rf  /usr/local/lib/libevent.la
rm -rf  /usr/local/lib/libevent_core.la
rm -rf  /usr/local/lib/libevent_extra.la

#####

Warning: You have unlinked kegs in your Cellar.
Leaving kegs unlinked can lead to build-trouble and cause formulae that depend on
those kegs to fail to run properly once built. Run `brew link` on these:
  python-certifi
  midnight-commander
  docker-credential-helper-ecr
  docker
  thefuck
  pygments
  docutils
  redis
  python-tabulate
  numpy
  macvim
  tcl-tk
  pyyaml
  python-typing-extensions
  libevent
  six
  black
  wireshark

# 해결방법
brew link --overwrite python-certifi midnight-commander docker-credential-helper-ecr docker thefuck pygments docutils redis python-tabulate numpy macvim tcl-tk pyyaml python-typing-extensions libevent six black wireshark

pipenv install pycrypto gmp file not found

# pipenv install 로 설치중 pycrypto 에서 다음과 같은 에러가 발생했다.
[pipenv.exceptions.InstallError]:       clang -Wno-unused-result -Wsign-compare -Wunreachable-code -fno-common -dynamic -fwrapv -Wall -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX12.sdk -std=c99 -O3 -fomit-frame-pointer -Isrc/ -I/usr/include/ -I/Users/ysoftman/.local/share/virtualenvs/ysoftman-kMySlf5j/include -I/usr/local/opt/python@3.9/Frameworks/Python.framework/Versions/3.9/include/python3.9 -c src/_fastmath.c -o build/temp.macosx-12-x86_64-3.9/src/_fastmath.o
[pipenv.exceptions.InstallError]:       src/_fastmath.c:36:11: fatal error: 'gmp.h' file not found
[pipenv.exceptions.InstallError]:       # include <gmp.h>
[pipenv.exceptions.InstallError]:                 ^~~~~~~
[pipenv.exceptions.InstallError]:       1 error generated.
[pipenv.exceptions.InstallError]:       error: command '/usr/bin/clang' failed with exit code 1
[pipenv.exceptions.InstallError]:       [end of output]

# brew reinstall gmp 를 다시 설치해 봤지만 해결되지 않았다.
# pip install --no-cache pycrypto 도 에러가 발생한다.

# 다음 환경 변수를 주면 설치된다.
# pip 로 설치시
env "CFLAGS=-I/usr/local/include -L/usr/local/lib" pip install --no-cache pycrypto

# pipevn 로 설치시
env "CFLAGS=-I/usr/local/include -L/usr/local/lib" pip install pycrypto

# 환경변수로 한번만 등록해도 된다.
export "CFLAGS=-I/usr/local/include -L/usr/local/lib" 
pip install pycrypto

mac os 업데이트

# macOS 를 Monterey(12.1) 로 업데이트 했다.

# brew 설치 커맨드 실행하면 xcode 가 오래됐으니 신규버전을 설치하라고 한다.
Error: Your Xcode (12.3) is too outdated.
Please update to Xcode 13.1 (or delete it).
Xcode can be updated from the App Store.

# 하지만 app sotre 에서 xcode 를 update 하면 1시간이 넘도록 진행하다 실패한다.
# xcode 는 아래 apple 홈페이지에서 다운 받아 설치하는 것이 더 빠르다.
# xcode_13.2.1.xip 파일을 다운 후 실행하면 xcode.app 가 풀리고 Applications 로 이동(설치)하면 된다.

# 그리고 CommLineTools 도 삭제하고 다시 설치해야 한다.
# 위 URL 에서 Command Line Tools for Xcode 13.2 다운받아 설치하거나
# xcode-select 로 설치한다.
sudo rm -rf /Library/Developer/CommandLineTools
xcode-select --install
# 버전 확인
pkgutil --pkg-info com.apple.pkg.CLTools_Executables

brew unkown command cask

맥 GUI 앱을 설치 할때 사용하는 cask 옵션이 언제부터인가 동작하지 않는다.
brew cask install docker
Error: Unknown command: cask

brew 2.6.0 부터 cask 가 deprecated 되었고, 이제는 --cask 로만 사용할 수 있다.

다음과 같이 사용하자.
brew install --cask docker

mac useful apps

# stats - cpu, gpu, ram, disk, network 모니터링
# 설치
brew install stats

# menubar 에 다음과 리소스 상태가 보인다.

#####

# runcat - 리소스 사용률에 따라 고양이가 빨리 달린다.
# 설치 - 앱스토어
# menuabar에 고양이가 달리고 있다.

# runners 메뉴에서 고양이 대신 다른것을 선택할 수 있다.

#####

# monitoring mac cpu throttling 
# 설치
brew install --cask hot

# hot.app 실행
# CPU speed limit 또는 Thermal Pressure 가 Nominal 이면 정상

# 참고로 다음 명령어로도 throttling 을 파악할 수 있다.
# appli silicon
# 다음 명령을 실행했을때 정상적이라면 다음과 같이 Nominal 로 표시된다.
# -s (--samplers)
sudo powermetrics -s thermal

# intel
# 다음 명령을 실행했을때 CPU_Speed_Limit 가 100 아래로 떨어지면 throttling 된것이다.
pmset -g thermlog

#####

# rectangle - 앱 위치 정렬
# https://github.com/rxhanson/Rectangle
# 설치
brew install --cask rectangle

# 아래 스샷의 단축키로 창을 정렬하는데 아주 유용하다.

mac JDK 설치

# JDK 의 오픈소스는 크게 openjdk 와 adoptopenjdk 가 있다.
# openjdk (TCK(Technology Compatibility Kit) 인증됨)설치
# https://formulae.brew.sh/formula/openjdk
# 가장 최신 버전이 설치된다.
brew install openjdk

# 현재 openjdk 는 최신버전(13)외 11만 설치할 수 있다.
brew install openjdk@11

# 다음 위치에 java, javac 등이 있다.
/usr/local/opt/openjdk/bin

# 참고로 /usr/local/opt/openjdk 는 실제 아래로 경로에 소프트 링킹되어 있다.
/usr/local/Cellar/openjdk
/usr/local/Cellar/openjdk@11


#####


# adoptopenjdk(openjdk 호환, TCK(Technology Compatibility Kit) 인증이 안됨) 설치
# https://github.com/AdoptOpenJDK/homebrew-openjdk
# brew cast 로 openjdk 최신 버전 설치
brew cask install adoptopenjdk

# 특정 버전을 설치하는 경우
brew cask install adoptopenjdk12
brew cask install adoptopenjdk11
brew cask install adoptopenjdk/openjdk/adoptopenjdk8

# 설치 위치
# jdk 버전을 변경하고 싶을때는 export JAVA_HOME= 으로 아래 경로를 설정하면 된다.
/Library/Java/JavaVirtualMachines/adoptopenjdk-12.jdk/Contents/Home/
/Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home/
/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home/

mac apr tomcat native 라이브러리 문제

# mac 에서 tomcat conf/logging.properties 에서 로그레벨을 DEBUG 으로 하고
# tomcat 을 실행하면
./apache-tomcat-9.0.31/bin/catalina.sh run

# 다음과 같이 apr tomcat native 라이브러리를 찾을 수 없다는 에러가 발생한다.
org.apache.catalina.core.AprLifecycleListener.lifecycleEvent 프로덕션 환경들에서 최적의 성능을 제공하는, APR 기반 Apache Tomcat Native 라이브러리가, 다음 java.library.path에서 발견되지 않습니다: [/Users/ysoftman/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.]

# tomcat-native 설치 후
brew install tomcat-native

# 링크를 걸어주면 된다.
sudo ln -s /usr/local/opt/tomcat-native/lib/libtcnative-1.* /Library/Java/Extensions

tomcat 설치 및 실행

# mac 에서 설치
brew install tomcat

# ubuntu 에서 설치
sudo apt-get install tomcat8 tomcat8-docs tomcat8-examples tomcat8-admin

# bin path
/usr/share/tomcat8/bin/

# conf path
/var/lib/tomcat8/conf/

# log path
/var/log/tomcat8/

# mac 에서 path
brew ls tomcat
/usr/local/Cellar/tomcat/9.0.14/bin/catalina
/usr/local/Cellar/tomcat/9.0.14/homebrew.mxcl.tomcat.plist
/usr/local/Cellar/tomcat/9.0.14/libexec/bin/ (17 files)
/usr/local/Cellar/tomcat/9.0.14/libexec/conf/ (10 files)
/usr/local/Cellar/tomcat/9.0.14/libexec/lib/ (30 files)
/usr/local/Cellar/tomcat/9.0.14/libexec/logs/ (5 files)
/usr/local/Cellar/tomcat/9.0.14/libexec/temp/safeToDelete.tmp
/usr/local/Cellar/tomcat/9.0.14/libexec/webapps/ (571 files)
/usr/local/Cellar/tomcat/9.0.14/libexec/work/ (2 files)
/usr/local/Cellar/tomcat/9.0.14/libexec/ (2 files)
/usr/local/Cellar/tomcat/9.0.14/RELEASE-NOTES
/usr/local/Cellar/tomcat/9.0.14/RUNNING.txt

# 포트 변경
sudo vi /var/lib/tomcat8/conf/server.xml
# mac 에선
sudo vi /usr/local/Cellar/tomcat/9.0.14/libexec/conf/server.xml
<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443 />


# 설정 파일 아래 내용 추가
sudo vi /var/lib/tomcat8/conf/tomcat-users.xml
# mac 에선
sudo vi /usr/local/Cellar/tomcat/9.0.14/libexec/conf/tomcat-users.xml

<role rolename="manager-gui"/>
<role rolename="admin-gui"/>
<user username="ysoftman" password="1234" roles="manager-gui,admin-gui"/>
</tomcat-users>

# 버전 확인
sudo bash /usr/share/tomcat8/bin/version.sh

# mac 에서 버전 확인
/usr/local/bin/catalina version

# mac 에서 시작
/usr/local/bin/catalina start

# mac 에서 종료
/usr/local/bin/catalina stop

# 시작
systemctl start tomcat8

# 종료
systemctl stop tomcat8

# 재시작
systemctl restart tomcat8

# WSL(windwos subsystem for linux)환경에서는
# systemctl 을 사용하면 다음과 같이 에러가 발생한다.
# 부팅시 systemd 를 초기화 할 수 없기 때문인것 같다.
System has not been booted with systemd as init system (PID 1). Can't operate

# 이 경우 다음과 같이 service 로 실행하자.
sudo service tomcat8 start

# stop, restart 도 service 로 실행
sudo service tomcat8 stop
sudo service tomcat8 restart

# 로컬로 톰캣 동작을 확인
http://localhost:8080/ ->  manager webapp 에서 위 설정한것으로 로그인

brew python downgrade 와 vim 문제

# 2018-10월 현재 최신 python3.7 로 tensorflow 을 실행 할 수 없음
# mac에서 python 3.6.5 버전으로 다운그레이드하기로 함

# 현재 python 3.7 링크 제거
brew unlink python

# python 3.6.5 버전 설치
brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/f2a764ef944b1080be64bd88dca9a1d80130c558/Formula/python.rb

# brew 로 설치한 vim 8.1 이 python 3.7 을 사용하고 있어
# vim 은 다음과 메시지를 발생하며 실행되지 않는다.
dyld: Library not loaded: /usr/local/opt/python/Frameworks/Python.framework/Versions/3.7/Python
  Referenced from: /usr/local/bin/vim
  Reason: image not found
[1]    43109 abort      vim


# vim 제거(제거 후 /usr/bin/vim 을 사용해도 된다.)
brew remove vim

# vim python2 로 재설치
# 디렉토리가 비워있지 않아 설치 에러가 발생하면 /usr/local/Cellar/vim 에서 삭제
brew install vim --with-python@2

# 링크가 깨져 있으면
brew unlink vim && brew link vim

python 실행 에러

# case1
# 설치는 했지만 pip(python2) 를 찾을 수 없는 경우가 있다.
# python2 를 재설치
brew reinstall python@2

# 안되면 강제 삭제 후 재설치

brew uninstall --ignore-dependencies python@2
brew install python@2

# 참고로 centos 에서
sudo alternatives --set python /usr/bin/python2
# 또는
sudo alternatives --set python /usr/bin/python3
# 로 기본 파이썬 실행 /usr/bin/python 을 설정할 수 있다.

# case2
# pip install requests 모듈을 설치했는데도 
# 파이썬 실행시 다음과 같이 모듈이 없다는 에러가 발생한다.
ImportError: No module named requests

# 해당 모듈은 이미 설치가 된 상태이다.(맥 기준)
pip install requests 
Requirement already satisfied: requests in /Library/Python/2.7/site-packages

# 현재 파이썬에서 사용되는 라이브러리 경로를 확인해보면
# /Library/Python/2.7/site-packages 가 포함되어 있지 않다.
python
>>> import sys
>>> print sys.path

# 파이썬 모듈은 sys.path 에 설정된 경로에서 찾는다.
# PYTHONPATH 환경변수로 다음과 같이 추가하면 sys.path 에 추가된다.
# mac 의 경우
export PYTHONPATH=/Library/Python/2.7/site-packages

# linux 의 경우
export PYTHONPATH=/usr/local/lib/python2.7/site-packages

# sys.path 를 다시 확인해보면 경로가 추가되었고,이제 모듈 에러가 발생하지 않는다.
# 하지만 3.x 버전에선 다시 실행되지 않는 문제가 있다.
# python2, 3 을 모두 사용하려면 pyenv(별도 포스트 참고)로 파이썬을 버전별로 사용하자.
# pip 로 설치시 sudo 를 주면 root 권한으로 설치된다.
# 나중에 설치 삭제때 문제가될수 있어 권한을 사용자로 변경한다.
cd /usr/local/lib/python2.7/site-packages
sudo chown -R ysoftman:admin *

# case3
# python setup.py egg_info 에러 발생하는 경우
# pip 와 setuptools 를 최신으로 업그레이드 하자
sudo pip install --upgrade pip setuptools

# case4
# docker package 를 찾지 못하는 에러가 발생하는 경우
python -c "import docker"
ImportError: No module named docker

# 패키지는 설치된것으로 나온다.
pip list | grep docker

# 이럴땐 pip 로 해당 패키지를 unistall 해주고
sudo pip uninstall -y docker docker-py

# pip 로 docker 패키지를 다시 설치하자.
# 참고로 최신 docker 패키지에 docker-py 기능이 포함되어 있어
# docker-py 를 설치하면 다음의 에러가 발생하여 docker 만 새로 설치해야 한다.
# module' object has no attribute 'APIClient'
sudo pip install --force-reinstall --no-cache-dir docker

python 유닛테스트 컬러 출력하기, Operation not permitted 에러 해결하기

# green 이라는 패키지는 테스트시 콘솔로 출력되는 결과를 컬러풀하게 보여준다.
# https://github.com/CleanCut/green
# 설치하기
sudo pip install green

# 설치 중 다음과 같은 에러가 발생하면
OSError: [Errno 1] Operation not permitted: '/tmp/pip-rmbpTj-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/six-1.4.1-py2.7.egg-info'

# python 재설치(또는 설치)해 보자.
brew reinstall python

# python 실행시 다음과 같이 green 으로 수행하면 된다.
# -v 옵션에 v 가 많을 수록 좀더 자세한 결과가 보여진다.
green -vv python ysoftman.py

pip 설치하기

# PIP(Python Package Index) 는 리눅스의 apt-get 이나 yum 과 같이 방대한 파이썬 라이브러를 쉽게 설치하고 사용하게 해준다.

# 데비안 계열에서 pip 설치
sudo apt-get install python-pip python3-pip

# 레드햇 계열에서 pip 설치
# 우선 EPEL(Extra Packages for Enterprise Linux, Fedora 에서 제공되는 최신 패키지 저장소) 를 추가해야 한다.  
sudo rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
sudo yum install python-pip

# mac pip 설치
# python 설치하면 pip 도 설치
brew install python@2 python

# linux pip 설치
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
sudo python get-pip.py
# 또는
# pip3가 생성되지 않으면 복사하고 첫줄을 변경해서 써도 된다.
cp /usr/local/bin/pip /usr/local/bin/pip3
vi /usr/loca/bin/pip3

#!/usr/local/opt/python3/bin/python3
# pip 는 다음처럼 pip 디렉토리로 설치된다.
/usr/local/lib/python2.7/site-packages/pip
/usr/local/lib/python3.6/site-packages/pip

# 수동으로 실행하기
python /usr/local/lib/python2.7/site-packages/pip -V

# 윈도우에서 pip 설치
(파이썬 2.7.9 이후나 파이썬 3에는 pip 가 포함되어 있어 업데이트한다.)
python.exe -m pip install -U pip

# 윈도우에서 파이썬 2.7.9 이전 버전이라면 다음 파이썬 파이을 다운 받아 실행한다.
https://bootstrap.pypa.io/get-pip.py
python.exe get-pip.py

# 윈도우에서 파이썬 pip 위치는 다음과 같다.
환경설정 path 추가하도록 하자.(리눅스의 경우 /usr/bin/pip 에 설치됨)
C:\Python34\Scripts\pip.EXE


##########


# pip 기본 명령
# pip 업그레이드
pip install -U pip

# 설치된 패키지 리스트
pip list

# 설치된 패키지 정보 보기
pip show 패키지명

# 패키지 설치
pip install 패키지명

# 특정 버전의 패키지 설치
pip install 패키지명==1.2.3

# 사내에서 proxy 서버를 사용해야 하는 경우
pip install --proxy=https://프로시서버ip:1234 패키지명

# 사내에서 proxy 서버를 사용해야 버전업그레이드 하는 경우
python3 -m pip install --proxy=http://프로시서버ip:123 --upgrade pip 

# 패키지 삭제
pip uninstall 패키지명

# 현재 디렉토리 모듈 editable 로 설치
# -e 옵셥으로 설치한 모듈 정보를 보면(pip show ysoftman123)
# location 값이 /usr/local/lib/python3.x 아닌 현재 로컬 디렉토리로 되어있다.
pip install -e .
# 이제 현재 디렉토리의 .py 를 변경한 상태로 모듈을 실행해볼 수 있다.
python -m ysoftman123

스크립트로 매트릭스(Matrix) 화면 만들기

콘솔 창에서 매트릭스 화면을 위해 스크립트를 작성해 보자.

[윈도우 .bat]
@rem ysoftman
@rem cmd 창에서 매트릭스효과 내기

@echo off
color 0a
mode 1000

:matrix
echo %random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%

goto matrix

[리눅스]
shell script

[맥]
http://www.asty.org/cmatrix/
brew install cmatrix

Mac 패키지 관리자 brew 사용하기

Mac 에서 리눅스의 yum, apt-get 같은 기능을 해주는게 port 와 brew 라는 프로그램이다.
의존성이 있는 프로그램들을 알아서 설치해주니 필수로 설치하도록 하자.
port 보단 brew 를 더 많이 사용하는것 같다.

# brew
# 자세한 사용방법 :http://brew.sh/index_ko.html
# 설치하기(ruby 사용)
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

# brew 로 설치된 프로그램(패키지) 보기
# list 또는 ls
brew ls

# 패키지 path 보기
brew ls nmap

# 패키지 검색
brew search nmap

# brew 로 nmap 설치
brew install nmap

# 설치 후 과정만 다시 수행
brew postinstall nmap

# 설치된 패키지 중 old 버전 삭제
brew clean

# 패키지 삭제
brew remove nmap

# dead symlinks 인경우 제거
brew prune

# 패키지 정보(등록된 url 을 확인할 수 있다.)
brew info nmap

# curl 설치(http2 사용할 수 있도록)
# 2019년부터 --with-nghttp2 옵션 제거됐다.
# https://github.com/Homebrew/homebrew-core/issues/31510
# brew install curl --with-nghttp2
# http2 를 사용하려면 대신 curl-openssl 을 설치해야 한다.
brew install curl-openssl

# brew 로 설치된 프로그램은
# /usr/local/Cellar 에 다운로드되고
# /usr/local/bin 에 링크 파일을 생성한다.
# 원래 맥에서 기본 제공하는 /usr/bin/ 의 curl 같은 프로그램은
# brew 로 설치하면 /usr/local/bin 에 링크 파일이 생성되지 않는다.
# 이런 경우를 다음과 같이 keg-only 라고 한다.
"This formula is keg-only, which means it was not symlinked into /usr/local"

# 이렇게 설치시 자동으로 링크가 되지 않는 경우
# link --force 옵션으로 링크 파일을 강제 생성할 수 있다.
# /usr/local/bin/curl 링크 파일이 강제 생성
# 참고로 brew unlink 는 /usr/local/bin 링크 파일이 삭제한다.
brew link --force curl-openssl

# 그런데 macOS 에서 link --force 도 거부된다.
Warning: Refusing to link macOS-provided software: curl-openssl

# 대신 PATH 환경변수를 사용해야 한다.
export PATH=/usr/local/opt/curl-openssl/bin:$PATH

# 서비스(백그라운드) 작업시
brew services list
brew services start mysql@5.7
brew services stop mysql@5.7

MySQL ERROR 2002 (HY000)

# mysql (클라이언트)을 실행했을때 다음과 같은 에러가 발생했다.
# mac 의 경우 /tmp/mysql.sock
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

# [해결방법]
# mysql (데몬)을 실행시키면 /var/lib/mysql/mysql.sock 파일이 생성되며, mysql 데몬을 죽이면 사라지게 된다.
sudo /sbin/service mysqld start

# mac brew 서비스라면 다음과 같이 실행하면 /tmp/mysql.sock 파일이 생성된다.
brew services start mysql

# 참고, mac arm64 환경에서의 my.cnf 파일 위치
vi /opt/homebrew/etc/my.cnf
[mysqld]
# Only allow connections from localhost
bind-address = 127.0.0.1

# 참고, mysql 을 실행시 sock 파일을 명시
mysql --socket=/var/lib/mysql/mysql.sock -h localhost -P 3306 -u root -ptest123

#####

# 다음과 같이 localhost 를 사용해도 에러가 발생한다.
mysql -h localhost -P 3306 -u root
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

# [해결방법]
# localhost -> 127.0.0.1 을 사용하면 된다.
mysql -h 127.0.0.1 -P 3306 -u root -ptest123

Prev