[apt] GPG error: https://cli.github.com/packages stable InRelease 에러

apt-get update를 했는데 다음과 같은 에러가 난다.

W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: https://cli.github.com/packages stable InRelease: 다음 서명이 올바르지 않습니다: EXPKEYSIG 23F3D4EA75716059 GitHub CLI <opensource+cli@github.com>
W: https://cli.github.com/packages/dists/stable/InRelease 파일을 받는데 실패했습니다  다음 서명이 올바르지 않습니다: EXPKEYSIG 23F3D4EA75716059 GitHub CLI <opensource+cli@github.com>
W: Some index files failed to download. They have been ignored, or old ones used instead.

기존 서명 키 삭제

sudo rm /usr/share/keyrings/githubcli-archive-keyring.gpg

최신 키 다운로드 및 설치

curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo tee /usr/share/keyrings/githubcli-archive-keyring.gpg > /dev/null
sudo chmod go+r /usr/share/keyrings/githubcli-archive-keyring.gpg

/etc/apt/sources.list.d/github-cli.list 파일 안에는 이렇게 되어 있다.

deb [arch=amd64 signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main

[github] self-hosted runner

self-hosted runner 실행을 위해서 github 도움말에는 다음과 같이 안내하고 있다.

mkdir actions-runner && cd actions-runner

curl -o actions-runner-linux-x64-2.285.1.tar.gz -L https://github.com/actions/runner/releases/download/v2.285.1/actions-runner-linux-x64-2.285.1.tar.gz

echo "5fd98e1009ed13783d17cc73f13ea9a55f21b45ced915ed610d00668b165d3b2  actions-runner-linux-x64-2.285.1.tar.gz" | shasum -a 256 -c

tar xzf ./actions-runner-linux-x64-2.285.1.tar.gz

./config.sh --url https://github.com/dasomoli/repository --token TOKENTOKENTOKENTOKEN

./run.sh

여기서 config.sh 에 넘기는 토큰은 REST API를 사용하는 다음 명령어로 얻을 수 있다.

curl \
  -u USER_NAME:YOUR_PERSONAL_ACCESS_TOKEN -X POST \
  -H "Accept: application/vnd.github.v3+json" \
  https://api.github.com/repos/USER_NAME/REPO_NAME/actions/runners/registration-token

다음과 같이 jq를 이용해서 .token 값을 가져와서 쉘 변수 내에 설정하는 것도 가능하다.

RUNNER_TOKEN="$(curl -XPOST -fsSL \
        -H "Authorization: token YOUR_PERSONAL_ACCESS_TOKEN" \
        -H "Accept: application/vnd.github.v3+json" \
        "https://api.github.com/repos/USER_NAME/REPO_NAME/actions/runners/registration-token" \
        | jq -r '.token')"

config.shbin/installdependencies.sh 를 실행하고, 나중에 Runner.Listner를 실행한다. 이 때 넘기는 인자는 bin/Runner.Listener configure 뒤에 인자로 넘어간다. config.sh의 다음 줄에서 확인할 수 있다.

 77 if [[ "$1" == "remove" ]]; then
 78     ./bin/Runner.Listener "$@"
 79 else
 80     ./bin/Runner.Listener configure "$@"
 81 fi

systemd를 사용하는 리눅스 시스템의 경우 서비스로 설치해서 사용하려면 다음과 같이 하면 된다고 한다.

sudo ./svc.sh install

sudo ./svc.sh start

[golang] github.com의 private repo 접근하기

$ git config --global url.git@github.com:.insteadOf https://dasomoli@github.com/
$ go get github.com/dasomoli/private-repo

참고: https://stackoverflow.com/questions/27500861/whats-the-proper-way-to-go-get-a-private-repository

[github] Public repo를 private으로 바꾸기

public project를 가져와서 혼자 몰래 뭘 해보고 싶을 때, Apache 2.0 License 등 derived works의 source code 공개 의무가 없는 프로젝트의 경우 private으로 바꿔서 작업을 해볼 수 있다.

다음과 같이 한다.

먼저 만들고 싶은 이름으로 github에서 project를 하나 private으로 만든다.

$ git clone --bare https://github.com/publicproject/project.git
$ cd project.git
$ git push --mirror https://github.com/myname/myproject.git

그리고 나서 실제로 clone해서 쓰면 된다.

$ git push https://github.com/myname/myproject.git

최신 코드로의 업데이트는 public repository를 여기다 remote로 추가해서 fetch & rebase하면 된다.

push는 public으로 fork해온 후 거기다 push 해서 pull request하면 될 듯.

참고: https://medium.com/@bilalbayasut/github-how-to-make-a-fork-of-public-repository-private-6ee8cacaf9d3

코드 삽입 – gist.github.com

워드프레스 자체 플러그인을 이용해서 코드를 삽입하곤 했는데 이게 아무래도 맘에 안든다.

특히 글을 다시 수정하거나 하면 꼭 깨지곤 하는데… -_-+

글 작성하면서 코드를 같이 작성하는 경우가 많아서 꺼리고 있었는데 그냥 gist.github.com으로 가자.

[MacOS] 클립보드 매니저 Clipy

복사/붙여넣기를 할 때 이전 복사했던 것들을 다시 붙여 넣는 경우가 많다.

Windows에서는 Ditto를 애용하는데, 맥에서는 어떤게 있나 보니 오픈소스인 Clipy가 있다.

github https://github.com/Clipy/Clipy 에서 받을 수 있고,

사용법은 간단히 Shift + Cmd + ‘V’ 혹은 Ctrl + Cmd + ‘V’이다.

기본 설정은 항목이 폴더 안에 들어가도록 되어 있는데,

“Preferences…” / “Menu” / “Number of items place inline:” 이 “0”으로 되어 있던 것을 “10” 등으로 적당히 늘려주면 된다.

 

[github] 웹 브라우저로 내 repository 업데이트하기

github에서 fork한 내 repository는 해당 시점의 코드에서 멈춰 있게 된다. 이걸 git으로 작업하지 않고 그냥 브라우저 내에서 업데이트할 수 있다. 나에게 pull request하는 방법을 쓰면 된다.

절차를 간단히 설명하면 다음과 같다.

  1. 내 repository에서 “Compare”를 누른 후, “switching the base”

  2. “Create pull request”를 눌러 원본 repository에서 나에게 pull request를 생성

  3. 아래 confirm하는 곳에서 “Merge pull request” 옆의 세모를 눌러 “Rebase and merge”

 

ATOM editor 사용법

생활코딩에 Atom editor 사용법(https://opentutorials.org/module/1579)이 있길래, 보면서 몇가지 적는다. 적다보니, 내가 뭘 또 이런 것까지 적고 있나 싶긴 한데… ^^;;

  • Toggle tree view:  View / Toggle Tree view (Ctrl + \)
  • Find in buffer: Ctrl + F
  • Find Next: F3, Find Previous: Shift + F3
  • Find File: Ctrl + P. 파일명 일부 혹은 패턴만 쳐도 찾아준다.
  • 아래쪽 오른쪽에 나온 Auto detect 된 File type이 나온다. 변경하고 싶다면 클릭 후 변경.
  • Toggle Developer tools: View / Developer / Toggle Developer tools (Ctrl + Shift + I)
  • Stylesheet: Atom 에디터 내의 element들의 lesscss를 수정할 수 있다. File / Stylesheet
  • Plugins:
    • emmet: HTML tag 작성 시, syntax 작성 후 Tab 혹은 Ctrl+E 하면 html로 풀어준다.
      • !: html template 입력
      • li*20: <li></li> 가 20개 입력.
      • li>a*20: <li> <a href=””></a><a href=””></a>…<a href=””></a> </li>
      • (li>a)*20: <li><a href=””></a></li> <li><a href=””></a></li>…<li><a href=””></a></li>
      • Syntax: https://docs.emmet.io/cheat-sheet/, 더 자세히는 https://docs.emmet.io/abbreviations/syntax/, CSS도 abbreviation 제공(https://docs.emmet.io/css-abbreviations/)
        • Child: >
          • div>ul>li
            <div>
                <ul>
                    <li></li>
                </ul>
            </div>
        • Sibling: +
          • div+p+bq
            <div></div>
            <p></p>
            <blockquote></blockquote>
        • Climb up: ^
          • nav>ul>li^^a
            <nav>
                <ul>
                    <li></li>
                </ul>
            </nav>
            <a href=""></a>
        • Multiplication: *
          • a*10
            <a href=""></a>
            <a href=""></a>
            <a href=""></a>
            <a href=""></a>
            <a href=""></a>
            <a href=""></a>
            <a href=""></a>
            <a href=""></a>
            <a href=""></a>
            <a href=""></a>
        • Grouping: ()
          • nav>ul>(li>a)*5
            <nav>
                <ul>
                    <li><a href=""></a></li>
                    <li><a href=""></a></li>
                    <li><a href=""></a></li>
                    <li><a href=""></a></li>
                    <li><a href=""></a></li>
                </ul>
            </nav>
        • Attiribute:
          • ID attribite: #
            • nav#navigation
              <nav id="navigation"></nav>
          • Class attribute: .
            • li.list
              <li class="list"></li>
          • Tag attribute: []
            • a[target=”_blank” title=”asdf”]
              <a href="" target="_blank" title="asdf"></a>
        • Value: {}
          • li>a>{table}
            <li><a href="">table</a></li>
        • Numbering: $
          • ul.li.item$*5
            <ul class="li item1"></ul>
            <ul class="li item2"></ul>
            <ul class="li item3"></ul>
            <ul class="li item4"></ul>
            <ul class="li item5"></ul>
    • script: script를 입력 후 단축키(Shift + Ctrl + B로 바로 실행 결과 확인. 실행 환경은 따로 설치해야 함.