728x90

CentOS를 비롯한 Redhat 계열에서는 Yum을 이용해 패키지를 관리합니다.
간혹 yum 으로 패키지를 설치하다 패키지 데이터베이스를 열 수 없다는 에러를 만날 수 있습니다.
영문 기준으로 rpmdb open failed 라는 메세지가 바로 그것이죠.

이런 상황을 해결하는 가장 쉬운 방법은 RPM DB 삭제입니다.
DB를 삭제한다고 뭔가 큰 일이 일어나는 것은 아닙니다. 
DB 자체에 뭔가 이슈가 생긴 경우이기 때문에 
DB 파일 삭제후 다시 생성하면 됩니다. 

rm -f /var/lib/rpm/_db*
rpm -vv --rebuilddb
728x90
728x90

한 번 설치해서 잘 돌아가는 시스템을 업그레이드 하는 것은 참 귀찮은 일입니다. 하지만 새로운 버전에서만 쓸 수 있는 기능이 생겼고 이를 사용해야 하는 경우엔 어쩔수 없이 업그레이드를 선택하게 되죠. 여기저기에서 마구 설치해서 사용하고 있는 grafana 역시 새로운 버전이 종종 등장하고 있어 가끔씩 업데이트 해줘야 새로운 기능을 활용할 수 있습니다. 

오래전에 설치해 사용하던 grafana 를 업그레이드하려다 보니 혹시나~ 하는 생각이 들어서 방법을 정리해 봅니다. 쓰시는 분이 많지 않아 업그레이드의 부담은 없었지만, grafana 공식 페이지의 문서가 보기가 좀 불편한 점들도 있어서 추후 작업을 위해 이력을 남기는 차원입니다 ㅎㅎ


설치된 grafana 버전 확인하기

꼭 필요한 과정은 아니지만 설치된 grafana 패키지의 버전을 확인해보겠습니다. 권한에 따라 sudo 명령을 곁들여 주시면 맛이 더욱 훌륭합니다. 6.6.1 버전이니 오래된 유물급까지는 아니지만 꽤 오래된 버전입니다. 제 경우 yum 으로 설치하긴 했지만, grafana 의 공식 repo 를 쓰지 않고 grafana 웹 페이지에서 rpm 을 다운로드 받아 yum 으로 localinstall 했습니다. 

$ sudo yum list grafana
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
Installed Packages
grafana.x86_64                      6.6.1-1                        installed

 

grafana.db 파일 백업하기

grafana 의 설정을 sqlite (기본 값) 로 해두었다면 grafana.db 파일을 백업해야 합니다. mysql 등의 다른 DB 를 사용했다면 해당 DB 의 데이터베이스나 테이블 내용을 백업해야 합니다. sqlite 는 파일 기반 DB 라 백업도 간편하죠. 패키지를 설치했을 경우 경로는 아래와 같으며, 파일을 그대로 다른 경로에 옮겨두면 나중에 복원시 사용할 수 있습니다. 

$ mkdir backup
$ cp /var/lib/grafana/grafana.db ./backup/

 

새로운 버전의 rpm 다운로드 받기

기억이 맞다면 repo 를 등록해서 yum 으로 패키지 설치를 하지 못했었는데... 일단 현재는 가능한 것 같습니다. repo 를 등재하여 별도 다운로드 없이 패키지를 설치하셔도 되고, 저처럼 rpm 을 받아 설치해도 무방합니다. 

# RPM 다운로드 경로 : grafana.com/grafana/download

 

Download Grafana

Overview of how to download and install different versions of Grafana on different operating systems.

grafana.com

# yum repo 등록후 설치 가이드 (CentOS 기준) : grafana.com/docs/grafana/latest/installation/rpm/

 

Install on RPM-based Linux

› Installation › Install on RPM-based Linux Install on RPM-based Linux (CentOS, Fedora, OpenSuse, Red Hat) This page explains how to install Grafana dependencies, download and install Grafana, get the service up and running on your RPM-based Linux syst

grafana.com

$ wget https://dl.grafana.com/oss/release/grafana-7.3.7-1.x86_64.rpm
--2021-01-20 16:29:54--  https://dl.grafana.com/oss/release/grafana-7.3.7-1.x86_64.rpm
Resolving dl.grafana.com (dl.grafana.com)... 151.101.198.217, 2a04:4e42:2e::729
Connecting to dl.grafana.com (dl.grafana.com)|151.101.198.217|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 53729497 (51M) [application/x-redhat-package-manager]
Saving to: ‘grafana-7.3.7-1.x86_64.rpm’

100%[============================================================================>] 53,729,497  13.5MB/s   in 5.6s

2021-01-20 16:30:00 (9.07 MB/s) - ‘grafana-7.3.7-1.x86_64.rpm’ saved [53729497/53729497]

FINISHED --2021-01-20 16:30:00--
Total wall clock time: 6.1s
Downloaded: 1 files, 51M in 5.6s (9.07 MB/s)

 

yum 으로 rpm 업그레이드 하기

이제 다운로드 받은 파일을 설치하도록 하겠습니다. `yum localinstall` 로 설치한 rpm 패키지는 `yum localupdate` 로 업데이트 할 수 있습니다. yum repo 를 사용하는 경우 `yum install` 과 `yum update` 를 설치와 업그레이드에 각각 사용하는 것과 마찬가지입니다. 

$ sudo yum localupdate grafana-7.3.7-1.x86_64.rpm
Loaded plugins: fastestmirror, langpacks
Examining grafana-7.3.7-1.x86_64.rpm: grafana-7.3.7-1.x86_64
Marking grafana-7.3.7-1.x86_64.rpm as an update to grafana-6.6.1-1.x86_64
Resolving Dependencies
--> Running transaction check
---> Package grafana.x86_64 0:6.6.1-1 will be updated
---> Package grafana.x86_64 0:7.3.7-1 will be an update
--> Finished Dependency Resolution

Dependencies Resolved

======================================================================================================================
 Package                 Arch                   Version                 Repository                               Size
======================================================================================================================
Updating:
 grafana                 x86_64                 7.3.7-1                 /grafana-7.3.7-1.x86_64                 170 M

Transaction Summary
======================================================================================================================
Upgrade  1 Package

Total size: 170 M
Is this ok [y/d/N]:y
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Updating   : grafana-7.3.7-1.x86_64                                                                             1/2
  Cleanup    : grafana-6.6.1-1.x86_64                                                                             2/2
POSTTRANS: Running script
  Verifying  : grafana-7.3.7-1.x86_64                                                                             1/2
  Verifying  : grafana-6.6.1-1.x86_64                                                                             2/2

Updated:
  grafana.x86_64 0:7.3.7-1

Complete!

 

확인!

이제 문제 없는지 확인을 해야겠죠? 웹 브라우저로 grafana 에 접근하여 좌측 하단에 있는 ? 버튼을 눌러 버전을 확인해 봅니다. 다행히도 백업한 파일을 사용할 일 없이 마무리가 잘 된 것 같습니다. 

 

728x90
728x90

혼자 사용하는 서버는 환경 설정을 자유롭게 할 수 있습니다. 자주 사용하는 경로의 지정이나 무언가를 설치했을 때 경로까지 익숙함을 바탕으로 찾아내는데 어려움이 없을 겁니다. 하지만, 서버의 운영체제 버전이 조금 다르다던가 계정 정책의 차이 등으로 패키지가 어디에 설치되었는지 헤메는 경우가 종종 생깁니다.

서버 환경으로 CentOS 를 자주 사용하다보니 패키지 설치는 거의 yum 을 사용합니다. 간혹 커스텀한 구성이 필요하여 직접 빌드하는 경우를 제외하면 관리가 편하기 때문에 yum 을 쓰는 편이죠. 오늘 아침, 자주 안들어가던 서버에서 mtr 패키지가 필요해서 yum 으로 설치했으나 실행이 되지 않는 문제가 있어서 패키지 설치 디렉토리를 찾느라 잠시 헤프닝이 있었습니다. 

// yum 은 패키지는 잘 설치해 주지만, 설치된 위치를 알려주진 않습니다
$ sudo yum install mtr
Loaded plugins: fastestmirror, security
Setting up Install Process
Loading mirror speeds from cached hostfile
 * centos-sclo-rh: mirrors.aliyun.com
 * epel: xxxx.xxxx.xxx
Resolving Dependencies
--> Running transaction check
---> Package mtr.x86_64 2:0.75-5.el6 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

======================================================================================================================
 Package                 Arch                       Version                            Repository                Size
======================================================================================================================
Installing:
 mtr                     x86_64                     2:0.75-5.el6                       base                      54 k

Transaction Summary
======================================================================================================================
Install       1 Package(s)

Total download size: 54 k
Installed size: 96 k
Is this ok [y/N]: y
Downloading Packages:
mtr-0.75-5.el6.x86_64.rpm                                                                      |  54 kB     00:00
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : 2:mtr-0.75-5.el6.x86_64                                                                            1/1
  Verifying  : 2:mtr-0.75-5.el6.x86_64                                                                            1/1

Installed:
  mtr.x86_64 2:0.75-5.el6

설치는 잘 되었으나 Shell 환경에 지정된 Path 에 잡혀있지 않은지 실행이 되지 않았습니다. 패키지가 설치된 경로를 찾아야 할 때는 rpm 을 사용하면 좋습니다. rpm 과 grep 으로 패키지가 설치되어 있는지 찾아보거나 rpm 에 옵션을 지정하여 패키지 설치 경로를 확인할 수 있습니다. 

// 설치된 패키지의 이름을 확인
$ rpm -qa | grep mtr
mtr-0.75-5.el6.x86_64

// 설치된 패키지의 경로를 확인
$ rpm -ql mtr
/usr/sbin/mtr

일반적인 설치 경로인데 왜 실행이 안되었을까요? 그건 리눅스의 환경 변수중 명령어를 실행할 수 있는 경로의 집합을 나타내는 $PATH 에 경로가 빠져 있기 때문입니다. 한 번 확인해 보고 누락된 경우 추가를 해보도록 하겠습니다. 매번 전체 경로를 넣고 실행하기는 좀 번거롭겠죠? 실제로는 profile 설정 등에서 추가해 주어야 다음번 로그인시에도 경로가 추가된다는 점 잊지 마시구요.

// 꼴랑 두개 들어가 있네요
$ echo $PATH
/bin:/usr/bin

// 기존 $PATH 값에 콜론으로 연결하여 경로를 지정합니다
// 잘 들어갔는지 절대 알려주지 않으니 echo 로 다시 확인을...
$ PATH=$PATH:/usr/sbin
$ echo $PATH
/bin:/usr/bin:/usr/sbin

 

728x90
728x90

CentOS 환경에서 NPM (node package manager) 와 node.js 를 설치하는 방법을 정리해 봅니다. 환경 셋업을 자주 하지 않다보니 필요할때마다 겪는 시행착오를 줄이기 위해서 블로그에 적어둡니다 ^^;; 주기적으로 디지털 오션을 통해서 서비스 받고 있는 뉴욕 가상머신과 싱가폴 가상머신을 깨끗하게 정리하곤 합니다. 왠지 대청소를 하는 기분이라... 이렇게 해놓고 나면 바로 밀려오는 것이 패키지 설치에 대한 귀차니즘이죠.


간단한 테스트를 할일이 있어 DNS 셋업을 하고보니 가상머신에 아무런 패키지도 설치되지 않은 클린 설치라는 것을 발견했습니다. 이미지를 구워 놓아도 되련만, 그 이미지 조차도 왠지 찜찜해서 종종 하는 작업이 왠지 모르게 아깝게 느껴집니다. 오늘 정리하는 내용은 CentOS 에서 (버전은 6.7 입니다) yum repository 를 업데이트하고 nodejs, npm 을 설치하는 방법입니다.


# sudo yum install epel-release


yum 에 설정된 기본 repository 에는 nodejs 와 npm 이 존재하지 않습니다. 대신 epel repository 에 존재하는데요, epel repository 를 사용하기 위해서 위의 명령으로 epel 을 이용할 수 있도록 해봤습니다.


# yum install nodejs npm --enablerepo=epel


yum 명령으로 nodejs 와 npm 을 한번에 설치해 보겠습니다. 새롭게 준비한 epel repository 를 이용하기 위해서는 yum 옵션으로 --enablerepo=[repository이름] 을 지정해 주셔야 합니다. 위의 커맨드처럼 입력하시면 되겠죠? 약간의 시간이면 두 패키지와 종속된 패키지들이 모두 설치가 완료됩니다. 중간중간 인터렉티브하게 물어보는 질의에는 y 를 눌러주시면 됩니다. 


# npm install -g n


간편한 nodejs 버전 관리를 위해서는 n 을 설치해 주어야겠지요? 이제 npm 이 생겼으니 npm install -g n 명령으로 n 을 설치해 줍니다. 다른 지역의 가상머신과 node.js 버전을 맞춰주기 위해서 4.4.2 버전을 설치했습니다. 


# n 4.4.2


     install : node-v4.4.2

       mkdir : /usr/local/n/versions/node/4.4.2

       fetch : https://nodejs.org/dist/v4.4.2/node-v4.4.2-linux-x64.tar.gz

######################################################################## 100.0%

   installed : v4.4.2


간단한 테스트를 해보기 위해서는 node.js 의 핵심 패키지가 필요하겠죠. express 패키지가 그나마 익숙해서 요것까지 설치를 했습니다. 


# npm install -g express


- NoPD -

728x90

+ Recent posts