본문 바로가기
프로그램 개발(분석, 설계, 코딩, 배포)/100. 기타

solaris11.4에서 다운로드한 redmine을 설치 하고 아파치와 연결하기

by 3604 2026. 1. 22.
728x90

 

 
 
 
 
 

Solaris 11.4 환경에서 Redmine을 설치하고 Apache(HTTPD)와 연결하는 과정은 의존성 패키지 설치, 데이터베이스 설정, 그리고 Ruby on Rails 구동을 위한 Passenger(mod_passenger) 설정으로 나뉩니다.

Solaris의 특성상 pkg 관리자를 최대한 활용하는 것이 안정적입니다.


1. 필수 패키지 설치

먼저 Redmine 구동에 필요한 기본 스택을 설치합니다.

Bash
# Apache, Ruby, Database(MySQL/MariaDB), GCC 등 설치
sudo pkg install apache-24 ruby-32 mysql-80 gcc make pkg-config

2. Redmine 다운로드 및 데이터베이스 설정

Redmine 소스를 원하는 디렉토리(예: /var/redmine)에 배치합니다.

  1. DB 생성:
  2. SQL
    CREATE DATABASE redmine CHARACTER SET utf8mb4;
    CREATE USER 'redmine'@'localhost' IDENTIFIED BY 'password';
    GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'localhost';
    
  3. 설정 파일 복사: config/database.yml.example을 database.yml로 복사하고 위에서 생성한 DB 정보를 입력합니다.

3. Ruby 의존성 설치 (Bundler)

Redmine 디렉토리 내에서 필요한 Gem들을 설치합니다.

Bash
gem install bundler
bundle install --without development test

참고: Solaris에서 컴파일 오류가 발생할 경우 PATH에 /usr/gcc/bin이 포함되어 있는지 확인하세요.

4. Apache와 Passenger 연결

가장 권장되는 방식은 Phusion Passenger 모듈을 사용하는 것입니다.

  1. Passenger 설치:설치 스크립트가 안내하는 대로 httpd.conf에 추가할 설정 로드 구문을 복사해둡니다.
  2. Bash
    gem install passenger
    passenger-install-apache2-module
    
  3. Apache 가상 호스트(VirtualHost) 설정: /etc/apache2/2.4/conf.d/redmine.conf 파일을 생성하여 아래 내용을 작성합니다.
Apache
# Passenger 모듈 로드 (설치 결과에 따라 경로가 다를 수 있음)
LoadModule passenger_module /usr/ruby/3.2/lib/ruby/gems/.../mod_passenger.so
PassengerRoot /usr/ruby/3.2/lib/ruby/gems/.../passenger
PassengerDefaultRuby /usr/ruby/3.2/bin/ruby

<VirtualHost *:80>
    ServerName redmine.example.com
    DocumentRoot /var/redmine/public
    
    <Directory /var/redmine/public>
        AllowOverride all
        Options -MultiViews
        Require all granted
    </Directory>
</VirtualHost>

5. 서비스 실행 및 권한 설정

Solaris의 보안 및 권한 체계를 적용합니다.

  1. 권한 변경: Apache 사용자(webservices)가 Redmine 파일을 읽고 쓸 수 있어야 합니다.
  2. Bash
    chown -R webservices:webservices /var/redmine
    
  3. 서비스 재시작:
  4. Bash
    svcadm restart apache24
    

💡 주의사항

  • Solaris IPS: Solaris 11.4는 자체적인 패키지 버전을 유지하므로, ruby -v를 통해 버전을 확인하고 그에 맞는 Gem 환경을 구축해야 합니다.
  • Gem 컴파일: nokogiri 같은 라이브러리 설치 시 시스템 라이브러리 경로 문제로 실패할 수 있습니다. 이 경우 pkg install libxml2 libxslt를 미리 수행하세요.

설치 과정 중 특정 Gem에서 컴파일 에러가 발생하나요? 에러 메시지를 알려주시면 Solaris 환경에 맞는 해결 방법을 찾아드리겠습니다.

 

solaris11.4에서 다운로드한 redmine를 db와 apache와 연결하여 사용하기

 
 
 
 
 

Solaris 11.4 환경에서 Redmine을 설치하고 데이터베이스(MySQL/MariaDB) 및 Apache와 연동하는 과정은 크게 환경 준비, DB 구성, Redmine 설정, Apache 연동(Passenger) 단계로 진행됩니다.

Solaris의 서비스 관리 체계인 **SMF(Service Management Facility)**를 고려한 설치 가이드를 정리해 드립니다.


1. 필수 시스템 패키지 설치

Solaris 11.4의 pkg 명령어를 사용하여 필요한 런타임과 컴파일 도구를 설치합니다.

Bash
# Ruby, Apache, MySQL 및 빌드 도구 설치
sudo pkg install ruby-32 apache-24 mysql-80 gcc make pkg-config libxml2 libxslt

2. 데이터베이스(MySQL) 생성 및 설정

Redmine이 사용할 데이터베이스와 계정을 생성합니다.

  1. MySQL 서비스 활성화:
  2. Bash
    svcadm enable mysql:default
    
  3. DB 접속 및 생성:
  4. SQL
    CREATE DATABASE redmine CHARACTER SET utf8mb4;
    CREATE USER 'redmine'@'localhost' IDENTIFIED BY 'password123';
    GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'localhost';
    EXIT;
    

3. Redmine 설정 및 의존성 해결

다운로드한 Redmine 디렉토리(예: /var/redmine)로 이동하여 설정을 진행합니다.

  1. DB 연결 설정: config/database.yml.example을 config/database.yml로 복사하고, production 섹션에 위에서 생성한 DB 정보를 입력합니다.
  2. Gem 설치: Solaris 환경에서는 라이브러리 경로를 명시해주는 것이 안전합니다.
  3. Bash
    gem install bundler
    bundle config set --local without 'development test'
    bundle install
    
  4. 비밀키 생성 및 DB 마이그레이션:
  5. Bash
    bundle exec rake generate_secret_token
    RAILS_ENV=production bundle exec rake db:migrate
    

4. Apache와 Passenger 연결 (핵심)

Redmine(Rails)을 Apache에서 구동하기 위해 mod_passenger를 사용합니다.

  1. Passenger 설치 및 모듈 빌드:설치 마법사가 출력하는 LoadModule 설정값들을 따로 메모해 두세요.
  2. Bash
    gem install passenger
    passenger-install-apache2-module
    
  3. Apache 설정 파일 생성: /etc/apache2/2.4/conf.d/redmine.conf 파일을 생성하여 다음과 같이 작성합니다.
Apache
# Passenger가 알려준 경로를 입력 (예시)
LoadModule passenger_module /usr/ruby/3.2/lib/ruby/gems/.../mod_passenger.so
PassengerRoot /usr/ruby/3.2/lib/ruby/gems/.../passenger
PassengerDefaultRuby /usr/ruby/3.2/bin/ruby

<VirtualHost *:80>
    ServerName redmine.your-domain.com
    # 반드시 Redmine 경로의 'public' 디렉토리를 지정해야 합니다.
    DocumentRoot /var/redmine/public
    
    <Directory /var/redmine/public>
        AllowOverride all
        Options -MultiViews
        Require all granted
    </Directory>
</VirtualHost>

5. 권한 설정 및 서비스 시작

Solaris의 Apache 실행 사용자인 webservices에게 권한을 부여해야 정상 작동합니다.

  1. 파일 권한 변경:
  2. Bash
    chown -R webservices:webservices /var/redmine
    chmod -R 755 /var/redmine/files /var/redmine/log /var/redmine/tmp /var/redmine/public/plugin_assets
    
  3. Apache 서비스 재시작:
  4. Bash
    svcadm restart apache24
    

💡 Solaris 설치 팁

  • 컴파일 에러 발생 시: Solaris의 gcc 경로가 인식되지 않는다면 export PATH=/usr/gcc/bin:$PATH를 실행 후 다시 시도하세요.
  • 방화벽 설정: 외부에서 접속이 안 된다면 ipf 또는 ipfilter 설정을 확인해야 합니다.
  • 로그 확인: 문제가 발생하면 /var/apache2/2.4/logs/error_log와 /var/redmine/log/production.log를 가장 먼저 확인하세요.

혹시 bundle install 과정에서 특정 라이브러리(예: mysql2 또는 nokogiri) 설치 중 에러가 발생하나요? 그렇다면 발생한 에러 메시지를 공유해 주세요. 정확한 해결 방법을 안내해 드리겠습니다.

 

"config/database.yml로 복사하고, production 섹션에 위에서 생성한 DB 정보를 입력" 방법은? mysql 5.7일 경우

 
 
 
 
 

Solaris 11.4 환경에서 MySQL 5.7을 사용하는 경우, database.yml 파일 설정 시 소켓(Socket) 경로 인코딩 설정이 중요합니다. Solaris에서 MySQL 5.7의 기본 소켓 경로는 리눅스와 다를 수 있으므로 이를 정확히 지정해야 합니다.

1. 설정 파일 복사

먼저 샘플 파일을 복사하여 설정 파일을 생성합니다.

Bash
cd /var/redmine/config
cp database.yml.example database.yml

2. database.yml 수정 (MySQL 5.7 기준)

텍스트 에디터(vi, nano 등)로 database.yml을 열고 production 섹션을 다음과 같이 수정합니다.

YAML
production:
  adapter: mysql2
  database: redmine
  host: localhost
  username: redmine
  password: "your_password"   # 실제 생성한 비밀번호
  encoding: utf8mb4           # MySQL 5.7에서 이모지 등을 지원하기 위한 설정
  # Solaris 11.4 MySQL 5.7 기본 소켓 경로 예시
  socket: /tmp/mysql.sock     

[설정 시 주의사항]

  • adapter: 반드시 mysql2를 사용해야 합니다. (Ruby on Rails의 표준)
  • encoding: MySQL 5.7 이상이라면 utf8 대신 utf8mb4를 사용하는 것이 좋습니다.
  • socket: Solaris에서 MySQL 연결 시 localhost를 사용하면 유닉스 소켓을 찾습니다. 만약 소켓 위치가 다르다면 아래 명령어로 실제 경로를 확인하세요.
  • Bash
    mysqladmin -u root -p variables | grep socket
    

3. DB 연결을 위한 Gem 설치

MySQL 5.7과 연결하기 위해 mysql2 라이브러리가 필요합니다. Solaris에서는 컴파일 시 MySQL 클라이언트 라이브러리 경로를 지정해줘야 할 때가 있습니다.

Bash
# MySQL 클라이언트 라이브러리가 설치된 경로 확인 후 설치
bundle config set build.mysql2 --with-mysql-config=/usr/mysql/5.7/bin/mysql_config
bundle install --without development test

4. 데이터베이스 초기화

설정이 완료되었다면 Redmine 테이블을 생성하고 기본 데이터를 입력합니다.

Bash
# 1. 세션 암호화 키 생성
bundle exec rake generate_secret_token

# 2. 테이블 생성 (production 환경)
RAILS_ENV=production bundle exec rake db:migrate

# 3. 기본 데이터(언어 등) 로드
RAILS_ENV=production bundle exec rake redmine:load_default_data

언어 선택 메시지가 나오면 ko를 입력하세요.


💡 연결 확인 팁

만약 Apache 연동 전 DB 연결이 잘 되는지 확인하고 싶다면, Redmine 디렉토리에서 아래 명령어를 실행해 보세요.

Bash
RAILS_ENV=production bundle exec ruby bin/rails console

에러 없이 콘솔 창(irb)이 뜬다면 DB 연결 설정이 완벽하게 된 것입니다.

이제 Apache 가상 호스트 설정 단계로 넘어가시겠어요? 아니면 DB 연결 과정에서 발생한 에러가 있나요?

 

"bundle config set build.mysql2 --with-mysql-config=/usr/mysql/5.7/bin/mysql_config" 어느 경로에서 어떻게 실행하나?

 
 
 
 
 

명령어 실행 경로와 방법은 매우 중요합니다. Solaris 11.4에서 mysql2 Gem을 올바르게 설치하기 위한 가이드를 드립니다.

1. 실행 경로

이 명령어는 반드시 Redmine 소스 코드가 위치한 루트 디렉토리에서 실행해야 합니다.

  • 예: /var/redmine 또는 /opt/redmine 

이유는 --local 옵션을 사용하거나 생략하더라도, 해당 프로젝트의 .bundle/config 파일에 설정이 저장되어야 이후 bundle install을 실행할 때 자동으로 이 설정을 참조하여 MySQL 라이브러리를 찾기 때문입니다.

2. 실행 방법 (단계별)

  1. Redmine 디렉토리로 이동:
  2. Bash
    cd /var/redmine  # 본인의 설치 경로로 이동
    
  3. 명령어 실행 (한 줄로 입력): Solaris 11.4의 MySQL 5.7 기본 경로를 기준으로 실행합니다.
  4. Bash
    bundle config set --local build.mysql2 --with-mysql-config=/usr/mysql/5.7/bin/mysql_config
    
  5. 설정 확인: 정상적으로 입력되었는지 확인하려면 다음 명령어를 입력하세요.결과에 --with-mysql-config=/usr/mysql/5.7/bin/mysql_config가 출력되어야 합니다.
  6. Bash
    bundle config get build.mysql2
    

💡 만약 경로가 다르다면?

Solaris 버전에 따라 MySQL 설치 경로가 다를 수 있습니다. 만약 위 명령어가 실패한다면 먼저 mysql_config 파일의 실제 위치를 찾아보세요.

Bash
find /usr/mysql -name mysql_config

찾은 경로가 /usr/mysql/5.7/bin/mysql_config가 아니라면, 그 경로를 명령어에 대신 넣으시면 됩니다.

4. 다음 단계

설정을 마쳤다면 이제 실제 설치를 진행합니다.

Bash
bundle install --without development test

이 과정에서 "Failed to build gem native extension" 같은 에러가 발생하나요? 만약 그렇다면 Solaris에 gcc나 make 패키지가 누락되었을 가능성이 큽니다. 에러 메시지를 보여주시면 바로 진단해 드릴게요.

 

redmine에서 bundle 명령어 실행하는 방법

 
 
 
 
 

Solaris 11.4 환경의 Redmine 디렉토리에서 bundle 명령어를 실행할 때, 권한 문제 환경 변수(Path) 설정이 가장 중요합니다. 시스템 기본 Ruby를 사용하는지, 별도로 설치한 버전을 사용하는지에 따라 실행 방식이 약간 다를 수 있습니다.


1. 명령어 실행 기본 원칙

모든 bundle 명령어는 반드시 Redmine의 루트 디렉토리(예: /var/redmine)에서 실행해야 합니다. 해당 디렉토리에 있는 Gemfile을 읽어서 실행하기 때문입니다.

2. Solaris에서 실행하는 방법

방법 A: 일반적인 실행 (추천)

보통 Gem 설치 시 시스템 디렉토리에 접근해야 하므로 sudo를 사용하거나, root 계정으로 전환 후 실행합니다.

Bash
cd /var/redmine

# 1. 의존성 패키지 설치 (개발/테스트용 제외)
sudo bundle install --without development test

# 2. 데이터베이스 테이블 생성
sudo RAILS_ENV=production bundle exec rake db:migrate

# 3. 기본 데이터 로드 (한국어 선택 가능)
sudo RAILS_ENV=production bundle exec rake redmine:load_default_data

방법 B: 실행 파일 경로를 찾지 못할 경우

만약 -bash: bundle: command not found 에러가 발생한다면, Solaris의 Ruby bin 경로를 직접 지정하거나 PATH에 추가해야 합니다.

Bash
# Ruby 3.2를 사용하는 경우의 예시 경로
/usr/ruby/3.2/bin/bundle install --without development test

3. 주요 bundle 명령어 요약 테이블

명령어 용도
bundle install Gemfile에 정의된 모든 라이브러리 설치
bundle update 설치된 라이브러리들을 최신 버전으로 업데이트
bundle exec ... 현재 프로젝트의 라이브러리 환경 내에서 특정 명령(rake 등) 실행
bundle config 프로젝트별 빌드 설정(예: MySQL 경로) 확인 및 변경

4. Solaris 11.4 사용 시 팁 (권한 관련)

bundle install을 마친 후에는 반드시 Redmine 디렉토리의 소유권을 Apache 사용자(webservices)로 다시 변경해줘야 웹사이트가 정상 작동합니다.

Bash
# bundle 작업이 끝난 후 실행
sudo chown -R webservices:webservices /var/redmine

다음 단계에서 막히는 부분이 있으신가요?

bundle install 실행 시 "Could not find a JavaScript runtime" 이라는 에러가 뜬다면, Solaris에 Node.js를 설치하거나 Gemfile에 therubyracer를 추가해야 할 수도 있습니다. 에러가 발생하면 메시지를 알려주세요!

 

"bundle command not found" 왜?

 
 
 
 
 

Solaris 11.4에서 bundle command not found 에러가 발생하는 이유는 크게 두 가지입니다. Ruby의 패키지 관리자인 Bundler가 설치되지 않았거나, 설치되었더라도 실행 파일 경로(PATH)가 등록되지 않았기 때문입니다.

Solaris의 기본 Ruby 경로 특성을 반영한 해결 순서는 다음과 같습니다.


1. Bundler 자체 설치 여부 확인

Solaris 11.4에 Ruby를 설치했더라도 bundler는 별도로 설치해야 하는 경우가 많습니다. 아래 명령어를 입력해 보세요.

Bash
gem install bundler
  • 만약 이 명령어도 안 된다면 gem 자체가 경로에 없는 것이니 2번 단계로 바로 이동하세요.

2. PATH 환경 변수 문제 (가장 흔한 원인)

Solaris에서 Ruby 관련 실행 파일은 보통 /usr/ruby/버전/bin 또는 /usr/bin에 위치합니다. 시스템이 이 위치를 모르고 있을 가능성이 높습니다.

현재 Ruby 경로 확인

Bash
which ruby
# 결과 예: /usr/bin/ruby 또는 /usr/ruby/3.2/bin/ruby

PATH에 경로 임시 추가 (현재 터미널 세션용)

Ruby 3.2 버전 기준으로 아래 명령어를 입력하여 경로를 수동으로 연결합니다.

Bash
export PATH=$PATH:/usr/ruby/3.2/bin:/usr/gcc/bin

(위 명령어를 입력한 직후에 다시 bundle을 실행해 보세요.)


3. 영구적인 해결 방법

매번 경로를 입력하기 번거로우므로, 사용자의 프로필 파일(.bashrc 또는 .profile)에 경로를 등록해야 합니다.

  1. 파일 열기: vi ~/.bashrc
  2. 맨 밑에 다음 내용 추가:
  3. Bash
    export PATH=/usr/ruby/3.2/bin:/usr/gcc/bin:$PATH
    
  4. 설정 적용: source ~/.bashrc

4. 경로를 지정하여 직접 실행 (가장 확실한 방법)

경로 설정이 꼬여서 복잡하다면, 아예 bundle의 풀 경로를 써서 명령을 내릴 수도 있습니다.

Bash
# Redmine 디렉토리에서 실행 시
/usr/ruby/3.2/bin/bundle install --without development test

💡 Solaris 11.4 체크포인트

Solaris는 보안이 엄격하여 sudo를 사용할 때 일반 사용자의 PATH가 전달되지 않을 수 있습니다. sudo로 실행할 때 안 된다면 아래와 같이 실행하세요.

Bash
sudo /usr/ruby/3.2/bin/bundle install --without development test

이제 bundle 명령어가 먹히나요? 만약 여전히 안 된다면 which ruby와 pkg list | grep ruby의 결과를 알려주세요. 설치된 정확한 경로를 찾아드리겠습니다.

 

"'require' cannot load such file" 오류 해결 방법은?

 
 
 
 
 

Solaris 11.4 환경에서 Redmine 설치 중 require': cannot load such file -- [파일명] 오류가 발생하는 이유는 크게 두 가지입니다. 하나는 필요한 라이브러리(Gem)가 설치되지 않았거나, 다른 하나는 설치는 되었으나 Ruby가 그 위치를 찾지 못하는 환경 설정 문제입니다.

가장 자주 발생하는 사례별 해결 방법을 안내해 드립니다.


1. bundle install을 생략한 경우 (가장 흔함)

Redmine은 수많은 Ruby 라이브러리(Gems)에 의존합니다. bundle install을 성공적으로 마치지 않고 실행(migration 등)하면 이 에러가 발생합니다.

  • 해결책: Redmine 루트 디렉토리에서 아래 명령어를 다시 실행하세요.
  • Bash
    # Solaris의 경우 경로를 명시해주는 것이 안전합니다.
    sudo /usr/ruby/3.2/bin/bundle install --without development test
    

2. 특정 핵심 라이브러리 누락 (mysql2, bundler 등)

만약 에러 메시지가 cannot load such file -- mysql2 또는 bundler라면 해당 모듈이 시스템에 없는 것입니다.

  • 해결책 (mysql2의 경우):
  • Bash
    sudo gem install mysql2 -- --with-mysql-config=/usr/mysql/5.7/bin/mysql_config
    
  • 해결책 (bundler의 경우):
  • Bash
    sudo gem install bundler
    

3. bundle exec를 붙이지 않고 실행한 경우

Redmine의 rake나 rails 명령어를 시스템 전역 명령어로 실행하면, 프로젝트 전용 라이브러리 경로를 인식하지 못해 이 에러가 납니다.

  • 잘못된 예: rake db:migrate
  • 올바른 예: bundle exec rake db:migrate (반드시 앞에 bundle exec를 붙여야 현재 프로젝트의 Gem 세트를 로드합니다.)

4. Solaris 환경 변수(GEM_PATH) 문제

Solaris에서 Ruby Gem이 설치되는 경로가 Ruby의 기본 검색 경로에 포함되지 않았을 때 발생합니다.

  • 해결책: gem env 명령어로 경로를 확인한 후, .bashrc나 현재 세션에 경로를 추가합니다.
  • Bash
    # 경로 확인
    gem env gempath
    
    # 예시: 확인된 경로를 GEM_PATH에 추가
    export GEM_PATH=/usr/ruby/3.2/lib/ruby/gems/3.2.0
    

5. 에러 메시지별 맞춤 해결법

에러 메시지 내용 원인 해결 방법
-- bundler Bundler 자체가 없음 gem install bundler
-- mysql2 DB 드라이버 미설치 위 2번 항목의 gem install mysql2 실행
-- nokogiri XML 파서 설치 실패 pkg install libxml2 libxslt 후 다시 bundle install
-- net-ldap LDAP 관련 Gem 누락 bundle install 재실행

지금 화면에 뜨는 정확한 파일명이 무엇인가요?

cannot load such file -- 뒤에 나오는 파일명(예: mysql2, bundler, zeitwerk 등)을 알려주시면, Solaris 11.4 환경에서 해당 파일을 설치하거나 경로를 잡는 정확한 한 줄 명령어를 바로 드릴 수 있습니다.

어떤 파일명을 로드할 수 없다고 나오나요?

 

"gem install bundler" 어느 위치에서 실행하나?

 
 
 
 
 

thought:gem install bundler 명령어는 시스템의 어느 위치에서 실행해도 상관없습니다. 하지만 Solaris 11.4 환경에서는 권한과 경로 설정이 중요하므로 아래 규칙을 따르는 것이 좋습니다.

1. 실행 위치

  • 어디서든 가능: gem 명령은 전역(Global) 도구이므로 특정 디렉토리에 들어갈 필요가 없습니다. 터미널을 열자마자 바로 실행하시면 됩니다.
  • 권한: 시스템 전체에서 Bundler를 사용할 수 있도록 **sudo**를 붙여 실행하는 것이 일반적입니다.
Bash
sudo gem install bundler

2. Solaris 11.4에서의 주의사항

Solaris는 여러 버전의 Ruby가 설치되어 있을 수 있습니다. 만약 명령어가 실행되지 않는다면 아래 두 가지를 확인하세요.

① 특정 Ruby 버전에 설치하기

명령어가 안 먹히거나 특정 버전(예: Ruby 3.2)에 설치해야 한다면, 해당 버전의 gem 경로를 직접 입력합니다.

Bash
sudo /usr/ruby/3.2/bin/gem install bundler

② PATH 환경 변수 확인

설치 후에도 bundle 명령어를 못 찾는다면, 실행 파일이 모여 있는 bin 디렉토리를 시스템이 모르고 있는 것입니다. 아래 명령어로 경로를 추가해 주세요.

Bash
export PATH=$PATH:/usr/ruby/3.2/bin

3. 전체 흐름 요약

  1. 어무 데서나: sudo gem install bundler 실행
  2. Redmine 폴더로 이동: cd /var/redmine (본인의 Redmine 경로)
  3. 의존성 설치: 이제 여기서 bundle install을 실행하여 Redmine에 필요한 나머지 라이브러리들을 설치합니다.

Bundler 설치가 성공했나요? 이제 Redmine 폴더로 이동하여 bundle install을 진행하시면 됩니다. 혹시 gem 명령 자체를 찾을 수 없다는 메시지가 나오나요?

 

bundler 설치 여부 확인

 
 
 
 
 

Solaris 11.4 환경에서 Bundler가 설치되어 있는지 확인하고, 설치되어 있다면 어떤 경로에 있는지 확인하는 방법은 다음과 같습니다.

1. 버전 확인 명령어

가장 간단한 방법은 버전을 확인해 보는 것입니다. 터미널에서 아래 명령어를 입력하세요.

Bash
bundle -v

또는

Bash
bundler -v
  • 성공 시: Bundler version 2.x.x와 같이 버전 정보가 출력됩니다.
  • 실패 시: command not found라는 메시지가 출력됩니다.

2. gem 목록에서 확인

Ruby의 패키지 관리자인 gem 리스트 안에 bundler가 포함되어 있는지 확인합니다.

Bash
gem list bundler
  • 설치되어 있다면 bundler (2.x.x)와 같이 목록에 표시됩니다. 만약 아무것도 나오지 않는다면 설치되지 않은 상태입니다.

3. 설치 경로 확인 (Solaris 경로 문제 해결)

설치는 되어 있는데 명령어를 찾지 못하는 경우가 많습니다. 이때는 아래 명령어로 실제 실행 파일의 위치를 찾습니다.

Bash
# gem이 설치된 환경 정보를 출력
gem env

출력 내용 중 EXECUTABLE DIRECTORY 항목을 확인하세요. 보통 Solaris에서는 다음과 같은 경로 중 하나에 실행 파일이 위치합니다.

  • /usr/ruby/3.2/bin
  • /usr/bin
  • /usr/local/bin

4. 만약 설치되어 있지 않다면?

확인 결과 설치되어 있지 않다면, 앞서 안내드린 대로 설치를 진행합니다.

Bash
# Solaris 시스템 전체에서 사용 가능하도록 sudo 권한으로 설치
sudo gem install bundler

5. 설치 후에도 명령어를 못 찾는다면?

설치는 성공했는데 여전히 bundle -v가 안 된다면, 시스템의 PATH에 해당 경로가 빠져있는 것입니다. 임시로 아래 명령어를 입력하여 경로를 연결해 주세요.

Bash
export PATH=$PATH:/usr/ruby/3.2/bin  # 본인의 Ruby 버전에 맞게 수정

현재 bundle -v를 입력했을 때 어떤 메시지가 나오나요? 에러 메시지를 알려주시면 그에 맞는 설정을 바로 도와드리겠습니다.

 

"bundler -v" 입력하면 "rubygems/core_ext/kernel_require.rb:130:in 'require': cannot load such file --bunlder (LoadError)" 오류 발생하는 이유

 
 
 
 
 

오타 혹은 설치된 Bundler의 경로 인식 문제일 가능성이 매우 높습니다. 에러 메시지를 자세히 보시면 **--bunlder**라고 표시되어 있는데, 이는 bundler가 아닌 **bunlder (n과 d의 위치가 바뀜)**로 입력되었거나 내부 코드에서 오타를 참조하고 있음을 의미합니다.

이 오류가 발생하는 구체적인 원인과 해결 방법은 다음과 같습니다.


1. 명령어 오타 확인

가장 먼저 터미널에 입력하신 명령어를 다시 확인해 주세요.

  • 잘못된 입력: bunlder -v
  • 올바른 입력: bundler -v (d 다음에 l이 옵니다)

2. Bundler가 정상적으로 설치되지 않음

오타가 없는데도 require 에러가 발생한다면, RubyGems가 Bundler를 로드하려고 시도했지만 실제 라이브러리 파일들을 찾지 못한 경우입니다. Solaris에서는 설치 과정에서 파일이 누락되거나 권한 문제로 끊기는 경우가 있습니다.

해결 방법: 다시 설치 기존 설정을 무시하고 깨끗하게 다시 설치하는 것이 가장 빠릅니다.

Bash
sudo gem install bundler --force

3. Ruby 버전과 Bundler의 불일치

Solaris 11.4에 여러 버전의 Ruby가 설치되어 있는 경우, gem 명령어로 설치한 버전과 bundler 명령어가 참조하는 Ruby 엔진 버전이 다를 때 로드 에러가 발생할 수 있습니다.

해결 방법: Ruby 실행 파일을 통해 직접 실행 어느 버전의 Ruby가 문제인지 확인하기 위해 아래와 같이 실행해 보세요.

Bash
# Ruby를 통해 직접 bundler 로드 시도
ruby -e "require 'bundler'; puts Bundler::VERSION"
  • 이 명령어가 성공하면 Bundler는 잘 설치된 것이며, PATH 환경 변수의 실행 파일 우선순위 문제입니다.
  • 이 명령어도 실패하면 해당 Ruby 버전에는 Bundler가 설치되지 않은 것입니다.

4. Solaris 환경 변수 초기화 (추천 해결책)

Solaris 환경에서는 GEM_HOME이나 GEM_PATH가 꼬여서 발생할 수 있습니다. 아래 명령어로 환경 변수를 초기화하고 다시 확인해 보세요.

Bash
# 1. 환경 변수 초기화
unset GEM_HOME
unset GEM_PATH

# 2. Bundler 재설치 (명확한 경로 사용)
sudo /usr/ruby/3.2/bin/gem install bundler

# 3. 버전 확인
/usr/ruby/3.2/bin/bundler -v

💡 요약

  1. 명령어에 오타(bunlder vs bundler)가 있는지 확인하세요.
  2. 오타가 없다면 sudo gem install bundler를 다시 실행하세요.
  3. 그래도 안 된다면 /usr/ruby/3.2/bin/bundler -v처럼 풀 경로를 입력해 보세요.

위의 ruby -e ... 명령어를 입력했을 때 어떤 결과가 나오나요? 에러가 계속된다면 그 메시지를 복사해서 보여주시면 더 정확한 경로를 찾아드릴 수 있습니다.

Would you like me to help you set the correct environment variables in your .bashrc file so you don't have to type the full path every time?

 

"bundler -v" 입력하면 "rubygems/core_ext/kernel_require.rb:130:in 'require': cannot load such file --bundler (LoadError)" 오류 발생하는 이유

 
 
 
 
 

명령어 입력 시 **bundler -v**에서 오타가 없었음에도 불구하고 LoadError가 발생하는 이유는, 시스템에 bundler라는 실행 파일(Wrapper)은 존재하지만, 실제 로직이 담긴 Ruby 라이브러리 파일들을 Ruby가 찾지 못하고 있기 때문입니다.

Solaris 11.4 환경에서 이 문제가 발생하는 주요 원인 3가지는 다음과 같습니다.


1. Ruby 버전 불일치 (가장 유력한 원인)

Solaris 11.4에는 여러 버전의 Ruby(예: 2.x와 3.x)가 공존할 수 있습니다.

  • 상황: gem install bundler는 Ruby 3.2 환경에서 실행했는데, 현재 터미널의 bundle 명령어는 Ruby 2.7 환경의 것을 가리키고 있을 때 발생합니다.
  • 확인 방법:명령어의 첫 줄(Shebang)에 적힌 Ruby 경로와 현재 사용 중인 ruby -v의 경로가 다른지 확인하세요.
  • Bash
    which bundle
    head -n 1 $(which bundle)
    

2. GEM_PATH 환경 변수 꼬임

Ruby는 라이브러리를 찾을 때 GEM_PATH를 참조합니다. 이 변수가 잘못 설정되어 있으면 실행 파일은 실행되지만, 정작 필요한 소스 코드(require 'bundler')를 불러오지 못합니다.

  • 해결 방법: 환경 변수를 초기화하거나 수동으로 잡아줍니다.
  • Bash
    unset GEM_HOME
    unset GEM_PATH
    # 그 후 다시 확인
    bundle -v
    

3. Bundler 설치가 불완전함

설치 과정에서 네트워크 오류나 권한 문제로 인해 실행 스크립트만 생성되고 실제 파일들이 gems 디렉토리에 들어가지 않았을 수 있습니다.


🛠 해결 단계 (이 순서대로 진행해 보세요)

1단계: Ruby 명시적 호출로 확인

bundle이라는 별칭 대신 Ruby 엔진이 직접 Bundler를 부르도록 시도해 봅니다.

Bash
ruby -S bundle -v

이 명령어가 성공한다면, 단순히 PATH 상의 bundle 실행 파일이 엉뚱한 Ruby 버전을 바라보고 있는 것입니다.

2단계: Bundler 강제 재설치 (경로 지정)

Solaris의 기본 Ruby 3.2 경로를 기준으로 깨끗하게 다시 설치합니다.

Bash
sudo /usr/ruby/3.2/bin/gem install bundler --force

3단계: 정확한 경로로 실행 확인

설치 후, 시스템 링크가 아닌 실제 경로의 파일을 직접 실행해 봅니다.

Bash
/usr/ruby/3.2/bin/bundle -v

💡 만약 여전히 안 된다면?

현재 시스템의 Ruby 환경 정보를 확인해야 합니다. 아래 명령어를 입력했을 때 나오는 결과를 알려주세요.

  1. which ruby
  2. ruby -v
  3. gem env gempath

이 정보를 토대로 사용자의 Solaris 환경에 딱 맞는 .bashrc 설정값을 뽑아드리겠습니다. 어느 단계에서 막히셨나요?

 

"bundler -v" 입력하면 "rubygems/core_ext/kernel_require.rb:130:in 'require': cannot load such file --bundler (LoadError)" 오류 발생하는 이유

 
 
 
 
 

명령어 실행 파일은 존재하지만, 정작 그 실행 파일이 구동하는 데 필요한 **Bundler 라이브러리 본체(소스 코드)**를 Ruby가 찾지 못할 때 발생하는 전형적인 경로 오류입니다.

Solaris 11.4에서 특히 이 문제가 자주 발생하는

대답이 중지되었습니다.
 

"bundler -v" 입력하면 "rubygems/core_ext/kernel_require.rb:130:in 'require': cannot load such file --bundler (LoadError) rescue in require

 
 
 
 
 

Solaris 11.4 환경에서 bundler -v 실행 시 발생하는 이 오류는 "실행 파일(명령어)은 있지만, 그 명령어가 불러와야 할 실제 라이브러리 소스 코드를 찾지 못할 때" 발생합니다.

Solaris의 특수한 경로 설정 때문에 발생하는 이 문제의 원인과 해결 방법을 정리해 드립니다.


1. 오류의 핵심 원인

  1. Ruby 버전 간의 충돌: Solaris에 설치된 Ruby 버전(예: 2.7 vs 3.2)이 여러 개일 때, bundle 실행 파일은 A 버전을 가리키는데 실제 라이브러리는 B 버전에 설치된 경우입니다.
  2. GEM_PATH 환경 변수 미설정: Ruby가 라이브러리를 찾는 경로 리스트에 Bundler가 설치된 디렉토리가 포함되어 있지 않은 상태입니다.
  3. 불완전한 설치: gem install bundler 과정에서 권한 문제로 인해 실행 스크립트만 생성되고 라이브러리 본체 설치가 실패했을 수 있습니다.

2. 해결 방법 (단계별 시도)

1단계: Ruby를 통해 직접 실행해보기

별칭(Alias)이나 경로 문제가 맞는지 확인하기 위해 Ruby 엔진이 직접 Bundler를 로드하도록 시도합니다.

Bash
ruby -S bundle -v
  • 이게 성공한다면: 단순히 PATH 설정 문제입니다. 아래 3단계를 진행하세요.
  • 이것도 실패한다면: Bundler 자체가 제대로 설치되지 않은 것입니다. 2단계를 진행하세요.

2단계: 명확한 경로로 Bundler 재설치

Solaris의 기본 Ruby 3.2 경로를 기준으로 강제로 재설치합니다. (권한을 위해 sudo 사용)

Bash
sudo /usr/ruby/3.2/bin/gem install bundler --force

3단계: 환경 변수(PATH, GEM_PATH) 설정

Solaris가 Ruby 라이브러리를 정확히 찾을 수 있도록 .bashrc 또는 .profile 파일에 아래 내용을 추가해야 합니다.

  1. 파일 열기: vi ~/.bashrc
  2. 아래 내용 추가 (Ruby 3.2 기준):
  3. Bash
    # Ruby 실행 파일 경로 추가
    export PATH=/usr/ruby/3.2/bin:/usr/gcc/bin:$PATH
    
    # Gem 라이브러리 경로 명시 (LoadError 해결의 핵심)
    export GEM_HOME=$HOME/.gems
    export GEM_PATH=/usr/ruby/3.2/lib/ruby/gems/3.2.0:$GEM_HOME
    export PATH=$GEM_HOME/bin:$PATH
    
  4. 설정 적용: source ~/.bashrc

3. 최종 확인

이제 다시 버전을 확인해 봅니다.

Bash
bundler -v

만약 여전히 같은 오류가 발생한다면, 현재 시스템의 정확한 상태를 확인하기 위해 아래 세 가지 명령어의 결과값을 알려주세요.

  1. which ruby
  2. ruby -v
  3. gem env

이 결과값을 토대로 사용자님의 Solaris 환경에 딱 맞는 정확한 경로 설정 한 줄을 바로 알려드리겠습니다. 지금 ruby -S bundle -v 결과는 어떻게 나오나요?

 

solaris11.4 폐쇄망에서 rubygems 설치 방법

 
 
 
 
 

폐쇄망(Offline) 환경의 Solaris 11.4에서 RubyGems와 Bundler를 설치하는 것은 외부 저장소(rubygems.org)에 접속할 수 없기 때문에 설치 파일(.gem)을 직접 옮겨서 수동으로 설치해야 합니다.

가장 안정적인 순서는 다음과 같습니다.


1. 준비물 (인터넷이 되는 PC에서 다운로드)

먼저 인터넷이 가능한 환경에서 아래 파일들을 다운로드하여 USB나 내부 망을 통해 Solaris 서버로 옮깁니다.

  1. RubyGems 소스 코드: rubygems.org에서 rubygems-x.x.x.tgz 다운로드
  2. Bundler Gem 파일: rubygems.org/gems/bundler에서 bundler-x.x.x.gem (최신 버전) 다운로드
  3. Redmine 의존성 Gem들: Redmine의 Gemfile.lock에 명시된 모든 .gem 파일들 (이 과정은 bundle package 기능을 활용하는 것이 좋으나, 초기라면 핵심 Gem 위주로 준비)

2. RubyGems 설치 (Source install)

Solaris에 이미 Ruby가 설치되어 있다면(기본 /usr/ruby/3.2), RubyGems 자체를 먼저 업데이트하거나 설치해야 합니다.

Bash
# 1. 압축 해제
tar -xzvf rubygems-x.x.x.tgz
cd rubygems-x.x.x

# 2. 설치 실행 (Solaris 기본 Ruby 경로 사용)
sudo /usr/ruby/3.2/bin/ruby setup.rb

3. Bundler 수동 설치 (.gem 파일 활용)

이제 미리 받아온 .gem 파일을 사용하여 오프라인 설치를 진행합니다.

Bash
# gem 파일이 있는 디렉토리에서 실행
sudo /usr/ruby/3.2/bin/gem install --local bundler-x.x.x.gem
  • --local 옵션은 외부 네트워크에 접속하지 않고 현재 디렉토리의 파일만 사용하겠다는 의미입니다.

4. Redmine 의존성 라이브러리 일괄 설치

Redmine에는 수십 개의 Gem이 필요합니다. 이를 하나씩 옮기기 어려우므로 보통 다음과 같은 전략을 씁니다.

방법: Vendor Cache 활용 (권장)

인터넷이 되는 다른 PC(동일한 Ruby 버전 권장)에서 의존성을 모두 다운로드하여 옮기는 방식입니다.

  1. 인터넷 가능 PC: Redmine 폴더에서 실행
  2. Bash
    bundle cache
    # vendor/cache 폴더에 모든 .gem 파일이 저장됩니다.
    
  3. 파일 복사: vendor/cache 폴더 전체를 Solaris 서버의 Redmine 디렉토리로 복사합니다.
  4. Solaris 서버: 오프라인 모드로 설치
  5. Bash
    cd /var/redmine
    bundle install --local --without development test
    

5. 설치 확인 및 경로 설정

설치 후 LoadError를 방지하기 위해 환경 변수를 반드시 확인합니다.

Bash
# .bashrc 에 추가
export PATH=/usr/ruby/3.2/bin:$PATH
export GEM_PATH=/usr/ruby/3.2/lib/ruby/gems/3.2.0

⚠️ 폐쇄망 설치 시 주의사항

  • 컴파일 도구: mysql2나 nokogiri 같은 Gem은 설치 시 C 컴파일(make) 과정이 필요합니다. Solaris에 gcc, make, mysql-client 라이브러리가 미리 pkg install 되어 있어야 합니다.
  • 의존성 체인: A라는 Gem을 설치하려면 B가 필요할 수 있습니다. bundle cache를 사용하지 않고 개별 Gem을 옮길 경우, 의존성 순서대로 수동 설치해야 합니다.

현재 vendor/cache 방식으로 모든 Gem을 준비하셨나요? 아니면 개별 .gem 파일 몇 개만 옮기시는 상황인가요? 상황에 맞춰 더 효율적인 스크립트를 짜드릴 수 있습니다.

 

ruby2.3과 호환하는 rubygems 소스코드 버전 와 bundler gem 버전

 
 
 
 
 

Ruby 2.3은 매우 오래된 버전(End of Life)이므로, 최신 버전의 RubyGems나 Bundler와는 호환되지 않습니다. 폐쇄망 환경에서 설치하시려면 아래의 최대 호환 버전을 정확히 다운로드해야 설치 시 에러가 발생하지 않습니다.


1. 권장 호환 버전 타겟

Ruby 2.3 계열에서 안정적으로 작동하는 마지막 버전들은 다음과 같습니다.

구성 요소 권장 버전 비고
RubyGems (소스) 2.7.10 Ruby 2.3을 공식 지원하는 마지막 안정 계열
Bundler (Gem) 1.17.3 Bundler 2.x는 Ruby 2.3에서 설치가 매우 까다롭거나 실패함

2. 다운로드 링크 (인터넷 가능 PC에서 준비)

폐쇄망으로 옮기기 위해 아래 파일들을 준비하세요.

  1. RubyGems 2.7.10 소스 코드
    • 다운로드: rubygems-2.7.10.tgz (목록에서 해당 버전 선택)
    • 파일명: rubygems-2.7.10.tgz
  2. Bundler 1.17.3 Gem 파일

3. Solaris 11.4 폐쇄망 설치 순서

Solaris 서버로 파일들을 옮긴 후 아래 순서대로 실행합니다.

Step 1: RubyGems 설치

이미 설치된 Ruby 2.3의 라이브러리 관리자를 업데이트합니다.

Bash
tar -xzvf rubygems-2.7.10.tgz
cd rubygems-2.7.10
sudo ruby setup.rb

Step 2: Bundler 1.17.3 설치

Bundler 2.x 버전이 아닌 1.x 버전임을 명시하여 설치하는 것이 핵심입니다.

Bash
# 파일이 있는 디렉토리에서 실행
sudo gem install --local bundler-1.17.3.gem

Step 3: 설치 확인

Bash
gem -v      # 2.7.10 출력 확인
bundle -v   # Bundler version 1.17.3 출력 확인

4. 주의사항: Redmine 버전과의 관계

Ruby 2.3을 사용하신다면 Redmine 버전도 상당히 낮아야 합니다.

  • Redmine 3.4.x 계열: Ruby 2.3과 완벽히 호환됩니다.
  • Redmine 4.x 이상: Ruby 2.4 이상을 요구하므로, Ruby 2.3 환경에서는 정상적인 bundle install이 불가능할 수 있습니다.

다음 단계에서 필요한 것

혹시 Redmine의 다른 의존성 Gem들도 모두 .gem 파일로 준비하셨나요? 만약 양이 너무 많다면, 인터넷이 되는 PC에서 동일한 Ruby 2.3 환경을 만든 뒤 bundle package 명령어로 모든 의존성을 한꺼번에 추출하는 방법을 추천드립니다.

Redmine의 Gemfile이나 사용하시려는 Redmine 버전을 알려주시면 추가 의존성 문제를 체크해 드릴까요?

 

solaris11.4에서 gems 와 bundler 설치 확인 및 자체 패키지로 설치

 
 
 
 

Solaris 11.4 환경에서 RubyGems Bundler가 정상적으로 설치되었는지 확인하고, 폐쇄망 환경에서 준비해온 패키지 파일(.tgz  .gem)을 사용해 자체 설치하는 방법을 정리해 드립니다.

Ruby 2.3 버전을 사용 중이시라면 아래 절차를 정확히 따라주세요.


1. 설치 여부 확인 방법

현재 시스템에 설치된 경로와 버전을 확인하여 환경 설정이 필요한지 판단합니다.

  • 버전 확인:
  • Bash
    gem -v
    bundle -v
    
  • 설치 경로 및 환경 확인:주의: 여기서 GEM PATHS 항목을 잘 확인하세요. 나중에 LoadError가 발생하면 이 경로를 GEM_PATH 환경 변수에 등록해야 합니다.
  • Bash
    gem env
    

2. 자체 패키지로 수동 설치 (폐쇄망)

인터넷이 되지 않는 환경이므로 준비하신 소스 파일과 Gem 파일을 사용합니다.

Step 1: RubyGems 설치 (소스 설치)

준비한 rubygems-2.7.10.tgz 파일을 사용합니다.

Bash
# 1. 압축 해제
tar -xzvf rubygems-2.7.10.tgz
cd rubygems-2.7.10

# 2. 설치 (반드시 sudo 또는 root 권한)
sudo ruby setup.rb

Step 2: Bundler 설치 (Gem 파일 설치)

준비한 bundler-1.17.3.gem 파일을 사용합니다.

Bash
# gem 파일이 있는 디렉토리에서 실행
sudo gem install --local bundler-1.17.3.gem
  • --local: 외부 저장소(rubygems.org)에 접속하지 않고 현재 디렉토리의 파일을 사용하도록 강제합니다.

3. 설치 후 환경 변수 설정 (필수)

Solaris는 설치 후 실행 파일이나 라이브러리 경로를 자동으로 인식하지 못하는 경우가 많습니다. ~/.bashrc 또는 ~/.profile에 아래 내용을 추가하세요.

Bash
# Ruby 2.3 기본 경로 예시 (설치 위치에 따라 조정 필요)
export PATH=$PATH:/usr/ruby/2.3/bin
export GEM_HOME=$HOME/.gems
export GEM_PATH=/usr/ruby/2.3/lib/ruby/gems/2.3.0:$GEM_HOME
export PATH=$GEM_HOME/bin:$PATH

설정 후 적용: source ~/.bashrc


4. Redmine 의존성 패키지 설치 (Offline)

Redmine 구동에 필요한 다른 Gem들도 설치해야 합니다. 인터넷이 되는 PC에서 vendor/cache를 만들어 오셨다면 아래 명령어로 한꺼번에 설치할 수 있습니다.

Bash
cd /path/to/redmine
# 캐시된 gem들을 사용하여 오프라인 설치
bundle install --local --without development test

💡 문제 해결 팁 (Troubleshooting)

  • LoadError: cannot load such file -- bundler 발생 시: 이는 GEM_PATH가 잡히지 않았거나, bundle 실행 파일이 엉뚱한 Ruby 버전을 호출할 때 발생합니다. ruby -S bundle -v로 실행해 보시고, 성공한다면 PATH 설정을 다시 점검하세요.
  • C 확장 모듈 컴파일 에러 (mysql2 등): Solaris에 gcc와 make가 설치되어 있어야 합니다. 폐쇄망이라 pkg install이 안 된다면 Solaris 설치 미디어(ISO)를 로컬 리포지토리로 등록하여 관련 패키지를 설치해야 합니다.
728x90