반응형

OS: Ubuntu 22.04.3 (VM)
Hypervisor: Oracle VM VirtualBox

 

2024년 1월 1일 기준, 쿠버네티스(Kubernetes)를 클린 설치한 우분투(Ubuntu 22.04.3)에 설치하기 위해 먼저 구글의 퍼블릭 키를 받았는데, 이것을 사용했더니 쿠버네티스와 관련된 패키지 목록 업데이트를 진행하지 못한다.

쿠버네티스 공식 설치 가이드를 따라했는데, 쿠버네티스 관련 저장소는 퍼블릭 키가 available하지 않아서 서명되지 않았기 때문에 패키지 목록을 갱신할 수 없다고 나온다.

 

※ 에러 메시지:

skylit@skylit-ubuntu22:/etc/apt/keyrings$ sudo apt update
Hit:1 https://download.docker.com/linux/ubuntu jammy InRelease
Hit:3 http://kr.archive.ubuntu.com/ubuntu jammy InRelease                                                  
Hit:4 http://security.ubuntu.com/ubuntu jammy-security InRelease                                 
Hit:5 http://kr.archive.ubuntu.com/ubuntu jammy-updates InRelease   
Get:2 https://packages.cloud.google.com/apt kubernetes-xenial InRelease [8,993 B]
Err:2 https://packages.cloud.google.com/apt kubernetes-xenial InRelease
  The following signatures couldn't be verified because the public key is not available: NO_PUBKEY B53DC80D13EDEF05
Hit:6 http://kr.archive.ubuntu.com/ubuntu jammy-backports InRelease
Reading package lists... Done
W: GPG error: https://packages.cloud.google.com/apt kubernetes-xenial InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY B53DC80D13EDEF05
E: The repository 'https://apt.kubernetes.io kubernetes-xenial InRelease' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.

 

*해결 방법(24년 1월 1일 기준):

아래 링크에 나온 workaround를 참고하여, 퍼블릭 키 주소를  https://dl.k8s.io/apt/doc/apt-key.gpg 로 변경하여 해결했다.

https://github.com/kubernetes/k8s.io/pull/4837#issuecomment-1446426585

 

Temporarily host apt-key.gpg as original url is failing by dims · Pull Request #4837 · kubernetes/k8s.io

NOTE: Once this lands folks will be able to use https://dl.k8s.io/apt/doc/apt-key.gpg instead of the google url. A cached version of a gpg key is used from the way back machine, dated 2023-02-23 he...

github.com

 

반응형
블로그 이미지

Bryan_

,
반응형

OS: Ubuntu 16.04.3

기본 웹브라우저: 구글 크롬 (오픈소스인 크로미움 말고 구글이 제공하는 크롬)



위와 같은 조합에서 dropbox 앱을 설치하고 로그인을 하려고 했는데, 로그인이 계속 잘 되지 않았다. 정확하게 표현을 하면, 우분투에 처음 dropbox 앱을 설치하고 나면 dropbox ID로 로그인을 해 줘야 해서 패널에 실행 중인 dropbox 아이콘에 마우스 오른쪽 단추를 눌러서 "Log in" 메뉴를 선택을 했더니 크롬 브라우저가 실행되면서 그냥 빈 탭이 뜨는 것이었다.


아마 웹 브라우저에서 로그인을 먼저 하고, 다시 웹 브라우저가 dropbox native application에게 뭔가 신호를 보내서 인증 및 파일 공유를 시작하게 만드는 원리인 것 같은데, 웹 브라우저에서 애초에 로그인이 불가능하니 아무것도 할 수가 없었다. ㅠ_ㅠ

괜히 애꿎은 dropbox deb 파일만 몇 번씩 새로 다운받아 보고, Ubuntu Software에서 검색되는 앱으로 재설치도 해 보았지만 똑같은 문제가 계속 일어나서 더 진행할 수 없었다.


그러다가 이건 웹 브라우저에서 요청을 처리하지 못해서 생기는 문제일 것 같은 생각이 들었고, 혹시 구글 크롬 브라우저를 쓰는 상태에서 같은 문제를 겪는 사례가 있는지 찾아보니...



..어? 

정말 있다.


https://askubuntu.com/questions/689449/external-links-are-opened-as-blank-tabs-in-new-browser-window-in-chrome


알고 보니 구글 크롬 브라우저 바이너리에 옵션을 줘서 실행시키는 .desktop 파일에 문제가 있어서 그 파일을 고치면 된다고 한다. 


잠깐, 그러면 이거 dropbox 뿐만 아니라 다른 모든 앱에서 웹 브라우저에 요청을 날려도 모두 문제가 발생하는 중요한 결함이지 않나? Stackoverflow에 벌써 2년 전에 올라온 이슈인데 구글은 왜 이걸 업데이트하지 않는 것인지?



아무튼, 그래서 해결방법은,

[HOME 디렉토리]/.local/share/applications/google-chrome.desktop 파일을 열고,


Exec=/opt/google/chrome/chrome


위와 같이 되어 있는 라인을


Exec=/opt/google/chrome/chrome %U


이렇게 바꾸고 저장한다. (끝에 %U 추가)


그리고 나서 dropbox 앱의 마우스 오른쪽 단추 메뉴에서 다시 로그인을 선택하면,



그제서야 크롬 브라우저에서 로그인된 계정과 앱을 연동하는 작업을 진행할 수 있고, 파일 싱크도 그 뒤에 진행할 수 있다.





반응형
블로그 이미지

Bryan_

,
반응형

OpenWRT version: 14.07 (Barrier Breaker)

Tested device: Buffalo WZR-600DHP

설치에 사용한 PC: Ubuntu 12.04.1 LTS (64-bit)


이 글에서는 라우터(또는 액세스 포인트, 여기서는 라우터로 표현)에 OpenWRT를 설치하는 여러가지 방법들 중에서 TFTP를 활용한 설치 방법을 설명한다. 라우터가 TFTP 서버를 돌리고 있는 경우에 한해 TFTP를 통해서 펌웨어 파일을 라우터에 전송하고, 라우터는 이렇게 전송받은 펌웨어를 설치하는 방식으로 진행된다. 이 글에서 설치 과정에 사용한 라우터 모델은 Buffalo WZR-600DHP이다.




<설치에 필요한 준비물>


  • OpenWRT 펌웨어(.bin 확장자) 중에서 TFTP 설치용 파일 (파일명에 tftp가 들어가 있음)
    (예: openwrt-ar71xx-generic-wzr-600dhp-squashfs-tftp.bin)
  • 랜선 연결 가능한 리눅스 컴퓨터
  • 라우터(Buffalo WZR-600DHP)


크로스 컴파일 환경에서 직접 빌드해서 펌웨어를 만드는 방법은 이전 포스팅(http://skylit.tistory.com/76)을 참고할 것. 또는 이미 빌드된 펌웨어를 여기(http://wiki.openwrt.org/toh/buffalo/wzr-600dhp)에서 받을 수 있다. 하지만 자신에게 필요한 소프트우어 패키지를 추가하는 등의 customization을 하고 싶다면 크로스 컴파일 환경을 구축해야 한다.


크로스 컴파일 환경에서 빌드(make)를 끝내고 나면 아래 위치에 펌웨어 파일이 생성된다:

[OpenWRT 최상위 디렉토리]/bin/ar71xx/openwrt-ar71xx-generic-wzr-600dhp-squashfs-tftp.bin




<설치 과정>


1. 라우터 전원을 끄고(전원 케이블을 뽑아 둔다), 끈 상태로 랜선을 리눅스 컴퓨터와 라우터의 LAN 포트 4개 중 아무 곳에나 연결한다.


2. 리눅스 컴퓨터에 TFTP가 설치되어 있는지 확인하고, 설치되어 있지 않으면 설치한다.

(Ubuntu 12.04를 기준으로)

$ sudo apt-get install tftp


3. 여전히 라우터를 꺼둔 상태에서 리눅스 컴퓨터에서 커맨드 라인 쉘을 열고 아래와 같이 입력한다. 

(Ubuntu 12.04를 기준으로 작성)

  $ cd [OpenWRT 최상위 디렉토리]/bin/ar71xx

        ↑ tftp에서는 디렉토리 변경불가. bin 파일이 있는 위치에 미리 가 있어야 한다


  $ sudo ifconfig eth0 192.168.11.2

        ↑ 600DHP 라우터는 복구 모드에서 이 IP주소를 갖는 클라이언트만 허용


  $ sudo arp -s 192.168.11.1 02aabbccdd20

        ↑ 라우터가 복구 모드일 때 클라이언트에서 이 IP주소/MAC주소로 연결 가능


  $ tftp 192.168.11.1

  >



4. 위와 같이 하고 나면 TFTP가 실행이 된다. 아래와 같이 펌웨어 전송에 필요한 명령을 입력한다.

  > binary

  > verbose

  > trace

  > rexmt 1       <-- 전송 실패 시 1초마다 재시도

  > timeout 60    <-- 60초 동안 전송을 시도함

  > put openwrt-ar71xx-generic-wzr-600dhp-squashfs-tftp.bin


5. 마지막의 "put" 명령을 치고 나면 전송을 시도하는 메세지가 1초마다 1개씩 올라오는데, 이 때 얼른 라우터 전원을 켠다. 60초 내로 연결이 성공해야 하므로 미리 랜선을 연결해둔 상태에서 전원 케이블만 바로 꽂을 수 있도록 준비해 두면 좋다.

WZR-600DHP 라우터는 맨 처음 전원이 켜졌을 때 정상적으로 부팅되기 전에 복구 모드에 잠시 들르는데, 이 때 위의 tftp 설정을 통해서 펌웨어가 라우터에 전달된다.

sent DATA <block=1, 512 bytes>

received ACK <block=1>

sent DATA <block=2, 512 bytes>

received ACK <block=2>

...

Sent XXXXXXX bytes in XX seconds

>


위와 같이 데이터가 전송이 되었다는 메세지가 뜨고 전송이 끝이 나면 이제 라우터가 펌웨어를 자동으로 설치할 것이다. 이제 TFTP의 역할은 끝났으므로 quit 를 입력하고 종료한다.

빨간색 LED가 깜빡거리면서 펌웨어를 재설치하는 과정이 몇 분(체감상 5분 가량) 지속된다. 빨간색 LED가 꺼지고 전원 LED만 켜진 상태가 되면 설치가 완료된 것이다.




<설치 후 준비>


OpenWRT를 설치(flashing)하고 나면 SSH 접속이 가능하도록 비밀번호를 설정할 필요가 있다.

랜선을 뽑았다가 다시 연결하고 (제대로 IP 주소를 받기 위해), 콘솔 창에 아래와 같이 입력한다.

$ telnet 192.168.1.1


그러면 바로 OpenWRT 라우터에 연결될 것이다. 이제 비밀번호를 설정한다.

# passwd


비밀번호 설정이 완료되면 telnet을 종료하고 잠시 기다렸다가(2~3초), 이제 SSH로 로그인을 시도해 본다.

$ ssh root@192.168.1.1


비밀번호를 물어볼 때, 방금 설정한 비밀번호를 입력해서 똑같이 로그인이 된다면 정상적으로 설정된 것이다.

여기까지 하고 나면 이제 원하는 대로 OpenWRT를 활용하면 된다.




<참고자료>

* TFTP를 이용한 OpenWRT 설치 방법(공식 페이지): http://wiki.openwrt.org/doc/howto/generic.flashing.tftp

* OpenWRT - Buffalo WZR-600DHP 관련 페이지: http://wiki.openwrt.org/toh/buffalo/wzr-600dhp




반응형
블로그 이미지

Bryan_

,
반응형

OS: Ubuntu Desktop 12.04.3 LTS (64bit)


가끔 우분투 소프트웨어 센터(Ubuntu Software Center)를 거치지 않고 직접 .deb 파일을 가지고 설치할 때가 있다. 설치하고 나서 소프트웨어 센터에서 검색되는 경우에는 GUI를 통해서 쉽게 다시 삭제할 수 있지만 가끔 그렇지 않을 때(소프트웨어 센터에서 설치된 목록에 보이지 않을 때)도 있다.

이 경우 설치할 때와 마찬가지로 dpkg 명령으로 쉽게 제거가 가능하다.




(1) 패키지 설치


먼저 dpkg를 이용해서 deb 파일로부터 패키지를 설치하는 방법은 다음과 같다.

(-i 옵션은 install하겠다는 의미이다.)


$ sudo dpkg -i DEB_파일_이름



또는

$ sudo dpkg --install 패키지_이름


예를 들어, 오라클(Oracle)에서 제공하는 jdk를 직접 설치할 경우 아래와 같이 할 수 있다.


$ sudo dpkg -i jdk_1.7.045-1_amd64.deb




(2) 설치된 패키지 검색


그리고 dpkg를 이용해서 설치된 패키지를 검색하는 방법은 -l 옵션(list)으로 아래와 같이 가능하다.


$ dpkg -l 패키지_이름


또는

$ sudo dpkg --list 패키지_이름


-l 옵션만 쓰고 뒤에 아무 이름도 명시하지 않으면 설치된 모든 패키지가 화면에 출력된다. 만약 정확한 이름이 기억나지 않아서 패키지 이름으로 검색되지 않는 경우에는 아래와 같이 grep 명령을 추가해서 키워드로 검색할 수 있다. 참고로 -l과 grep 사이에 쓴 막대기는 역슬래시(\) 문자를 쉬프트(Shift) 키와 함께 누른 것이다. (리눅스 파이프라인에 쓰는 문자)


$ dpkg -l | grep "패키지_이름의_일부"




(3) 설치된 패키지 제거(삭제)


검색해서 알아낸 패키지 이름을 가지고 dpkg를 이용해서 아래와 같이 패키지를 삭제할 수 있다.


$ sudo dpkg --remove 패키지_이름


또는

$ sudo dpkg -r 패키지_이름


간혹 패키지가 완전히 삭제되지 않고 설정 파일이 남아서 dpkg -l로 계속 검색될 때가 있다. 이 때는 -r 대신 --purge 옵션으로 깨끗하게 삭제 가능하다.


$ sudo dpkg --purge 패키지_이름


또는
$ sudo dpkg -P 패키지_이름


purge 옵션을 쓰더라도 사용자가 임의로 변경하거나 추가한 파일은 삭제되지 않으므로 그 파일들은 사용자가 직접 삭제해야 한다.



반응형
블로그 이미지

Bryan_

,