Redmine 이전 작업을하다가 문제가 발생되면 당연히 해당 레드마인 서버에 접속을 할수 없게 된다. 특히나 필자처럼 직접 우분투에 설치한 경우, Add On등 추가 기능을 설치하다가 문제가 발생되면 바로 해결을 해야하지만, 바뻐서 시간이 오래 지나버리게되면 무엇을 했는지, 어느 디렉터리에 작업을 했는지 전혀 기억이 나지 않는게 문제이다. 워 어쨋거나 다음과 같은 결과를 만나게 된다. 또한 이전 작업을 하다가 문제가 발생되기도 하고, 잘못해서 패키지를 지우면서 돌이키기 어려운 상황에 놓이기도 한다.

     

      이번건의 경우 패키지를 삭제하여 발생한 문제이며, 해당 문제를 해결하기 위해서 진행한 내용을 기록하였다. 만약, 독자께서 필자처럼 실수로 apt remove redmine redmine-mysql을 입력한 경우 필자와 동일한 상황을 만나게 된다.

     

    시스템 설명

      Ubuntu 20.04, redmine 패키지 직접설치 (다음에는 bitnami인가 뭔가를 한번 써봐야겠다.)

     

     

      시간이 있다면 천천히 문제점을 찾아나가면 되겠지만 말이다. 그런경우 다시 설치하는게 유익할 수 있다. 특히 이전을 해야하는 시점이라면 더더욱 시간을 줄일 수 있을 것이다. 다만, 필자는 또하나의 실수를 저질렀다. 이전을 위해서 새로 설치한 redmine을 삭제 해버렸다 두개의 터미널 화면에서 잘못 명령을 입력한 케이스 되시겠다.

     

    문제는 이렇게 삭제되면 apt를 통해 패키지 설치시 redmine과 관련된 대부분의 패키지가 설치되지 않는다. 왜냐면 연관된 패키지들(ruby관련등)도 같이 삭제되어버리기 때문에 복구하는데 수많은 의존성 오류를 볼수 밖에 없다. 그래서 그 과정을 정리해보고자 별도의 redmine을 설치후 동일하게 오류를 발생시켜 복원하는 방법을 정리해 두고자 한다.

     

    1. 사건의 개요

    이전을 위해서 데이터베이스는 모두 백업했고, 관련 첨부파일도 백업이 완료되었다. 그리고 이전할 서버에서 폐기할 서버의 터미널인 것으로 착각하고 아래와 같이 입력하였다.

    sudo apt remove redmine redmine-mysql

     

    이후 서버에 접속해보면, 앞서 언급된 웹페이지 화면처럼 표시가 되낟. 완벽하게 지워진 것 같지는 않다. 어쨋건, 해당 명령이 실행되고 확인절차를 지나면 의존적인 소프트웨어도 같이 삭제된다. 그리고 오류가 발생되면서 진행이 되지 않는다. 다시 apt 명령으로 재설치 하려해도 다양한 의존성 오류 때문에 설치가 되지 않음을 독자분들도 확인할 수 있을 것이다.

    ubuntu@Works:~$ sudo apt install redmine redmine-mysql
    패키지 목록을 읽는 중입니다... 완료
    의존성 트리를 만드는 중입니다
    상태 정보를 읽는 중입니다... 완료
    패키지 redmine는 이미 최신 버전입니다 (4.0.6-2).
    패키지 redmine-mysql는 이미 최신 버전입니다 (4.0.6-2).
    0개 업그레이드, 0개 새로 설치, 0개 제거 및 10개 업그레이드 안 함.
    1개를 완전히 설치하지 못했거나 지움.
    이 작업 후 0 바이트의 디스크 공간을 더 사용하게 됩니다.
    계속 하시겠습니까? [Y/n]
    redmine (4.0.6-2) 설정하는 중입니다 ...
    Determining localhost credentials from /etc/mysql/debian.cnf: succeeded.
    Don't run Bundler as root. Bundler can ask for sudo if it is needed, and installing your bundle as
    root will break this application for all non-root users on this machine.
    Bundler::GemNotFound: Could not find thread_safe-0.3.6.gem for installation
      /var/lib/gems/2.7.0/gems/bundler-2.3.19/lib/bundler/source/rubygems.rb:159:in `install'
    /var/lib/gems/2.7.0/gems/bundler-2.3.19/lib/bundler/installer/gem_installer.rb:54:in `install'
     
    … (생략) …
     
    An error occurred while installing redcarpet (3.5.0), and Bundler cannot continue.
    In Gemfile:
      redcarpet
    dpkg: error processing package redmine (--configure):
     installed redmine package post-installation script 서브프로세스가 오류 종료 상태 1를 반환했습니다. 처리하는데 오류가 발생했습니다:
     redmine
    E: Sub-process /usr/bin/dpkg returned an error code (1)
    ubuntu@Works:~$

     

     

    2. 복구시작

    기능복구를 위해서 수시로 apt-get upgrade 명령을 이용하여 적색 글씨에서 표시되는 패키지를 설치하고, 추가적인 에러메시지를 확인후 복구를 진행한다

     

    1) 복구를 시작하기 위해서 업데이트와 업그레이드

    업데이트 동안 오류가 발생되더라도 우선 무시하고 진행하자.

    sudo apt update    (오류 확인됨)
    sudo apt upgrade   (오류 확인됨)

     

    2) thread_safe-0.3.6 설치

    ubuntu@Works:~$ sudo gem install thread_safe
    Fetching thread_safe-0.3.6.gem
    Successfully installed thread_safe-0.3.6
    Parsing documentation for thread_safe-0.3.6
    Installing ri documentation for thread_safe-0.3.6
    Done installing documentation for thread_safe after 0 seconds
    1 gem installed

     

    3) tzinfo, mimemagic, rouge, redcarpet 동시 설치

    ubuntu@Works:~$ sudo gem install tzinfo mimemagic rouge redcarpet
    Fetching tzinfo-2.0.6.gem
    Successfully installed tzinfo-2.0.6
    Parsing documentation for tzinfo-2.0.6
    Installing ri documentation for tzinfo-2.0.6
    Done installing documentation for tzinfo after 2 seconds
    Building native extensions. This could take a while...
    Successfully installed mimemagic-0.4.3
    Parsing documentation for mimemagic-0.4.3
    Done installing documentation for mimemagic after 0 seconds
    Fetching rouge-4.1.0.gem
    Successfully installed rouge-4.1.0
    Parsing documentation for rouge-4.1.0
    Installing ri documentation for rouge-4.1.0
    Done installing documentation for rouge after 4 seconds
    Fetching redcarpet-3.6.0.gem
    Building native extensions. This could take a while...
    Successfully installed redcarpet-3.6.0
    Parsing documentation for redcarpet-3.6.0
    Installing ri documentation for redcarpet-3.6.0
    Done installing documentation for redcarpet after 0 seconds
    4 gems installed

     

    4) nio4r 설치

    ubuntu@Works:~$ sudo gem install nio4r
    Building native extensions. This could take a while...
    Successfully installed nio4r-2.5.8
    Parsing documentation for nio4r-2.5.8
    Installing ri documentation for nio4r-2.5.8
    Done installing documentation for nio4r after 0 seconds
    1 gem installed

     

    5) rbenv

    ubuntu@Works:~$ sudo gem install rbenv
    Fetching rbenv-9001.gem
    Successfully installed rbenv-9001
    Parsing documentation for rbenv-9001
    Installing ri documentation for rbenv-9001
    Done installing documentation for rbenv after 0 seconds
    1 gem installed

     

    6) websocket-driver

    ubuntu@Works:~$ sudo gem install websocket-driver
    Building native extensions. This could take a while...
    Successfully installed websocket-driver-0.7.5
    Parsing documentation for websocket-driver-0.7.5
    Installing ri documentation for websocket-driver-0.7.5
    Done installing documentation for websocket-driver after 0 seconds
    1 gem installed

     

    7) 업데이트 및 업그레이드

    sudo apt update    (정상)
        sudo apt upgrade   (추가적업 발생)

     

    8) sprockets (특정버전 지정)

    ubuntu@Works:~$ sudo gem install sprockets -v '3.7.2'
    Fetching sprockets-3.7.2.gem
    Successfully installed sprockets-3.7.2
    Parsing documentation for sprockets-3.7.2
    Installing ri documentation for sprockets-3.7.2
    Done installing documentation for sprockets after 0 seconds
    1 gem installed

     

    9) mysql2 (특정버전 지정)

    ubuntu@Works:~$ sudo gem install mysql2 -v '0.5.2'
    Fetching mysql2-0.5.2.gem
    Building native extensions. This could take a while...
    Successfully installed mysql2-0.5.2
    Parsing documentation for mysql2-0.5.2
    Installing ri documentation for mysql2-0.5.2
    Done installing documentation for mysql2 after 0 seconds
    1 gem installed
    ubuntu@Works:~$

     

    10) mimemagic (특정버전, 특정 저장소지정)

    ubuntu@Works:~$ sudo gem install mimemagic -v '0.3.10' --source 'https://rubygems.org'
    Fetching mimemagic-0.3.10.gem
    Building native extensions. This could take a while...
    Successfully installed mimemagic-0.3.10
    Parsing documentation for mimemagic-0.3.10
    Installing ri documentation for mimemagic-0.3.10
    Done installing documentation for mimemagic after 0 seconds
    1 gem installed

     

    11) marcel (특정버전)

    ubuntu@Works:~$ sudo gem install marcel -v '0.3.2'
    Fetching marcel-0.3.2.gem
    Successfully installed marcel-0.3.2
    Parsing documentation for marcel-0.3.2
    Installing ri documentation for marcel-0.3.2
    Done installing documentation for marcel after 0 seconds
    1 gem installed

     

    12) arel 설치

    ubuntu@Works:~$ sudo gem install arel
    Fetching arel-9.0.0.gem
    Successfully installed arel-9.0.0
    Parsing documentation for arel-9.0.0
    Installing ri documentation for arel-9.0.0
    Done installing documentation for arel after 0 seconds
    1 gem installed

     

    13) mail 설치

    ubuntu@Works:~$ sudo gem install mail
    Fetching mail-2.8.1.gem
    Fetching net-protocol-0.2.1.gem
    Fetching net-imap-0.3.4.gem
    Successfully installed net-protocol-0.2.1
    Successfully installed net-imap-0.3.4
    Successfully installed mail-2.8.1
    Parsing documentation for net-protocol-0.2.1
    Installing ri documentation for net-protocol-0.2.1
    Parsing documentation for net-imap-0.3.4
    Installing ri documentation for net-imap-0.3.4
    Parsing documentation for mail-2.8.1
    Installing ri documentation for mail-2.8.1
    Done installing documentation for net-protocol, net-imap, mail after 18 seconds
    3 gems installed

     

    14) rmagick (특정버전)

    ubuntu@Works:~$ sudo gem install rmagick -v '2.16.0'
    Building native extensions. This could take a while...
    Successfully installed rmagick-2.16.0
    Parsing documentation for rmagick-2.16.0
    Installing ri documentation for rmagick-2.16.0
    Done installing documentation for rmagick after 0 seconds
    1 gem installed

     

    15) tzinfo (특정버전)

    ubuntu@Works:~$ sudo gem install tzinfo -v '1.2.6'
    Fetching tzinfo-1.2.6.gem
    Successfully installed tzinfo-1.2.6
    Parsing documentation for tzinfo-1.2.6
    Installing ri documentation for tzinfo-1.2.6
    Done installing documentation for tzinfo after 1 seconds
    1 gem installed

     

    16) rails-dom-testing (특정버전)

    ubuntu@Works:~$ sudo gem install rails-dom-testing -v '2.0.3'
    Fetching rails-dom-testing-2.0.3.gem
    Successfully installed rails-dom-testing-2.0.3
    Parsing documentation for rails-dom-testing-2.0.3
    Installing ri documentation for rails-dom-testing-2.0.3
    Done installing documentation for rails-dom-testing after 0 seconds
    1 gem installed

     

    17) roadie-rails (특정버전)

    ubuntu@Works:~$ sudo gem install roadie-rails -v '1.3.0'
    Fetching roadie-3.5.1.gem
    Successfully installed roadie-3.5.1
    Fetching roadie-rails-1.3.0.gem
    Successfully installed roadie-rails-1.3.0
    Parsing documentation for roadie-3.5.1
    Installing ri documentation for roadie-3.5.1
    Parsing documentation for roadie-rails-1.3.0
    Installing ri documentation for roadie-rails-1.3.0
    Done installing documentation for roadie, roadie-rails after 7 seconds
    2 gems installed

     

    18) actionpack-xml_parser (특정버전)

    ubuntu@Works:~$ sudo gem install actionpack-xml_parser -v '2.0.1'
    Fetching actionpack-xml_parser-2.0.1.gem
    Successfully installed actionpack-xml_parser-2.0.1
    Parsing documentation for actionpack-xml_parser-2.0.1
    Installing ri documentation for actionpack-xml_parser-2.0.1
    Done installing documentation for actionpack-xml_parser after 0 seconds
    1 gem installed

     

    19) actionpack-xml_parser (특정버전)

    ubuntu@Works:~$ sudo gem install actionpack-xml_parser -v '2.0.1'
    Successfully installed actionpack-xml_parser-2.0.1
    Parsing documentation for actionpack-xml_parser-2.0.1
    Done installing documentation for actionpack-xml_parser after 0 seconds
    1 gem installed

     

    20) mysql2 (특정버전)

    ubuntu@Works:~$ sudo gem install mysql2 -v '0.5.2'
    Building native extensions. This could take a while...
    Successfully installed mysql2-0.5.2
    Parsing documentation for mysql2-0.5.2
    Done installing documentation for mysql2 after 0 seconds
    1 gem installed

     

    21) rmagick

    ubuntu@Works:~$ sudo gem install rmagick
    Fetching rmagick-5.1.0.gem
    Building native extensions. This could take a while...
     
    Successfully installed rmagick-5.1.0
    Parsing documentation for rmagick-5.1.0
    Installing ri documentation for rmagick-5.1.0
    Done installing documentation for rmagick after 0 seconds
    1 gem installed

     

    웬만하면 여기서 해결이 될거라 생각되는데, 만약 db까지 지운상테라면 추가적인 오류가 발생될 수 있다.

     

     

     

    3. 추가적인 오류 처리

      우선 확인되는 내용은 아래와 같다. 기존 redmine이 설치되면서 생성한 table이 없어서 문제가 발생된다. 필자는 기존 레드마인 데이터를 기록하기 위해서 테이블을 삭제하였다. 그 결과 오류가 발생하게 되었다.

    1) 업그레이드 진행

      오류메시지가 확인된다. 뭔 패키지 하나 잘못지웠다고 이 고생을.. 오류내용은 데이터베이스가 없어 redmine 설치중 문제가 발생했음을 확인할 수 있다. 

    ubuntu@Works:~$ sudo apt upgrade
    … (생략)…
    redmine (4.0.6-2) 설정하는 중입니다 ...
    Determining localhost credentials from /etc/mysql/debian.cnf: succeeded.
    Don't run Bundler as root. Bundler can ask for sudo if it is needed, and installing your bundle as
    root will break this application for all non-root users on this machine.
    dbconfig-common: writing config to /etc/dbconfig-common/redmine/instances/default.conf
    /usr/sbin/dbconfig-generate-include: 246: cannot create /tmp/dbconfig-generate-include.vLacl3: Permission denied
    dbconfig-common: flushing administrative password
    /usr/share/rubygems-integration/all/gems/activerecord-5.2.3/lib/active_record/associations.rb:1855: warning: Using the last argument as keyword parameters is deprecated; maybe ** should be added to the call
     
    ActiveRecord::NoDatabaseError: Unknown database 'redmine_default'
    … (생략) …

     

     2) 데이터베이스 확인

      데이터 베이스에 들어가서 테이블을 확인하고 없으면 아래와 같이 생성한다. 

    ubuntu@Works:~$ mysql -uroot -phelloworld
    mysql: [Warning] Using a password on the command line interface can be insecure.
    …(생략)…
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
     
    mysql> create database redmine_default;;
    Query OK, 1 row affected (0.01 sec)
     
    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mysql              |
    | performance_schema |
    | redmine_default    |
    | sys                |
    +--------------------+
    5 rows in set (0.00 sec)
     
    mysql> quit

     

     3) 업데이트 다시 시도

      뭔가 설치가 진행됨을 알수 있다. 

    ubuntu@Works:~$ sudo apt upgrade
    … (생략)…
    redmine (4.0.6-2) 설정하는 중입니다 ...
    Determining localhost credentials from /etc/mysql/debian.cnf: succeeded.
    Don't run Bundler as root. Bundler can ask for sudo if it is needed, and installing your bundle as
    root will break this application for all non-root users on this machine.
     
    … (생략)…
    /usr/share/rubygems-integration/all/gems/activerecord-5.2.3/lib/active_record/statement_cache.rb:90: warning: Capturing the given block using Proc.new is deprecated; use `&block` instead
    /usr/share/rubygems-integration/all/gems/activerecord-5.2.3/lib/active_record/statement_cache.rb:90: warning: Capturing the given block using Proc.new is deprecated; use `&block` instead
    /usr/share/rubygems-integration/all/gems/activerecord-5.2.3/lib/active_record/statement_cache.rb:90: warning: Capturing the given block using Proc.new is deprecated; use `&block` instead
    Default configuration data loaded.
    ubuntu@Works:~$

     

    4. 레드마인 확인

      웹브라우저에서 레드마인에 접속한다. 아래와 같이 정상 복구되었음을 알 수 있다. 

    여러 작업을 하다보면 실수를 할 수 밖에 없다. 특히 이전작업에는 더욱 그럼 위험요소가 있다. 그런경우 미리미리 데이터베이스등 주요 자료를 백업후 진행해야 한다.

     

     

    그리고 기본 패키지 설치하고 Addon 설치하면 되는게 있고 안되는게 있고 그런데, 욕심내서 쓰기보다는 현실에 적당히 타협하면서.. ㅜㅠ 사용하도록 하자. 개인 업무 관리용으로 쓰던거라 지워도 무관하지만 혹시 이후에 동일한 일을 당할 수도 있을것 같아 정리해둔다. 

     

    만약, 독자께서 다른 ubuntu 버전을 사용한다면, 오류메시지에 맞게 잘 적용하여 사용하시고, 패키지 설치해보다보면 특정 버전의 이슈로 다른버전을 설치해야 되는경우와, 특정버전을 설치해야 적용되는 경우가 있으므로 가능하면 gem 을통해 설치할 때 오류 발생메시지와 동일한 버전을 설치해 주도록 하자.

     

     그럼 행운을 빈다.

    반응형
    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기