Homebrew 실무 치트시트: macOS 및 LinuxBrew 패키지 관리

💡 핵심 요약 (Executive Summary)

본 가이드는 pkg brew 핵심 가이드 및 실전 아키텍처의 핵심 개념, 실전 구성 명령어 및 아키텍처 베스트 프랙티스를 다룹니다. 클라우드 네이티브 및 인프라 엔지니어링 실무에 즉시 활용 가능하도록 체계적으로 정리했습니다.

📑 Table of Contents
setup
bash
## LinuxBrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

(echo; echo 'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"') >> ~/.bashrc
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
source ~/.bashrc

brew install hello
main
bash
#패키지 검색
brew search ${%package%}
brew search ${%package%} --eval-all --desc

#정보 확인
brew info ${package}

#설치
brew install ${package}

#특정버전 설치
brew install ${package}=${version}
#formula, casks 모두 업그레이드
brew upgrade --greedy

#upgrade 후 청소
brew cleanup

#upgrade 되지 않은 항목 확인
brew outdated --greedy
list
bash
## 전체 설치된 파일 확인
brew ls

## dependency 제외한 formula
brew leaves

## 디벤던시 트리
brew deps --tree --installed
tap
bash
# 설치된 tap 목록
brew tap-info --installed

#리포지토리 추가
brew tap ${repo}
bundle
bash
#brewfile 생성(Brewfile 출력됨)
brew bundle dump

#현재경로의 Brewfile을 읽고 설치
brew bundle
services
bash
brew services [list]
brew services info $service
brew services start $service
brew services stop $service
brew services restart $service
features
jdk 설치 ( 사용으로 이제 사용안함)
bash
brew tap adoptopenjdk/openjdk
brew search jdk
brew install --cask adoptopenjdk1
#설치위치 확인
/usr/libexec/java_home -V
Bundle dump backup
  • dump sample file

  • zshrc

bash
#sudo vi /etc/profile
  ---
  ver=Enterprise Cloud
  BREW_BACKUP="${HOME}/Dropbox/backups/Brew/${ver}"
  rm -f ${HOME}/Brewfile && brew bundle dump
  if [[ "$PWD" != "$HOME" ]]; then
    mv ./Brewfile ${HOME}
  fi
  diff_line=$(sdiff -s ${HOME}/Brewfile ${BREW_BACKUP}/Brewfile)
  sdiff_exit_code=$?
  if (( sdiff_exit_code != 1 )); then
    cp ${HOME}/Brewfile ${BREW_BACKUP}
  else
    diff_line_count=$(echo $diff_line | wc -l)
    if (( diff_line_count > 0 )); then
      echo $diff_line
      rm -f ${BREW_BACKUP}/Brewfile
      cp ${HOME}/Brewfile ${BREW_BACKUP}
    fi
  fi

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *