지난 몇년간 오픈소스 거버넌스 이야기를 많은 분들과 나누면서 가장 많이 들은 이야기는 '그건 진정한 거버넌스가 아니죠, 제가 아는 거버넌스랑 다른데요' 였습니다. 그외에도 '그게 뭐예요' 또는 '괜히 그런 거 하지 마시지' 등의 이야기도 여러 번 있었습니다. ㅎㅎ


사무실에 혼자 앉아서 이런저런 자료를 만들다가 한번 정리해보고 넘어가야지 하는 생각에 또 글을 적네요.

위키피디아를 보면 거버넌스라는 단어는 1980년대부터 대두된 통치 시스템의 개념으로 아직 정의에 대한 학문적 합의는 이루어 지지 않았다고 합니다.


그래서인지 다양한 목적으로 다양한 분야에서 거버넌스라는 단어가 사용되고 있습니다. 

예를 들면, 뉴 거버넌스, 기업 거버넌스, IT 거버넌스, 정보보안 거버넌스 등이죠.

때문에 거버넌스에 대한 해석이 혹자는 정치 철학으로 혹자는 조직 관리 방법으로 해석하는 것도 당연한 일이겠죠. 


저는 몇년동안 여러 전문가 분들과 오픈소스를 기업과 공공이 어떻게 써야 좋을지에 대해서 고민해왔는데 그 결과물이 예전에는 도입가이드, 적용가이드 등에서 현재는 공개SW거버넌스가 되었습니다. 목적은 변하지 않았는데 좀 더 세련된 이름으로 불리게 되었죠.


지금의 저는 공개SW거버넌스를 이렇게 정의하고 있습니다.


공개소프트웨어를 안전하게 사용·적용 및 배포하기 위해 필요한 사항을 다양한 관점에서 활용할 수 있도록 소프트웨어 라이프 사이클 단계별로 제시한




거버넌스라는 단어가 아직 대중적이지 못한 단어이기에 정리해서 자료를 만들었습니다만, 그 이름이 무엇이라고 불리던 간에, 오픈소스를 사용하는 사람들에게 필요한 자료가 되기를 바랍니다.



주말에 공개SW 개발자대회 참가자를 위한 멘토링이 토즈에서 있었습니다.

다른 참가자 분들에게도 도움이 될지 모르니, 제가 멘토링한 부분에 대해서 정리해서 공유해 두려고 합니다.



제가 준비해간 멘토링의 진행순서는 다음과 같습니다.


1) 참가자 현황분석

2) 대회를 위해서 준비할것 협의

3) 멘토링에서 얻고 싶은 목표 합의

4) 멘토링

5) 향후 멘토링 계획안 협의


제가 담당한 멘티들의 현황을 분석한 결과는 다음과 같습니다.


A팀)

 - 보안기술동향을 분석하지 않은 낮은 기술성

 - SW의 가시성 확보 필요

 - 불확실한 개발 일정 계획

 - 개발문서의 미흡


B팀)

 - 공개SW를 이용한 비즈니스시 위험관리

 - 공개SW 커뮤니티를 활용한 비즈니스 방법

 - 비즈니스를 위한 공개SW 라이선스 컴플라이언스 방안


C팀)

 - SW의 가시성 확보 필요

 - 개발문서의 미흡

 - SW품질에 대한 이해 부족


각각의 이슈에 대하여 제가 취한 조치는 아래와 같습니다.


기술동향 : 최근의 보안기술동향 및 관련사이트 소개

SW의 가시성 : 정적분석도구에 대한 소개 및 활용법, 테스트 커버리지에 대한 가이드, 유닛테스트 및 테스트자동화 안내

개발문서 : 개발방법론 소개 및 개발 산출물 관리방안 가이드

공개SW 비즈니스 위험관리 : 공개SW를 기반으로 외부서비스를 하는 기업의 경우에 필요한 거버넌스 체계소개

공개SW 커뮤니티 운영 : 공개SW 커뮤니티 운영유형 및 필수요소 가이드

라이선스 컴플라이언스 : SW 라이선스 유형 소개 및 활용방안 제시.


짧은 시간에 전달하기에는 내용이 많이 부족했기 때문에 각 팀별로 멘토링 내용을 메일로 전달해주고, 향후 멘토링 가능한 일정계획을 제시해주고 마무리했습니다.


부족한 시간때문에 멘토링에 대한 회고를 하지 못해서 아쉬움이 남네요.






Vagrant는 쉬운 개발환경의 구성을 도와주는 오픈소스로서 팀내의 개발환경을 동일하게 유지해야 할 경우 유용하게 사용할 수 있습니다. 



오늘 새 노트북에 개발환경을 구축하기 위해서 Vagrant를 이용하여 설치할 일이 있었기에 진행 과정을 남겨두려고 합니다.

개발환경은  CentOS 6.4 + Apache 2.2.15 + MySQL 14.14 + PHP 5.3.3 + Tomcat 6-6.0.36 로 구성되었습니다.


1) 필수 환경 구성

먼저 자신의 환경에 맞는 아래의 프로그램을 각각 설치합니다.

- VirtualBox : https://www.virtualbox.org/

- Vagrant : http://downloads.vagrantup.com/


2) 가상이미지(box) 설치

- 저는 손에 익숙한 centos 64bit 를 설치하기로 했습니다.

- 다른 이미지를 사용하고 싶은 경우 http://www.vagrantbox.es/ 참고하세요


우선 box 설치

// 형식 : vagrant box add [title] [download-url] 

$ vagrant box add centos64 http://developer.nrel.gov/downloads/vagrant-boxes/CentOS-6.4-x86_64-v20130427.box


box 초기화

$ vagrant init centos64


초기화 하고 나면 Vagrantfile 이라는 환경설정 파일이 생깁니다.(제 경우는 C:\Users\Administrator 안에 있네요.)

어디있는지 모를때는 링크를 참고하세요. http://docs.vagrantup.com/v2/vagrantfile/index.html


box 구동하기

$ vagrant up


box 재구동

$ vagrant reload


box 종료

$ vagrant halt


그리고 예상하시는 것처럼 vagrant help 명령으로 더 많은 내용을 확인할 수 있습니다.


vagrant up 명령으로 구동을 마치면 ssh 클라이언트로 접속해서 사용할 수 있습니다. 

ssh 호스트는 localhost 포트는 2222

id : vagrant/ pw : vagrant


3) apache, tomcat, mysql, php 환경구성


- httpd 설치

$ yum install httpd httpd-devel


- php 설치

$ yum install php


- mysql 설치

$ yum install mysql-server mysql


- php mysql 연동

$ yum install php-mysql


- java 설치

$ yum install java-1.6.0-openjdk.x86_64


- tomcat6 설치

wget http://jpackage.org/jpackage50.repo -O /etc/yum.repos.d/jpackage50.repo

$ yum install tomcat6 tomcat6-admin-webapps tomcat6-webapps


설치후 JAVA_HOME 설정

vi /usr/share/tomcat6/conf/tomcat6.conf

JAVA_HOME="/usr/java/jdk1.6.0_45" (각자의 환경에 맞는 JAVA_HOME을 설정해야 합니다.)


4) Vagrantfile 환경설정

- Vagrantfile 에서 apache, tomcat, mysql 포트 포워딩 설정을 아래처럼 변경해 줍니다.


  # guest : vm 머신의 포트 / host : local 포트

  # 아래와 같이 설정하면 localhost 33306 으로 접속할때 vm 머신 3306으로 접속된다.

  config.vm.network :forwarded_port, guest: 3306, host: 33306


  # httpd

  config.vm.network :forwarded_port, guest: 80, host: 8000


  # tomcat6

  config.vm.network :forwarded_port, guest: 8080, host: 9999


설정을 마쳤으면 재 구동합니다.





5) 설치확인

- 테스트 파일을 만들어서 확인해 줍니다.

vi /var/www/html/info.php 

<?php phpinfo(); ?>


http://localhost:8000/info.php

http://localhost:9999/


기타) box와 운영OS의 파일공유

- 설치 후 가상이미지 상의 /vagrant 디렉토리는 윈도우(내 경우)의  C:\Users\Administrator 폴더와 연결되어 있으니 개발 PC와 이미지의 파일공유가 필요하신 경우 사용하시면 됩니다.

- 폴더 공유 관련 설정은 다음 링크 참고. http://docs.vagrantup.com/v2/synced-folders/basic_usage.html


* 접속 문제가 있는경우 iptables 를 변경하거나 중지해 보세요.





오늘 페이스북 타임라인을 읽다보니 '리눅스 HWP 공개 라이브러리 개발' 건에 대한 라이선스 이야기를 하는 글들이 보이네요. 저도 예전에 FCKEditor를 적용한 제품때문에 LGPL의 정체가 뭔지 몰라서 어려웠던 기억이 납니다. 글타래를 읽다보니 LGPL에 대해서 애매한 이야기들이 좀 있는것 같아서 정리해봅니다. 


1. 공통적으로 지킬 것

일단 OSI(Open Source Initiative)에 등록되어 있는 오픈소스SW 라이선스는 GPL이건 LGPL 이건 상관없이 공통적으로 지켜야 하는 내용이 두가지 있습니다. 


가. 저작권 관련 문구 유지

- 가져다 쓰는 것은 자유롭게 하고 개발자의 정보는 삭제하지 않는 것이죠. 이것은 원 저작권자의 인격을 보호하기 위한 사항으로 마음대로 삭제하시면 안됩니다.


나. 제품명 중복 방지

- 아파치, 리눅스 같은 프로젝트명을 선택하면 안된다는 의미입니다.


두 가지 모두 무엇인가를 직접 만들어본 사람이라면 상식적인 수준에서 지켜야 하는 것이죠.


2. LGPL 라이선스를 가져다 쓰는데 소스코드를 공개해야만 하나요?

LGPL은 GPL의 조건이 너무 엄격해서 사람들이 쓰는 것을 꺼려할까봐 이를 감안해서 만든 라이선스 입니다. 따라서 GPL과는 다르게 LGPL 라이브러리에 응용프로그램을 정적 혹은 동적으로 링크시킨다고 해도 응용프로그램의 소스코드를 공개할 필요가 없습니다. LGPL 전문에 있는 ”라이브러리의 복제본을 무상이나 유상으로 배포할 경우에, 당신은 우리가 당신에게 부여한 모든 권리를 수취인에게도 그대로 부여해야 한다.“라는 내용으로 요구 조건만 준수한다면 상업적인 유상 배포도 허용하고 있습니다. 따라서 자기가 만든 소스코드의 공개없이 가격을 받는 상용제품으로 판매하셔도 됩니다.


다만, LGPL 라이브러리의 소스코드를 수정하였을 때에는 2차적 파생 저작물에 해당하므로 라이브러리의 소스코드를 제공해야 합니다.


3. LGPL을 가져와서 개발하고 GPL 라이선스로 변경해도 될까요?

대답은 변경해도 됩니다. 아래 내용을 보시면 "양도받은 라이브러리의 복제물에 본 라이선스 대신 GNU 일반 공중 라이선스의 규정들을 적용시킬 수 있다"라고 표기되어 있습니다. 하지만 GPL 소스코드를 가져와서 임의로 LGPL로 변경하는 것은 안됩니다.


http://olis.or.kr/ossw/license/license/detail.do?lid=1005&mapcode=&currentPage=

3.

 당신은 양도받은 라이브러리의 복제물에 본 라이선스 대신 GNU 일반 공중 라이선스의 규정들을 적용시킬 수 있다. 이를 가능케 하기 위해서는 본 라이선스를 언급하는 모든 사항들을 GNU 일반 공중 라이선스 버전2의 사항들로 대체시켜야 한다. (만약 GNU 일반 공중 라이선스 버전 2 이후에 신규 버전이 공표되었을 경우에는 원한다면 신규 버전을 사용할 수 있다.) 그 외에 다른 사항들은 변경할 수 없다.

복제물에 대해 이러한 수정이 이루어졌을 경우에는 라이선스를 다시 변경하는 것은 불가능하며, 따라서 해당 복제물을 기반으로 만들어진 모든 저작물과 복제물에는 GNU 일반 공중 라이선스가 적용되어야 한다.

이러한 선택 사항은 라이브러리의 코드 일부분을 라이브러리가 아닌 프로그램에 포함시키고자 할 경우에 유용하다.

하지만 LGPL을 제외한 나머지 라이선스는 원 저작자가 아닌 사람이 임의로 라이선스를 변경할 수 없습니다. LGPL은 명확하게 전문에 표기하였기 때문에 문제가 없지만 다른 오픈소스SW 라이선스는 이를 허용하지 않습니다. 


4. 더 궁금하시면

다른 오픈소스SW 라이선스에 대하여 궁금하시다면 아래의 링크를 이용하시면 됩니다.

- 한국저작권위원회 라이선스 설명 : http://olis.or.kr/ossw/license/license/list.do  

- 공개SW역량플라자 라이선스 설명 : http://www.oss.kr/45607

공개SW 라이선스 가이드 다운로드 http://www.oss.kr/?mid=oss_license&page=3&document_srl=70139 

오픈소스 라이선스 해설 http://www.oss.kr/oss_license/92922



그림출처 : http://terokarvinen.com/freehelia_licenses_and_the_definition_of_free_software.html



최근 클라우드 분야에서 오픈소스SW의 활약이 대단하죠~

클라우드컴퓨팅지원센터, 공개SW클라우드협의회 등의 기관 및 단체들이 생겨나는 걸보면 

공개SW가 이제는 시장의 대세로 변하고 있는것은 느끼게 됩니다.


올해 개최된 OSCON 2012 발표 자료를 읽다보니 

오픈소스SW 클라우드 플랫폼 OpenStack, Eucalyptus, CloudStack, Ganeti 를 비교한 자료가 있어서 정리해 봅니다.



오픈스택 (www.openstack.org)

2010년 Rackspace 와 NASA 의 공동프로젝트로 시작해서 많은 기업들이 참여했습니다.

국내에도 최근에는 자주 세미나가 열려서 많은 분들이 관심을 가지고 있죠.

Nova, Swift, Glance, Keystone, Horizon 등의 컴포넌트로 구성되어 있습니다.



유칼립투스 (www.eucalyptus.com)

UC Santa Barbara 에서 연구프로젝트로 시작해서 2009년 상용으로 되었다가 

2012년 다시 오픈소스SW로 전환되었습니다.

Cloud Controlle, Walrus, Cluster Controller, Storage Controller, Node Controller 등으로 구성되어 있습니다.



클라우드스택(www.cloudstack.org)

Cloud.com 에 의해 개발되었고 2010년 5월에 오슨소스SW로 배포되었습니다.

Citrix 가 Cloud.com 을 인수하여 2012년 ASF(Apache Software Foundation)에 기증하여 현재 APLv2 입니다.

Management Server, Hypervisor Nodes, Storage Nodes, Layers(Zone, Pod, Cluster, Host, Primary Storage, Secondary Storage) 로 구성되어 있습니다.



가네티 (code.google.com/p/ganeti)

무중단 서버를 위하여 구글 내부에서 시작되어 내부 업무용 서버로 사용되다가 

2007년 8월 오픈소스SW로 공개되었습니다. 

Master daemon, Node daemon, Conf daemon, API daemon, Htools 로 구성되어 있습니다.



기업이 클라우드 플랫폼을 사용하기 위해서는 사용성, 서비스 가용성, 도입 및 관리 비용 절감, 성능, 이기종 호환성, 빠른 프로비저닝 등의 다양한 요소를 고려해야 하지만, 이런 의사결정을 바르게 할 수 있는 전문인력을 보유하고 있는 기업은 많지 않은것이 현실입니다. 향후, 공개SW기술이 클라우드 분야에서 확산되기 위해서는 우선 기업의 의사결정을 돕는 다양한 자료가 필요하겠습니다.


 



CentOS 5.x + Redmine 2.x


이슈관리를 위하여 레드마인을 설치하려고 보니 2.x 가 최신이네요

최신버전을사용하려면 상위버전의 ruby가 필요하고 또 다른것도 좀 있어야 합니다. 

설치순서는 ruby > rubygems > rails > redmine 의 순서로 설치.




1. Download ruby source

wget http://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7.tar.gz

tar -zxvf ruby-1.8.7.tar.gz


2. Install dependencies

sudo yum install gcc

sudo yum install gcc-c++

sudo yum install zlib-devel

sudo yum install openssl-devel

sudo yum install readline-devel

sudo yum install sqlite3-devel


3. Build ruby from source

cd ruby-1.8.7

./configure --with-openssl-dir=/usr/lib64/openssl

make

sudo make install


4. Download rubygems source

wget http://rubyforge.org/frs/download.php/69365/rubygems-1.3.6.tgz

tar -zxvf rubygems-1.3.6.tgz

cd rubygems-1.3.6

sudo ruby setup.rb


5. Install gems

sudo gem install rake

sudo gem install rails

sudo gem install mysql2


6. Install Redmine 

아래 문서를 따라서 차근차근 진행합니다.

http://www.redmine.org/projects/redmine/wiki/RedmineInstall


트러블슈팅

1) bundle install --without development test 


>>> 오류 발생 rmagick, postgresql, sqlite 등을 사용하지 않아서 아래처럼 제거하고 설치

`bundle install --without development test rmagick`

`bundle install --without development test postgresql sqlite`


2) ruby 위치를 못찾아서 'ln -s /설치위치 /usr/bin/ruby' 로 링크해 줌


나머지는 매뉴얼대로 설치 진행.


standalon 구동방식) 서버를 재시작해도 레드마인이 구동되기 위한 Init script 적용

/etc/init.d/redmine 파일의 내용


#!/bin/bash
#
# chkconfig: - 16 84
# description: Start up Redmine
#
# processname: redmine
# config: /etc/sysconfig/redmine

# source function library
. /etc/rc.d/init.d/functions

# Get network config
. /etc/sysconfig/network

[ "${NETWORKING}" = "no" ] && exit 0

# Defaults
DAEMON_HOME=/usr/local/redmine
DAEMON_ARGS="-e production -d"

# Daemon
NAME=redmine
RUBY=$(which ruby)

APP_PIDFILE=$DAEMON_HOME/tmp/pids/server.pid
DAEMON_PIDFILE=/var/run/$NAME.pid
DAEMON_LOCKFILE=/var/lock/subsys/$NAME

start() {
    echo -n $"Starting ${NAME}: "
       
    cd $DAEMON_HOME
    #redmine 2.x 인경우
    $RUBY script/rails server webrick $DAEMON_ARGS
    #redmine 1.x 라면 아래의 구동스크립트 사용
    #$RUBY script/server webrick $DAEMON_ARGS

    sleep 2

    status -p $APP_PIDFILE &> /dev/null && echo_success || echo_failure
    RETVAL=$?

    if [ $RETVAL -eq 0 ]; then
        touch $DAEMON_LOCKFILE
        cat $APP_PIDFILE > $DAEMON_PIDFILE
    fi

    echo
}

stop() {
    echo -n $"Shutting down ${NAME}: "
   
    killproc -p $DAEMON_PIDFILE
    RETVAL=$?

    [ $RETVAL -eq 0 ] && /bin/rm -f $DAEMON_LOCKFILE $DAEMON_PIDFILE

    echo
}

case "$1" in
    start)
        start
    ;;
    stop)
        stop
    ;;
    restart)
        stop
        start
    ;;
    status)
        status -p $DAEMON_PIDFILE $NAME
    ;;

    *)
        echo "Usage: $SCRIPTNAME {start|stop|restart|status}" >&2
        exit 3
    ;;
esac


위의 redmine 파일을 /etc/init.d/ 디렉토리 안에 넣고 아래의 순서를 따른다.

chmod +x /etc/init.d/redmine
chkconfig --add redmine
chkconfig redmine on
/etc/init.d/redmine start



아파치 연동방식) 가상호스트로 구동시킬 때


passenger 설치하고 아파치 모듈설치


gem install passenger
passenger-install-apache2-module


/etc/httpd/conf.d/redmine.conf 파일추가 후 아파치 재 시작


LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-3.0.18/ext/apache2/mod_passenger.so
PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-3.0.18
PassengerRuby /usr/bin/ruby

<VirtualHost *:80>
  ServerName redmine.abydos.co.kr
  # 레드마인이 설치된 디렉토리 안의 public 디렉토리를 지정

  DocumentRoot /opt/webRoot/redmine/public

  <Directory /opt/webRoot/redmine/public>

   # This relaxes Apache security settings.
   AllowOverride all
   # MultiViews must be turned off.
   Options -MultiViews
  </Directory>

   ErrorLog "|/usr/sbin/rotatelogs /etc/httpd/logs/redmine-error.%Y-%m-%d.log 86400"
   CustomLog "|/usr/sbin/rotatelogs /etc/httpd/logs/redmine-access.%Y-%m-%d.log 86400" "%h %l %u %t %D \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\""

</VirtualHost>


나눔고딕폰트로 변경)

나눔고딕으로 스타일 적용하려면

설치디렉토리안의 public/stylesheets/application.css 파일을 아래와 같이 수정


css 파일의 맨위에 아래 내용을 삽입하고

@import url('http://api.mobilis.co.kr/webfonts/css/?fontface=NanumGothicWeb');


원하는 부분에서 아래처럼 사용

font-family: 'NanumGothicWeb'


플러그인)

http://www.redmine.org/projects/redmine/wiki/Plugins



백업 및 복구, 데이터 이전)

다른 서버의 레드마인을 이전하거나, 장애에 대비하여 백업할때를 위하여 스크립트를 작성하고 cron으로 등록.


참고 : http://www.redmine.org/projects/redmine/wiki/HowTo_Migrate_Redmine_to_a_new_server_to_a_new_Redmine_version


고쳐서 사용중인 스크립트(git 대신 일자별로 백업되게 변경)

redmine_bak


crontab -l

0 2 * * * /root/redmine/redmine_bak


마이그레이션) 버전이 다른 레드마인을 업그레이드 하는 경우 아래의 과정 필수


http://www.redmine.org/projects/redmine/wiki/RedmineUpgrade

[root@localhost redmine]# rake generate_secret_token

[root@localhost redmine]# rake db:migrate RAILS_ENV=production

[root@localhost redmine]# rake redmine:plugins:migrate RAILS_ENV=production 

[root@localhost redmine]# rake tmp:cache:clear

[root@localhost redmine]# rake tmp:sessions:clear

[root@localhost redmine]# /etc/init.d/httpd restart


시작페이지를 위키로 바꾸고 싶을 경우)


설치된 디렉토리안의 app/controllers/welcome_controller.rb 파일을 수정

@news = News.latest User.current
@projects = Project.latest User.current

to

@news = News.latest User.current
@projects = Project.latest User.current 
redirect_to :controller => 'projects', :action => 'show', :id => '이동시킬프로젝트아이디/wiki'



외부 업체에서 동영상 변환 기능을 적용하기 위해서 ffmpeg, mp4box의 설치를 요청해서 급하게 작업을 하게 되었네요. 오랜만에 터미널에 접속해서 일하게 되었는데 그 설치과정을 정리합니다. 별 내용 없지만 언젠가, 누군가에게 쓰이게 될것을 믿습니다 ㅋ  



mp4box in centos 6



MP4Box

url : http://gpac.wp.mines-telecom.fr/mp4box/

MP4Box는 동영상 파일변환, 동영상 스트리밍을 위한 파일 힌팅을 가능하게 해주는 공개SW입니다.

아래의 링크를 보시면 더 상세한 설명이 있습니다.

http://en.wikipedia.org/wiki/GPAC_Project_on_Advanced_Content



서버환경

제가 설치한 서버의 환경은 CentOS 6.x 64x 입니다.

uname 결과

Linux 2.6.32-220.13.1.el6.x86_64 #1 SMP Tue Apr 17 23:56:34 BST 2012 x86_64 x86_64 x86_64 GNU/Linux



설치과정

설치하려는 ffmpeg 관련 패키지들은 설치후 기본으로 제공되는 저장소에 없는 SW입니다. 따라서 별도의 저장소를 사용할 수 있도록 설정해야 합니다.


1) 다른 저장소 사용하도록 추가할 패키지 다운로드

wget http://apt.sw.be/redhat/el6/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm


2) 저장소에 접근시 사용할 공개키 가져오기

rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt


3) 다운받은 rpm 패키지의 서명 확인 후 설치

rpm -K rpmforge-release-0.5.2-2.el6.rf.*.rpm

rpm -Uvh rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm


4) ffmpeg 관련 패키지 설치

yum install ffmpeg ffmpeg-devel mplayer mencoder


5) MP4Box2 설치

yum 저장소에 있는 것을 설치하고 싶었지만 찾을 수 없어서 그냥 소스로 설치했습니다.


cd /usr/local/src/
wget http://www.repo.bstack.net/mp4box/gpac-0.4.5.tar.gz
wget http://www.repo.bstack.net/mp4box/gpac_extra_libs-0.4.5.tar.gz
tar -zxvf gpac-0.4.5.tar.gz
tar -zxvf gpac_extra_libs-0.4.5.tar.gz
cd gpac_extra_libs
cp -r * /usr/local/src/gpac/extra_lib
cd ..
cd gpac
chmod 755 configure
./configure
make lib
make apps
make install lib
make install
cp bin/gcc/libgpac.so /usr/lib 
install -m644 bin/gcc/libgpac.so /usr/local/lib/libgpac.so
chmod +x /usr/local/lib/libgpac.so
ldconfig


make lib 단계에서 에러발생) /usr/bin/ld: cannot find -lglut

조치)

yum install glut-devel



설치확인

1) File Hinting 확인

MP4Box -hint video.mp4


2) DivX file을 MP4 file로 변환

MP4Box -add file.avi new_file.mp4



참고사이트

이미지 : http://www.oss.kr/oss_intro06

최근 오픈소스SW가 점점 다양한 분야에서 사용하게 되고 있는 추세이며, 따라서 오픈소스SW 라이선스에 대한 바른 정보와 함께 라이선스 준수에 대한 더 많은 생각이 필요합니다.  SW 라이선스 위반사례가 먼 나라의 이야기 같지만 얼마전 삼성전자, 휴맥스가 미국에서 GPL위반으로 제소당하고, MS도 GPL위반에 대한 제기를 받아서 소스코드를 공개하는 등 오픈소스SW 라이선스의 문제는 현실적으로 중요한 이슈입니다.

오늘은 오픈소스SW의 라이선스에 대한 기본 정보를 정리하고, 오픈소스SW 서버를 이용한 다양한 서비스(모바일, 클라우드 등)가 확산되는 최근에 주의깊게 생각해봐야할 AGPL에 대해서 이야기를 좀 해볼까 합니다.

1. 오픈소스SW 라이선스 기본정보 알기

오픈소스SW 라이선스는 전세계적으로 OSI에서 관리합니다.(영문)
http://www.opensource.org/licenses/alphabetical

오픈소스SW 라이선스에 대해서는 국문으로 한국저작권위원회와 공개SW역량플라자에서 좋은 정보를 제공하고 있으니
아래의 정보를 참고하시면 되겠네요.

(한국저작권위원회)

(공개SW역량플라자)
라이선스 비교 : http://www.oss.kr/oss_intro06 
라이선스 설명 : http://www.oss.kr/45607


2. AGPL?
 
최근의 동향에서 볼때 유의해서 지켜볼 라이선스는 서비스를 위해 소스를 수정한 경우에도 코드를 공개할 것을 요구하고 있는 Affero GPL(AGPL)이 아닐까 생각됩니다. AGPL은 기존의 SW개발의 범주를 초과하여 '서버 소프트웨어인 경우에도 반드시 소스 코드를 공개해야 한다'는 제약이 있으므로, 네트워크로 서비스를 하는 경우에도 적용되기 때문입니다.

예를들어, 클라우드서비스 사업자가 AGPL이 적용되는 오픈소스SW를 사용하는 경우 기존의 GPL처럼 생각하면 안됩니다. GPL의 경우 '사용자에게 소스 코드를 공개해야 하는' GPL 제약을 적용하면 서버의 사용자(자기)에게만 공개하면 되기때문에 소스코드공개를 피해갈 수 있으나, APGL은 이 경우에도 소스코드공개가 의무화 됩니다. 
 
즉, NHN, Google 같은 서비스 기업들도 AGPL의 영향을 받는다는 의미죠. 따라서 SaaS, Cloud Service 영역에서 오픈소스SW를 사용하는 경우에 AGPL은 반드시 확인해야 합니다.

AGPL 상세정보 : http://goo.gl/tUzaM

알쏭달쏭 오픈소스SW 라이선스에 대해서 의문사항이 있으시다면 아래의 정보를 이용하사기 바랍니다.


3. 오픈소스SW 라이선스 관련 문의처

오픈소스SW 라이선스에 대하여 궁금하시다면 아래의 링크를 이용하시면 됩니다.(좋은 정보가 있으시면 알려주세요)

1) 공개SW역량플라에서 제공하는 묻고답하기를 이용할 수 있습니다.

2) 아래의 한국저작권위원회를 통해서 상담을 받을 수도 있습니다.
한국저작권위원회 : http://www.olis.or.kr

3)  KOSS 법 센터
- 법무법인 에이팩스는 9월 1일 부설기관으로 `한국 오픈소스 SW(KOSS) 법센터`를 설립


4. 라이선스 검증서비스(무료)

자사의 SW에 대하여 오픈소스SW 라이선스 검증을 받고 싶은 경우는 아래의 서비스를 이용하실 수 있습니다.
공개SW역량플라자 : http://www.oss.kr/oss_news/7405
한국저작권위원회 : http://olis.or.kr/ossw/codeEye/introduction.do


몇일전 컴퓨터를 잘모르는 사람 - (우리 아버님세대쯤의 PC지식 보유상태를 가진 이 사람을 A씨라고 하자)이 질문을 해 왔다.
A씨에게 문제를 차근차근 물어보니
"IE9에서 이 서비스는 정상적으로 지원되지 않습니다" 라는 메시지를 만났는데
그것이 무슨말인지 모르겠다는  이야기였다.

나는 IE9를 제거하고 IE8을 기본으로 사용하게 해주고,
서비스 공급자가 지금 사용하는 브라우저를 지원하지 않는다는 문제를 설명해주었다.
그리고 파이어폭스와 크롬을 추가로 설치해준 다음, 인터넷을 쓰는 다른 방법이 있다는것을 알려주었다.


잠시 빠른속도에 만족하며 쓰다가 십여분도 되기전에 음악감상을 할 수 없다는 이유로 A씨는 이걸로 어떻게 사용하냐고 나에게 반문했고, 나는 그냥 IE8을 기본으로 주로 사용하고 만약 문제가 생겨서 급하게 인터넷에 들어갈때에는 파피어폭스나 크롬을 사용하라고 말해주었다.

A씨의 문제를 해결해주고 돌아와서 좀 생각해보게 되었다.

사람들이 상품을 고를때 다양한 관점으로 이것저것 비교해보고 사는것처럼
브라우저를 선택하는 기준은 여러가지 관점이 있기 마련이다.

인터넷으로 사용할 수 있는 다양한 서비스에 장애가 없는 것이 최선일 수도 있고,
상황에 맞는 가장 빠른 브라우저로 인터넷을 하고 싶을 수도 있으며,
나에게 맞는 다양한 기능을 이것저것 추가하면서 사용하고 싶을 수 도 있다.

우리는 상품을 잘 알면 더 좋은 상품을 손해보지 않고 고를수 있다는 사실을 안다.
브라우저의 장단점을 비교해 볼 수 있는 나의 메인 웹브라우저는 파이어폭스이다.
회사의 직원들도 몇차례의 브라우저 비교를 통해서 이제는 파이어폭스를 대부분 사용하고 있다.
그런데, A씨 같은 경우에는 브라우저를 바꿀 수 있다는 것도 모른채 지낸다.

A씨에게도 웹브라우저를 선택할 자유를 찾아줘야 하는것 아닌가?

Source - http://goo.gl/dFxTJ

덧붙이며.
오늘 파이어폭스 사이트에 가보니 버전이 7.x 대로 다운로드 된다.
이전의 행보에 비추어 생각해보면 엄청난 속도로 버전을 갱신하고 있다.
왜그런지 모르지만 사용자 입장에서는 감사할뿐이다.
여전히 3.x대를 사용하는 나는 아래의 문구를 보고 새버전을 바로 설치했다.
결과는 대 만족.


Source : http://www.mozilla.or.kr/ko/



들어가며

메일함에 공개SW사용기와 관련해서 한통의 메일이 왔습니다. 공모한 글이 적으니 많은 참여를 바란다는 메일인데, 내용을 살펴보니 이번에는 데스크탑에서 사용하는 공개SW의 사용기를 공모하네요. 아무래도 서버용 사용되는 공개SW는 많지만, 데스크탑에서 사용하는 공개SW은 사용자가 적기 때문에 참여자가 적은가 봅니다. 블로그 포스팅도 안한지 오래되고 해서 저도 사용기 하나를 작성하기로 했습니다.

그 덕분에 제 PC에서 사용하고 있는 공개SW를 한번 쭈욱 둘러보게 되었죠.
Cygwin, Vim, FileZilla, WinSCP, Cobian, 7zip, nmap, XAMPP, Eclipse, Aptana, Putty, Firefox, Chrome, tutories SVN, Spring STS ..
후아~ 꽤 많은 공개SW 사용하고 있네요.

많은 SW들이 PC를 재설치할 때마다 지워지고 삭제되고를 반복하는 가운데, 여전 저의 데스탑에서 오랫동안 살아남았으며, 지금도 즐겨 사용하고있는 공개SW는 WinSCP가 아닐까 합니다. 오늘은 WinSCP를 한번 살펴보겠습니다.

WinSCP 소개


요 즘은 대부분의 리눅스 서버에서 보안상 취약한 telnet,ftp를 사용하지 않고 ssh 서버를 운영합니다. ssh는 암호화된 패킷을 송수신하기 때문에 보안상 유리하고, scp 를 통한 파일전송도 가능하기 때문에 대부분의 리눅스 서버에 기본으로 사용하고 있습니다.

CLI 환경을 사랑하는 파워유저들에게는 껌정화면에 흰글씨가 아름다워 보이겠지만, 초급자에게는 ssh 접속과 파일관리가 만만한 일이 아닙니다. 내 컴퓨터의 파일하나를 원격지 리눅스서버에 전송하는것도 큰일이죠.
이런 경우에 바로 WinSCP를 사용할 수 있습니다.



WinSCP는 윈도우환경에서 GUI환경으로 FTP, SSH, SFTP 를 사용가능한 클라이언트 프로그램으로서 저의 데스크탑에서 가장 유용하게 사용하는 공개SW입니다. WinSCP를 이용해서 윈도우 탐색기처럼 원격지 서버와 파일을 쉽게 송수신 할 수 있고, 원격지의 파일을 손쉽게 편집도 가능합니다.



설치하기

1) 브라우저로 http://winscp.net/eng/download.php 에 접속합니다
2) 맨 위쪽에서 최신버전의 ‘Installation package’ 를 클릭하여 파일을 다운로드 합니다
3) 다운로드 받은 파일을 클릭하여 일반적인 윈도우 프로그램 설치과정과 동일하게 설치합니다.

한글지원여부)
최신버전의 파일을 다운로드 받으시면 WinSCP의 한글 버전을 사용할 수 있습니다.
프로그램 설치 시작 시 “한국어” 를 선택할 수 있으며, 프로그램의 한국어 버전이 설치됩니다.

만약 설치 프로그램에서 “한국어”를 선택할 수 없다면,
먼저 영문 설치 버전을 설치한 다음 아래의 translation page로 가서
“Korean” 언어팩을 다운로드 받아서 WinSCP가 실행되는 디렉터리에 ZIP 압축 파일을 풉니다.
translation page : http://winscp.net/eng/translations.php


특징


WinSCP는 영어뿐 아니라 한글을 포함한 다국어를 지원하는 GUI기반의 공개SW로서
많은 특징을 가지고 있습니다. 이미지와 함께 WinSCP의 많은 특징들을 한가지씩 이야기 해보겠습니다.

1) WinSCP를 이용해서 드래그 앤 드롭으로 원격 서버에 파일을 송수신 할 수 있습니다.



2) 바탕화면에 바로가기 아이콘을 생성해서 원클릭으로 서버접속이 가능합니다.



3) SSH-1과 SSH-2를 통한 SFTP 및 SCP 프로토콜 지원. 기존 FTP 프로토콜을 지원합니다



4) 배치파일을 통한 스크립트 실행과 CLI를 지원합니다.



5) 원격지 디렉토리와 PC의 디렉토리 간 동기화를 지원합니다.



6) 자주 쓰는 편집기를 등록해서 서버의 파일을 바로 수정할 수 있습니다.



7) 암호 입력 방식과 공개 키 인증방식을 지원합니다.

 


8) Windows 탐색기 및 Norton Commander 형태의 인터페이스 지원




고급활용


1. 에디트플러스와 WinSCP를 이용한 원격지 서버의 파일 직접수정

EditPlus는 프로그램 편집기로서 아주 강력하지만 ssh 기능이 없으므로 작업하는 도중
원격지의 서버에 파일관련 명령을 실행하기에는 불편합니다. 텍스트 편집기에게 이것저것 다 요구하는것은 너무 많은것을 바라는 것이겠죠?

이때 EditPlus를 WinSCP와 함께 사용하면 원격지의 서버를 윈도우의 탐색기처럼 브라우징 할 수 있고, 서버의 파일을 직접 열어서 항상 사용하는 편집기로 빠르게 편집할 수 있습니다.
물론 텍스트편집기의 원격서버 접속기능을 이용할 수 도 있지만, WinSCP와 함께 사용하면 좀 더 직관적인 인터페이스를 제공하므로 초보자도 리눅스 서버에 쉽게 접속해서 파일 수정이 가능합니다.




2. 디렉토리 동기화


이 기능은 서버의 소스코드를 자신의 PC에 특정폴더와 동기하도록 설정한 다음, PC에서 소스코드를 수정하면 자동으로 원격서버에 반영되는 기능입니다.
자신의 PC안에 있는 파일을 수정하면 원격지에 자동으로 반영되기 때문에 마치 서버의 소스코드를 수정하는 것과 같은 효과가 있습니다.



3. 공개키 인증방식 사용

Putty를 설치하면 인증키를 생성하는 PuTTYgen 프로그램을 사용할 수 있습니다.
1) 프로그램을 실행시키고 ‘Generate’ 버튼을 누른 후 ‘마우스’를 움직이면 키가 생성됩니다.
2) ‘Save private key’ 버튼을 눌러서 파일로 저장했다가 나중에 WinSCP에서 사용합니다.
3) 비밀문구 없이 저장할지를 물어보는데 그냥 저장하겠다고 '확인'버튼을 누릅니다.
4) 붉은 사각형 부분을 긁어서 클립보드에 복사했다가, 원격서버의 /사용자홈/.ssh/authorized_keys 파일에 한 줄로 복사해넣습니다.
5) 아래 화면과 같이 저장한 개인키를 WinSCP 접속정보에 입력해 줍니다
6) 접속을 시도하면 공개키 기반의 인증을 사용하여 접속됩니다.


트러블슈팅


- UTF-8환경에서 한글이 깨어지는 경우에는, 로그인화면 > 환경 > 파일이름을 UTF-8 인코딩
이라고 표시된 부분을 '자동'에서 '사용'으로 변경하신 후 접속하시면 UTF-8 형식을 사용합니다.






참고자료 및 링크


WinSCP Manual - http://winscp.net/eng/docs/start
WinSCP 스크립트 명령실행 활용 - http://calmmass.tistory.com/49
WinSCP 디렉토리 동기화 - http://goo.gl/jZeFv
WinSCP User Manual - http://infotech.adelphi.edu/pdfs/WinSCP_usermanual.pdf


마치며

WinSCP 의 기능을 정리하면서 생각해보니, 진짜 필수적인 기능들을 많이 제공하는것을 새삼 알게되었습니다. 특히 디렉토리 동기화같은 기능은 상용 프로그램에서도 흔히 볼 수 없는 좋은 기능이고, 이런 좋은 SW를 공개한 개발자들에게 고마운 마음이 듭니다. 저도 공개SW를 사용하는 사용자의 입장에서가 아니라 실력을 좀 키워서 좋은 공개W를 만들어서 다같이 사용할 수 있었으면 좋겠네요.

+ Recent posts