[MacOS] Homebrew update 에러 해결 방법

이 포스트는 macOS High Sierra (v10.13.4) 기준으로 작성되었습니다.

 

시작은 brew update 시 /usr/local 쓰기 권한 에러

첫 번째로 직면한 에러.. /usr/local/ 디렉토리에 권한이 없단다. 그래서 chown 을 시도해봐도 실패.. El Capitan 때 부터 루트리스(Rootless) 보안 강화로 root 계정 조차 어떻게 할 수가 없다. 방법은 재시동 후 Command + R 을 눌러 복구모드로 진입하여 터미널을 실행 시킨다. 그리고 아래 명령을 실행한다.

그리고 다시 재부팅!

이제 권한이 막히는 문제는 해결 되었으니 다시 아래 명령으로 /usr/local/ 권한을 풀어보자

이제 아래 명령으로 Homebrew 업데이트를 해보자.

그런데 이번엔 또 다른 에러가..

/usr/local/Library/ENV/scm/git: No such file or directory

이 에러를 보았다면 아래 커맨드를 입력!

내 로컬에 설정된 Homebrew 디렉토리로 이동한 뒤 git fetch 명령으로 리모트 저장소와 동기화를 한 후 로컬 브랜치를 origin/master로 리셋.

이제 아래 명령으로 Homebrew 업데이트를 해보자.(2)

뭔가 주르륵 업데이트가 되고 아래 문장이 나타난다.

Homebrew no longer needs to have ownership of /usr/local. If you wish you can
return /usr/local to its default ownership with:
sudo chown root:wheel /usr/local

다시 소유 권한을 원래대로 돌려 놓으란다. 아래 명령으로 다시 돌려 놓는다.

-R 옵션(하위 경로 전체 적용)을 주고 chown 명령을 주었기 때문에 -R옵션으로 권한을 바꿔주자.

 

간단하게 업데이트만 하면 될 줄 알았던 Homebrew가 에러 융단 폭격을 날리니 털린 멘탈 주워담으며 정리해본다.

 

[Git] Commit(변경)된 내용을 파일로 추출하는 방법

로컬 Git 저장소에 커밋된 변경 파일들만 뽑아 추출하는 방법을 정리합니다.

 

2개의 커밋 ID 사이에서 변경된 내역들만 파일로 추출

 

마지막 Commit 내역을 파일로 추출

 

* 대괄호 [, ]는 구분을 위해 넣은 것으로 입력할 필요 없습니다.

[Git] 파일 단위 커밋 로그 확인하는 방법

파일 수정 로그를 확인하는 방법 두 가지를 정리해봅니다.

  1. git log –follow [파일명]
    : 해당 파일의 커밋 메세지, 커밋한 사용자, 커밋 일자에 대한 히스토리를 간략한 리스트로 보여줍니다.
  2. git log -p [파일명]
    : 해당 파일의 커밋 메세지, 변경된 소스 내역, 커밋 일자에 대한 히스토리 상세 내역을 보여줍니다.
    : 전체 소스가 보여지기 때문에 읽기 모드로 진입하여 보여지는데 이때 Space를 누르면 다음 화면으로 이동되고 q를 누르면 화면이 종료됩니다.

 

 

[AWS] CodeCommit (Private Git Repository) 세팅하는 방법

작년 Re:Invent에서 소개된 새로운 툴 중 하나 인 CodeCommit 의 설정과 사용 방법을 소개합니다.

대체적으로 Windows 계열보다는 Linux(Unix) 계열의 OS에서의 사용이 간편합니다.

그렇다고 Linux로 OS로 갈아타기 부담스럽다면 Windows 용 Git 클라이언트를 설치하면 Linux와 동일하게 사용 가능합니다. (Git – Bash라는 이름의 Bash 쉘이 포함되어 있기 때문입니다.)

그럼 Linux 기준으로 설명해드리겠습니다.

 

AWS IAM 계정 생성하기

링크 : https://console.aws.amazon.com/iam

CodeCommit 을 세팅하기 앞서 우선 계정을 생성해야 합니다.
1. “Create New Groups” 으로 계정 그룹 추가

– 사용할 그룹 이름을 지정하고 “Next Step” 클릭
– Attach Policy에서 “AWSCodeCommitFullAccess”와 “IAMUserSSHKeys” 를 선택하고 “Next Step” 클릭
– 지정 내용 확인 후 “Create Group” 클릭하여 그룹 생성 완료

2. “Create New Users” 로 계정 추가

– Enter User Names에 계정 입력. 사용할 계정을 하나 이상 입력하면 됩니다.

3. 좌측 Users 메뉴를 클릭하고 추가한 사용자 계정을 선택합니다.

4. Access Key는 HTTPS 방식으로 pull/push 하는 경우 사용됩니다. 여기에서는 SSH Key 인증 방식을 사용하기 때문에 Access Key 생성을 하지 않고 생략하겠습니다.

5. “Upload SSH public key”를 클릭한 후 공란에 public key(id_rsa.pub) 의 내용을 저장합니다.

* SSH Key는 ssh-keygen 명령을 통해 생성가능 합니다. 패스워드 없이 사용하고 싶은 경우 생성 시 패스워드 설정 없이 엔터만 입력하면 됩니다. Windows 계열의 경우 위에서 언급한 Git – Bash를 이용해 동일하게 생성 가능합니다. 생성되는 위치는 ~/.ssh 이며 Windows의 경우 C:\Users\계정\.ssh 입니다.

6. 업로드가 완료되었다면 SSH Key ID가 나타납니다. 메모장에 복사해둡니다.

7. ~/.ssh 디렉토리에 config 라는 이름의 파일(확장자 없음)을 생성하여 아래 내용을 입력하고 저장합니다. (퍼미션은 600을 권장합니다. Windows의 경우 무관)

8. SSH 설정이 정상적으로 되었는지 테스트 합니다. 아래 명령을 쉘에 입력하고 실행합니다. (Windows의 경우 Git – Bash에서 가능)

9. 아래 문구가 출력되면 정상적으로 동작하는 것입니다.

10. 이것으로 CodeCommit 사용을 위한 계정과 SSH 설정은 완료 되었습니다.

 

AWS CodeCommit – Git Remote Repository 생성하기

1. 상단 Services에서 CodeCommit 을 선택합니다.

2. 현재(2016-01-19) 기준으로는 버지니아 리젼만 존재하기 때문에 다른 지역의 리젼인 경우 버지니아 리젼을 선택하라고 합니다. 버지니아 리젼 클릭.

3. “Create new repository” 클릭

4. 저장소 이름과 설명을 입력합니다. (설명은 생략 가능)

5. 생성하면 리스트에 표시되며 우측 URL 아이콘을 클릭하면 SSH와 HTTPS가 나타납니다. SSH 클릭

6. Git Repository 주소가 나타나며 복사합니다.

7. 쉘에서 아래와 같이 클론 받습니다.

8. 클론을 받으면 당연히 비어있습니다. 이 곳에 파일을 넣고 커밋 합니다.

9. 마지막으로 CodeCommit 원격 저장소에 푸시 합니다.

10. CodeCommit 화면으로 돌아가서 저장소를 클릭해보면 푸시 된 내용들이 표시됩니다.

 

이렇게 CodeCommit 을 이용해 Git 원격 저장소를 세팅할 수 있습니다. 보시면 아시겠지만 과정의 70%이상이 AWS IAM 설정이 대부분이고 가장 중요한 부분입니다.

세팅 이후 개인이 구축한 Git 원격 저장소처럼 자유롭게 사용 할 수 있습니다. 물론 무료는 아니기 때문에 비용에 관련한 부분은 아래 관련 링크를 참고하시기 바랍니다.

 

관련 링크

AWS IAM 메뉴얼(국문)

AWS CodeCommit 메뉴얼(영문)

AWS CodeCommit 비용

[Git] Staged 된 파일 다시 Unstaged 상태로 변경하는 방법

Git에서 커밋 대상이 되는 파일은 Stage에 등록된 파일들 입니다. 하지만 실수로 commit 되어서는 안될 파일이 Stage에 등록된 경우 제외 시키는 방법입니다.

  1. $ git status 명령으로 소스 파일의 상태를 확인합니다.
    -> 커밋되는 대상이 되는 파일(Stage에 등록된)은 “Changes not staged for commit” 리스트에 표시됩니다.
  2. 커밋에서 제외할 파일은 아래 명령으로 제외시킵니다. (실제론 제외가 아닌 변경되지 않은 상태로 인덱스를 변경)
  3. 다시 $ git status 명령으로 파일이 제외 되었는지 확인 합니다.

[Git] SSH 공개키로 비밀번호 없이 Push/Pull 하도록 설정

Git 원격 저장소를 이용할때 Push나 Pull을 할때 매번 패스워드를 묻게 되는데 이 과정을 SSH 공개키를 생성하여 생략할 수 있습니다.

GitHub가 아닌 별도 원격 Git 저장소 서버를 운영하고 있다는 가정하에 작성된 포스트이며,

최대한 간단하게 설명하도록 하겠습니다.

 

1. 공개키/개인키 생성하기 (Git 원격저장소 서버)

키이름을 정할지와 키 비밀번호를 지정할지를 묻는데 모두 Enter로 지나갑니다.
만약 키이름이 id_rsa가 아닌 다른 이름으로 생성할 경우 git 인증 시점에서 키파일을 읽지 못합니다.
성공적으로 생성되었다면 id_rsa(개인키)와 id_rsa.pub(공개키)가 존재할 것 입니다.

 

2. 공개키 인증 파일(authorized_keys)에 등록

 

3. 키 파일 저장 디렉토리(~/.ssh) 퍼미션 설정

키 파일은 보안에 취약한 설정을 한 경우 사용자 인증이 무력화되는 치명적인 문제를 낳기 때문에 적절한 퍼미션을 설정해주셔야 합니다. 원칙적으로 키파일은 쓰기와 실행 권한을 주지 않습니다.

개인키(id_rsa)의 경우 키 내용을 읽게 되면 인증 정보가 공개되는 것이나 마찬가지이기 때문에 읽기 권한도 주어서는 안됩니다.

 

4. 개인키 획득(다운로드)

개인키(id_rsa) 파일을 본인 PC에 다운로드 받습니다. 이 파일은 자물쇠(공개키)의 열쇠 역할이 되므로 분실되거나 유출되지 않도록 관리해야 합니다.

 

5. SSH 클라이언트로 접속

SSH 접속용 클라이언트는 종류가 많고 각각 방법이 다르기에 자세하게 설명은 어렵습니다. 하지만 공통적인 부분은 접속시 아이디 인증이 아닌 키 인증을 선택하여 비밀키를 불러와 패스워드 대신 개인키로 접속을 하는 것입니다.

개인키를 통해 접속을 한 경우 Git Push 또는 Pull 명령 실행시 키인증 정보를 읽어 패스워드를 더 이상 묻지 않도 자동으로 인증하게 됩니다.

[Git] Push/Pull 명령어 정리

1. 로컬저장소 브랜치를 원격저장소에 푸시

 

2. 로컬저장소 태그를 원격저장소에 푸시

 

3. 저장소 및 브랜치 확인 방법

 

4. 소스 꼬인 경우 강제 pull

 

[Git] 원격 저장소 만들고 Clone 받아오는 방법 정리

원격 저장소 생성하기

1. 원격 저장소로 사용할 디렉토리 생성

2. 원격저장소로 사용하기 위한 초기화

 

 

로컬 환경에서 Clone 받아오기

1. 사용자 정보와 에디터 설정

2. 원격 저장소 내용 Clone 받기(SSH 방식)

 

수정 한 내용 로컬 저장소 커밋 & 원격 저장소 푸시(Push)

1. 원격 저장소 위치 지정

2. 원격 저장소에 푸시

push를 할때 push.default 에 대한 경고 문구가 출력된다면 아래와 같이 설정해줍니다.

matching은 원격 저장소의 브랜치와 일치하는 모든 로컬 브랜치를 Push하는 의미이고

simple은 현재 작업 중인 브랜치만을 Push하는 것을 의미합니다.

 

수정 된 내용 자신의 환경으로 풀(Pull)