개발 환경

아이펀 엔진 설치하기

아이펀 엔진은 Ubuntu 16.04 LTS or 14.04 LTS (64bit) 혹은 CentOS 6或7 (64bit) 환경에서 동작합니다. 게임 개발자는 언급된 linux 배포판의 서버 버전을 설치해서 터미널 상에서 개발하거나, 데스크탑 버전을 설치해서 CLion IDE 환경을 쓸 수 있습니다.

Tip

VisualStudio를 이용한 개발을 선호하시는 경우, Visual Studio 플러그인인 VisualGDB 를 이용하시면 됩니다. 자세한 사항은 MS Windows에서 개발하기 를 참조해주세요.

Ubuntu 16.04 LTS or 14.04 LTS (64bit)

먼저 Ubuntu 14.04 / 16.04 리눅스가 필요합니다. 만일 설치된 Ubuntu 가 없다면, 아마존 AWS 나 KT uCloud 같은 클라우드 서비스를 통해서 간단하게 설치하실 수도 있고, 아니면 사용하고 계신 컴퓨터에 VMware 나 VirtualBox 같은 솔루션을 이용해서 가상 머신으로 Ubuntu 를 설치하실 수도 있습니다. (이 경우에는 Ubuntu 설치 이미지가 필요하실텐데, Ubuntu releases page 에서 설치 이미지를 받으실 수 있습니다.)

Important

반드시 64bit 버전의 Ubuntu 를 설치하셔야 됩니다. iFun Engine 은 32bit Ubuntu 에서 동작하지 않습니다.

Ubuntu 를 설치 한 후에는 아이펀 엔진을 사용하기 위해 APT 저장소를 설정해야 됩니다. 이 작업은 Ubuntu 용 아이펀 엔진 자동 설정 패키지 를 다운받아 설치하는 것으로 간단히 할 수 있습니다. Ubuntu desktop 사용자라면 자동 설정 패키지를 다운로드한 후 더블클릭해서 쉽게 설치할 수 있습니다. Ubuntu server 사용자나 Ubuntu desktop 사용자 중에서 shell 을 선호하는 사용자는 다음 명령으로 아이펀 엔진 자동 설정 패키지를 설치할 수 있습니다.

$ wget https://www.ifunfactory.com/engine/funapi-apt-setup.deb
$ sudo dpkg -i funapi-apt-setup.deb

Note

만일 wget 이 없거나 HTTPS 를 지원하지 않는 경우 이 패키지들을 먼저 설치해야될 수도 있습니다. 만일 관련한 에러 메시지가 발생한다면 다음 명령어를 실행해주세요.

$ sudo apt-get install wget apt-transport-https

Tip

외부 연결이 제한되어 있는 경우

만약 다음 서버들과 연결할 수 없는 환경인 경우, 설치에 실패할 수 있습니다.

  • www.ifunfactory.com (54.65.9.158; 향후에 바뀔 수 있습니다)

  • keyserver.ubuntu.com (PGP key server; optional)

만일 외부와 통신을 못하게 방화벽이 설정되어있는 경우, 위의 funapi-apt-setup.deb 를 사용하는 설명이 동작하지 않습니다. 이런 경우에는 수작업으로 아이펀 엔진의 PGP 키를 추가하고 apt 저장소를 추가하셔야 됩니다.

다음 내용을 ifunfactory.gpg.key 로 저장해주세요:

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1

mQENBFHLrjgBCACzI7l8y1nygGN1b0XwgEDdBZGUlaTZhyHs1Y2VLBmYm3dgyRHp
qLfHhVGZm1FXzT1X7GlGgQRV+GsyeXNUHWcY794UwZMCM4h0mGDGXX1eR2objUNZ
tVE9VzoXwKwnu7mKJGXgSm+olZKQ43wPnr7Keyap42yKSJv3GBkMmfKjwnjTooLk
g62wwpJa3AOZBBqLwHKt0BYVRT/7ILXJnW4NqDoQPeT1y3Iqt1KxsaR1Ik+byh3g
UUvDqgFRXPW+HDkB265MbQgXHmPTGih8j7ygZz1dM5pJQ//bMqNHmbDPZSwLt0Wb
yB6UNbO9W5ZENCz4h7+3utYAvwERqdZ/nxKZABEBAAG0L0Z1bmFwaSBTdXBwb3J0
IDxmdW5hcGktc3VwcG9ydEBpZnVuZmFjdG9yeS5jb20+iQE4BBMBAgAiBQJRy644
AhsDBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRCj9+/dSTj/5jzNB/45CD2R
Bv8CrB+ErIVeFjXuhqYwg2fuAdQcXbVpla5rhrvHjGEbCl35kKqEPFP09YvWReIi
i3kK1yF7zNxyk/9N3GUZpIEgbyEuNVjkizPjrs+DWx0j6oZZQLrsEflUMxfALAmr
v3n6fB6XeCk2Hd83XBoqZSHKfzLPFUynS7e2/Vte4UVKbgFPsypPXazYrqvq4ej2
bnHva6/aUakti+A+l8Cs0kf2WzrwOp47PcceT5N0/mwF5XslwaiqH6q+6iGNLdj0
9hjzRcdZ5My/Do6rGXcFJJY17U72HGFTUCU8RXZRTBY2EfjAV6zQlKlaO/Aw0eWX
7UMXUhc+CLv+aZOxuQENBFHLrjgBCAC/xHRd1tH2zs8nplyI3EYRyWqF82waGIyK
SnV/pJ4CCc2YuECnQV0RvoOtZiuwmB3CuNTSEEyAfwU/K3tMsvczMN04MjQGvSA1
4it7xIkg24Qcx0O46JBwvihR4sZ8O/j6X/nVV4pN4zUg5PQh///yn/R7mVH2sWVW
WE5ZpZ1G/eA/fSiqdmZPOjFW9SWsVgPXvyKCM0b5lCjMlbwZspx8YGblJtDqCtWW
Ip2RnGTCSkSo4kRauDU+iGYojUsgsmUSxjtdGZHa41g5HDRoIcL3e40UYe3el7Sx
Aa+lV529kHAZCWtDfS7MoqtE7gvHSGoJAK+2nCAEfw1mz0Ja+XELABEBAAGJAR8E
GAECAAkFAlHLrjgCGwwACgkQo/fv3Uk4/+Y36Qf/VPov5n+h4pEzKspA6hHezD4J
rw9rVCQ/BvidBerV4VvL+oH5ghBV5QeAvd2TyccuKdZJsikAM9wUM1MS+Y4Akno7
vgIKO/7sGGkbAkgSG4vvfG4W9EQ0GqFycaTl9zpiNUrUri5vGNK2PC6p9uXxXmdQ
3iHe1c5+5jvLKCzOdC+Er2E949PzsMuI2L4viNp72J6ilm62RJ+/Pg1rOaRmTH1H
ax7L3Hwsy0GXeubKaeDizvBeKcv6e08DqI2TCllmd8NkR6OSLuks4yHDU1ztAa0c
+RcnddKag+TCYwto617oMZvCPaic/d6AjW3OL48PFNUPpfBeZEJ8B8tm16HxaQ==
=p+5n
-----END PGP PUBLIC KEY BLOCK-----

그리고 수동으로 위 키를 추가해주세요:

$ sudo apt-key add ifunfactory.gpg.key
OK

다음으로, 아래 내용을 /etc/apt/source.list.d/ifunfactory.list 로 저장해주세요:

deb [arch=amd64] https://www.ifunfactory.com/apt/ trusty non-free foreign

Note

만일 16.04 Xenial 을 사용한다면 trusty 라는 글자를 xenial 로 바꿔주세요.

APT 저장소 설정 후에는 저장소에서 패키지 리스트를 받아오고 funapi1-dev 를 설치합니다.

$ sudo apt-get update
$ sudo apt-get install funapi1-dev

위 명령을 실행하면 아이펀 엔진 게임 개발을 위한 개발 패키지와 Run-time 패키지, Ubuntu 에서 C++ 개발을 위한 패키지들이 모두 설치됩니다.

같은 서버에 MySQL 서버와 분산기능을 위한 Zookeeper 서버를 동시에 실행할 예정이라면 다음 패키지도 같이 설치합니다. 보통 개발 환경의 경우 서버 한대에 모든 것을 설치하는데 이런 경우에 해당됩니다.

$ sudo apt-get install mysql-server
$ sudo service mysql start

$ sudo apt-get install zookeeper zookeeperd
$ sudo service zookeeper start

Important

위의 방법대로 아이펀 엔진을 설치할 경우 일주일간 유효한 임시 라이센스가 자동으로 설치됩니다. 아이펀 엔진 홈페이지의 테스트 라이센스 신청 페이지 에서 6개월짜리 테스트 라이센스를 신청해서 받아보실 수 있으니 꼭 확인해보세요.

CentOS 6 혹은 7 (64bit)

CentOS 를 사용할 때는 Ubuntu 와 과정은 동일하되, 패키지 관리자로 apt 대신 yum 을 이용하게 됩니다.

먼저 CentOS 서버를 준비합니다. 만일 CentOS 서버가 없다면, Ubuntu 에서와 마찬가지로 아마존 AWS 나 KT ucloud 에서 가상 서버로 만드실 수도 있고, 아니면 본인 데스크탑에 VMware 나 VirtualBox 를 이용해서 가상 서버로 설치하실 수도 있습니다. (후자의 경우는 설치 이미지가 필요한데, CentOS 다운로드 페이지 에서 구하실 수 있습니다.

Important

반드시 64bit CentOS 6 나 7 을 설치하셔야 됩니다. 그 이하의 CentoOS 는 지원되지 않으며, 32bit 버전도 지원되지 않습니다.

Yum 저장소를 설정하기 위해서 CentOS용 아이펀 엔진 자동 설정 패키지 를 다운받아 설치합니다. CentOS desktop 사용자라면 자동 설정 패키지를 다운로드한 후 더블클릭해서 쉽게 설치할 수 있습니다. CentOS server 사용자나 CentOS desktop 사용자 중에서 shell 을 선호하는 사용자는 다음 명령으로 아이펀 엔진 자동 설정 패키지를 설치할 수 있습니다.

$ sudo yum install epel-release wget
$ wget https://www.ifunfactory.com/engine/funapi-yum-setup.rpm
$ sudo rpm -Uvh funapi-yum-setup.rpm

저장소 설정 후에는 저장소에서 패키지 리스트를 받아오고 funapi1-devel 를 설치합니다.

$ sudo yum update
$ sudo yum install funapi1-devel

위 명령을 실행하면 Ubuntu의 경우와 마찬가지로 아이펀 엔진 게임 개발을 위한 개발 패키지와 Run-time 패키지, C++ 개발을 위한 패키지들이 모두 설치됩니다.

서버 한대로 개발 환경을 꾸릴 예정이라면, 같은 서버에 MySQL 서버와 분산기능을 위한 Zookeeper 서버도 같이 설치합니다. CentOS 6 인 경우,

$ sudo yum install mysql-server
$ sudo service mysqld start

$ sudo yum install zookeeper
$ sudo service zookeeper start

그리고 CentOS 7의 경우,

$ sudo yum install mariadb-server
$ sudo systemctl enable mariadb
$ sudo systemctl start mariadb

$ sudo yum install zookeeper
$ sudo systemctl enable zookeeper
$ sudo systemctl start zookeeper

로 서비스를 실행하면 됩니다.

Important

위의 방법대로 아이펀 엔진을 설치할 경우 일주일간 유효한 임시 라이센스가 자동으로 설치됩니다. 아이펀 엔진 홈페이지의 테스트 라이센스 신청 페이지 에서 6개월짜리 테스트 라이센스를 신청해서 받아보실 수 있으니 꼭 확인해보세요.

MS Windows 상에서 Visual Studio 를 이용해 개발할 때

만일 Linux 에서의 개발 환경이 익숙하지 않은 경우 VisualGDB 을 이용해 Visual Studio 에서 개발하는 것을 고려해볼 수 있습니다. VisualGDB 는 linux 서버에 원격으로 접속해서 Linux 상의 개발 프로젝트를 Visual Studio 를 이용해 개발할 수 있게 해주는 플러그인입니다. 보다 자세한 내용은 开发环境(C++): Windows + Visual Studio 를 참조해주세요.

KT ucloud 를 사용할 때

KT ucloud 에서 Ubuntu 혹은 CentOS 가상 머신을 설치한 후 iFun Engine 을 설치하는 것은 기본적으로 동일합니다. 다만, uCloud 의 Ubuntu 나 CentOS 이미지가 다소 오래된 버전이라 다소의 사전 작업이 필요합니다. 자세한 내용은 KT ucloud 에 설치하기 를 참조해주세요.

새 프로젝트 만들기

아이펀 엔진에서의 게임 제작은 아이펀 엔진 프레임워크가 읽어들일 수 있는 형태로 게임 로직을 포함하는 dynamic library 를 만드는 것입니다. 하지만 이런 작업을 처음부터 하는 것은 긴 초기 학습 기간이 필요하며, 설령 익숙해진다 해도 매번 하기에는 귀찮은 작업일 수 있습니다. 이 때문에 아이펀 엔진은 새 프로젝트 만드는 작업을 단순화하기 위한 template code 와 script 를 제공합니다.

터미널 상에서 다음 명령을 입력하면 my_project 라는 새로운 project 가 생성됩니다.

C++ 프로젝트를 만드는 경우

$ funapi_initiator my_project

C# 프로젝트를 만드는 경우

$ funapi_initiator my_project --csharp

새로 만들어진 프로젝트는 끝에 ‘-source’ 가 붙은 디렉터리로 존재합니다. 예를 들어 위의 경우는 my_project-source 라는 이름이 됩니다. 게임 개발팀에서는 이 디렉터리를 SVN 저장소나 GIT 저장소에 넣고 공유할 수 있습니다.

위의 방법으로 만들어진 아이펀 엔진 게임들은 cmake 를 이용해서 Linux 명령행 이나 다른 GUI 기반 IDE 환경에서 빌드할 수 있게 설정되어 있습니다. 생성된 source 디렉터리의 구조와 빌드 방법에 대해서는 다음 섹션에서 설명합니다.

Source 디렉터리 구조

앞에서 생성한 source 디렉터리에는 다음 파일들이 포함되어있습니다.

  • VERSION: 생성되는 게임의 버전 숫자를 기록합니다. 이 파일은 服务器管理Part 3: 服务器打包 에서 설명된 것처럼, 나중에 여러분의 게임을 패키지로 만들 때 버전 번호를 정하는데 이용됩니다.

  • DEBIAN: 생성되는 게임을 DEB 패키지 형태로 묶는 경우 DEB 패키지 생성에 필요한 내용들을 기술합니다. 따라서 제작하신 게임이 추가로 의존하는 패키지가 있는 경우, 이 파일 안에 Depends 라는 항목으로 의존성 정보를 기록해주셔야 합니다.

  • README: 게임 개발자들이 내부적으로 게임 소스에 대한 설명 글을 남겨야될 때 이 파일을 이용하시면 됩니다.

  • LICENSE: 배포시에 적용할 사용권 등을 설명하실 수 있습니다.

  • setup_build_environment: source 디렉터리를 이용해서 빌드 디렉터리를 생성할 때 실행될 스크립트입니다. 옵션에 따라 CLion build 환경 을 만들 수도 있고, Linux shell 상에서 command line build 환경 을 만들 수도 있습니다.

  • CMakeLists.txt: 프로젝트의 최상위 레벨 cmake 입력 파일입니다. 이 파일은 소스가 빌드되고 패키징되는 방식을 결정하는 플래그를 설정하기 위한 용도로만 사용됩니다.

  • src/: 여러분이 직접 추가/삭제할 게임 코드들은 대개는 이 디렉토리 안에 들어가게 됩니다.

    • CMakeLists.txt: cmake 입력 파일이며, 게임 개발자들이 소스 파일을 추가하거나 삭제할 때 실질적으로 쓰일 파일입니다. 단순히 파일을 추가 삭제하는 것은 ADDITIONAL_CPP_SOURCES, ADDITIONAL_PROTO_SOURCES, 그리고 ADDITIONAL_LIBRARIES 변수를 수정하시기만 하면 됩니다.

    • my_project_types.h: 아이펀 엔진 게임에서 사용되는 타입에 대한 정의를 담고 있는 파일입니다.

    • my_project_loggers.json: 해당 게임 프로젝트의 activity logger 정의 파일입니다. Activity logger 에 대한 자세한 설명은 여기 를 참고하세요.

    • my_project_server.cc: 해당 게임의 main 에 해당하는 함수입니다. Component model 에 설명된대로 아이펀 엔진 게임들은 main 함수를 갖는 것이 아니라, 하나 이상의 game server component 를 갖는 구조 입니다. 이 파일은 그 game server component 를 정의합니다.

    • event_handlers.h: my_project_server.cc 는 게임이 처리할 event 와 client message 들을 위한 핸들러들을 등록합니다. 이런 핸들러는 게임 개발자가 임의의 위치에 정의해도 되지만, funapi_initiator 를 이용해서 게임을 만드는 경우는 핸들러들의 선언은 event_handlers.h 안에 기록되게 됩니다. 원하시면 파일 이름을 바꾸거나 쪼개실 수 있습니다.

    • event_handlers.cc: 앞의 event_handelrs.h 에 정의된 핸들러들의 구현이 포함되어있습니다.

    • MANIFEST.json: my_project_server.cc 에 정의된 game server component 를 포함해서 각 component 들에 대한 의존성과 component 의 설정이 포함됩니다. 이 파일을 통해서 game 내의 thread 개수나, service port, 사용할 transport protocol 등의 게임 서버 동작에 대한 세부적인 내용을 변경할 수 있습니다. MANIFEST.json 에 대한 자세한 설명은 여기 를 참고해주세요.

    • object_model/: 게임 Object를 정의하는 file 들이 위치하는 directory 입니다. 여기를 참고해주세요.

      • example.json: 게임 Object를 정의하는 예제 file 입니다. 여기를 참고해주세요.

  • mono/: 여러분이 직접 추가/삭제할 게임 코드들은 대개는 이 디렉토리 안에 들어가게 됩니다.

    • my_project.csproj: C# 프로젝트의 정보를 담고 있는 파일이며 게임 개발자들이 소스 파일을 추가하거나 삭제할 때 실질적으로 쓰일 파일입니다. Monodevelop 등의 IDE를 사용하여 프로젝트를 열 때 이 파일을 열면 됩니다.

      단순히 파일을 추가 삭제하는 것은 <Compile Include="file_name.cs" /> , 그리고 <Reference Include="..." /> 변수를 추가하거나 수정하시기만 하면 됩니다.

    • server.cs: 해당 게임의 main 에 해당하는 함수입니다. Component model 에 설명된대로 아이펀 엔진 게임들은 main 함수를 갖는 것이 아니라, 하나 이상의 game server component 를 갖는 구조 입니다. 이 파일은 그 game server component 를 정의합니다. 또한 게임이 처리할 event 와 client message 들을 위한 핸들러들을 등록합니다. 이런 핸들러는 게임 개발자가 임의의 위치에 정의해도 되지만, funapi_initiator 를 이용해서 게임을 만드는 경우는 핸들러들의 선언은 server.cs 안에 기록되게 됩니다. 원하시면 파일 이름을 바꾸거나 쪼개실 수 있습니다.

    • ActivityLog: Activity Logger 정의 및 자동 생성 클래스가 위치하는 directory 입니다. Activity logger 에 대한 자세한 설명은 여기 를 참고하세요.

      • my_project_loggers.json: 게임 프로젝트의 activity logger 정의 파일입니다.

      • my_project_logger.cs: logger 정의를 통해 자동 생성되는 activity logger 클래스입니다.

    • ObjectModel/: 게임 Object 정의 및 자동 생성 클래스가 위치하는 directory 입니다. 여기를 참고해주세요.

      • my_project_object.cs: 정의한 Object Model을 통해 클래스를 자동 생성합니다.

      • example.json: 게임 Object를 정의하는 예제 file 입니다. 여기를 참고해주세요.

    • Protobuf: Protobuf의 정의 및 자동 생성 클래스가 위치하는 directory 입니다.

      • my_project_messages.proto: proto 메시지를 정의할 파일입니다.

      • my_project_messages.cs: proto 파일을 통해 자동 생성되는 protobuf 클래스입니다.

      • my_project_protobuf_helper.cs: protobuf 클래스의 헬퍼 클래스로 자동 생성됩니다.

    • Manifest:

      • MANIFEST.json: my_project_server.cs 에 정의된 game server component 를 포함해서 각 component 들에 대한 의존성과 component 의 설정이 포함됩니다. 이 파일을 통해서 game 내의 thread 개수나, service port, 사용할 transport protocol 등의 게임 서버 동작에 대한 세부적인 내용을 변경할 수 있습니다. MANIFEST.json 에 대한 자세한 설명은 여기 를 참고해주세요.

Attention

앞서 설명한 Activity Logger , Object Model , Protobuf 의 정의 파일(.json , .proto )과 MANIFEST.json 파일은 실제로는 my_project-source/src/ 하위에 존재합니다. Monodevelop IDE 가 아닌 다른 환경에서 개발 하실 때에는 해당 폴더를 열어 정의 파일을 수정해야합니다.

명령행에서 빌드하기

아이펀 엔진 프로젝트는 cmake 를 사용합니다. 그래서 cmake 에서 사용하는 일반적인 방법으로 바로 빌드할 수 있습니다. 하지만 대부분의 공동 작업의 경우 공유하지 않아도 좋은 빌드 파일들을 별도 관리하고 자칫 소스 저장소에 이 파일들이 들어가는 것을 방지하기 위해 소스 디렉터리와 빌드 디렉터리를 구분하는 것이 좋습니다. 그래서 이를 위한 표준화된 방법을 제공합니다. 전통적인 shell 상에서의 make 를 이용하실 분들은 source directory 상의 setup_build_environment 를 다음처럼 실행하시면 됩니다.

$ my_project-source/setup_build_environment --type=makefile

위 명령을 실행하면 my_project-build 라는 directory 를 생성하게 됩니다. 이 directory 에는 debug 빌드와 release 빌드를 위한 debug, release directory 가 있습니다. 원하는 directory 안에 들어가서 make 를 입력하시면 됩니다. debug 빌드를 하시려면 다음과 같이 입력합니다.

$ cd my_project-build/debug
$ make

GUI 환경에서 빌드하기

현재 아이펀엔진에서는 Linux 기반의 IDE인 CLion, Monodevelop 과 Windows 환경의 Viasul Studio의 일부 확장 기능(VisualGDB)를 지원하고 있습니다. 다음 페이지에서 해당 내용을 확인해주세요.

Launcher

아이펀 엔진 게임은 하나의 실행파일로 존재하는 것이 아니라 /usr/bin/funapi_runner 라는 아이펀 엔진 placeholder 실행파일이 인지할 수 있는 dynamic library (Linux 에서는 shared object) 형태로 존재합니다. 따라서 게임을 실행하기 위해서는 funapi_runner를 이용해야 합니다. 하지만 funapi_runner 의 실행 인자를 매번 채워 넣는 것은 번잡한 일이기 때문에 funapi_initiator 를 이용해 생성한 프로젝트는 자동으로 launcher 를 만듭니다. Launcher는 아이펀 엔진 게임을 실행하기 위해 필요한 환경 변수와 parameter 를 세팅해서 funapi_runner를 호출하는 작업만을 합니다.

어떤 툴을 사용해서 빌드를 했든, build 후에는 ‘-local’ 이라는 실행파일이 생성됩니다. (예, my_project-local) 이것이 로컬 개발용 launcher 입니다. 만일 shell 상에서 수작업으로 프로그램을 실행해야한다면 이 launcher 를 실행해야됩니다. CLion 이나 Visual Studio 를 이용해서 debug 하거나 run 하는 경우에는 이 launcher 의 내용과 같은 것을 프로젝트 설정에 지정하고 작업하셔야 됩니다.

launcher 로 server 실행시 log 를 console 화면에서 출력되길 원하시면 logtostderr flag 를 주시면 됩니다.

$ ./my_project-local --logtostderr

배포 타입 선택하기

아이펀 엔진은 stable 과 experimental 두 개 배포 타입으로 제공합니다. 저장소 선택 직후에는 기본적으로 이 중 stable 로 설정됩니다. 그리고 funapi_select_repo 라는 명령을 이용해서 배포판 타입을 변경할 수 있습니다.

현재 배포판 타입 확인하기

현재 선택된 엔진의 배포판 타입과 실제로 설치된 엔진의 패키지 저장소 정보는 다음과 같은 방법으로 확인할 수 있습니다.

$ funapi_select_repo
Current repository: stable
Current package: funapi1-runtime_1.0.0-1661xenial: stable

위 명령어의 결과를 보면 현재 선택된 배포판 타입은 stable 이며, 설치되어있는 엔진 역시 stable 임을 알 수 있습니다.

Note

아래 설명된 것처럼 설치 후 배포판 타입을 바꿀 수 있기 때문에, 선택된 배포판 타입과 설치되어있는 배포판 타입은 다를 수 있습니다.

배포판 타입 변경하기

아이펀 엔진의 정식 안정화 배포판 출시 전에 미리 시험 배포판의 내용을 사용해 보실 수 있습니다. 안정화 배포판은 stable, 다음 버전 기능을 포함하는 시험 배포판은 experimental 로 구분됩니다. 다음과 같이 funapi_select_repo 명령어 뒤에 사용할 배포판 타입을 인자로 주고 명령을 실행하면 사용하는 배포판 타입을 변경할 수 있습니다:

$ sudo funapi_select_repo experimental
Activating iFunEngine experimental repository
기존:1 http://mirror/ubuntu xenial InRelease
받기:2 http://mirror/ubuntu xenial-updates InRelease [95.7 kB]
받기:3 http://mirror/ubuntu xenial-backports InRelease [92.2 kB]
받기:4 http://mirror/ubuntu xenial-security InRelease [94.5 kB]
받기:5 http://mirror/ubuntu xenial-updates/main Sources [194 kB]
받기:6 http://mirror/ubuntu xenial-updates/universe Sources [99.1 kB]
받기:7 http://mirror/ubuntu xenial-updates/main amd64 Packages [396 kB]
받기:8 http://mirror/ubuntu xenial-updates/main i386 Packages [390 kB]
기존:9 https://www.ifunfactory.com/apt xenial InRelease
받기:10 http://mirror/ubuntu xenial-updates/universe amd64 Packages [335 kB]
받기:11 http://mirror/ubuntu xenial-updates/universe i386 Packages [331 kB]
받기:12 http://mirror/ubuntu xenial-security/main Sources [42.8 kB]
받기:13 http://mirror/ubuntu xenial-security/universe Sources [10.2 kB]
받기:14 http://mirror/ubuntu xenial-security/main amd64 Packages [152 kB]
받기:15 http://mirror/ubuntu xenial-security/main i386 Packages [148 kB]
받기:16 http://mirror/ubuntu xenial-security/universe amd64 Packages [44.4 kB]
받기:17 http://mirror/ubuntu xenial-security/universe i386 Packages [44.4 kB]
받기:18 https://www.ifunfactory.com/apt xenial/non-free-experimental amd64 Packages [9,290 B]
내려받기 2,478 k바이트, 소요시간 0초 (4,525 k바이트/초)
패키지 목록을 읽는 중입니다... 완료

위 명령을 보시면, 노란색으로 하이라이팅 된 것처럼 experimental 배포판이 활성화 되고 자동으로 패키지 목록이 갱신됨을 알 수 있습니다. 다시 인자 없이 funapi_select_repo 를 실행하면 다음과 같이 배포판이 바뀐 것을 알 수 있습니다.

$ funapi_select_repo
Current repository: experimental
Installed funapi1-runtime does not belong to stable repository
Current package: funapi1-runtime_1.0.0-1661xenial: experimental

이 후에 apt-get upgradeyum update 명령을 이용해서 필요한 버전을 설치하시면 됩니다.

Tip

아이펀 엔진 패키지들은 버전 번호에 빌드 번호를 포함하고 있습니다. experimental 으로 내보낸 후 안정화 기간을 거친 후 stable 로 내보내기 때문에 일반적으로는 experimental 배포판이 stable 보다는 높은 빌드 번호를 가지고 있게 됩니다.

이때문에 stable 에서 experimental 로 변경하는 경우 대부분의 경우 apt-get upgradeyum update 만으로 experimental 배포판의 최신 버전으로 업그레이드 가능합니다. 그러나 그 반대로 배포판을 변경하거나, stable 배포판에 긴급하게 hot fix 수정을 적용하는 경우 앞의 명령으로 자동으로 설치되지 않는 경우가 있을 수 있습니다. 이 경우는 다음처럼 upgrade 대신 install 뒤에 희망버전을 명시해서 해결할 수 있습니다.

  1. Ubuntu 의 경우: $ sudo apt-get install funapi1-dev=희망버전 funapi1-runtime=희망버전 libfunapi1-mongodblogger=희망버전 python-funapi1-dev=희망버전

  2. Centos 의 경우: $ sudo yum install funapi1-devel-희망버전 funapi1-runtime-희망버전 python-funapi1-devel-희망버전

다시 정식 릴리즈 채널 (stable) 로 돌아가려면 다음 명령을 이용합니다:

$ sudo funapi_select_repo stable

삭제하기

아이펀 엔진을 제거하려면 설치할 때와 마찬가지로 apt-get 을 이용합니다. 다음 명령은 iFun Engine 관련 모든 package 를 제거합니다.

$ sudo apt-get purge funapi1-*

Attention

잠깐! 만일 아이펀 엔진 사용의 불편 사항이 있어서 제거하시는 것이라면, 이메일로 저희 쪽에 불편한 내용을 알려주시면 대단히 감사하겠습니다.