티스토리 뷰
하필 Ubuntu에서 ONOS 빌드하고 실행하기를 게시한 바로 다음 날부터 기존 ONOS 빌드에 문제가 생겼다. 2020년 1월 15일부터 Maven Central Repository에서 HTTP의 지원을 종료하고 HTTPS를 사용하도록 변경했는데, 그렇게 변경하기 전의 ONOS는 Bazel이나 Buck으로 빌드할 때 HTTP를 사용하여 Maven Central Repository에 접근하기 때문이다.
따라서 이제는 다음 두 가지 방법 중 하나를 선택하여 ONOS를 빌드해야 한다.
- 2020년 1월 15일 이후 업데이트된 ONOS를 빌드한다.
- 일부 파일을 직접 수정하여 빌드한다.
2020년 1월 15일 이후의 ONOS 빌드
다음 4가지 중 하나를 선택하여 빌드한다. 이 버전에서는 문제가 발생하지 않는다.
2.3.0-rc2
태그 또는 그 이후 버전2.2.1-b4
태그 또는 그 이후 버전onos-1.15
브랜치의 2020년 1월 15일 이후 버전(1.15.0보다 높은 버전)1.13.10-rc2
태그 또는 그 이후 버전onos-1.12
브랜치의 2020년 1월 15일 이후 버전(1.12.2-rc2보다 높은 버전)- Maven으로 빌드할 수 있는 버전(권장하지 않음)
일부 파일을 직접 수정하여 빌드
권장하는 방법은 아니지만, 꼭 2020년 1월 15일 이전 버전을 사용해야 한다면 일부 파일을 직접 수정하여 빌드해야 한다.
Bazel로 빌드하는 버전
$ONOS_ROOT/WORKSPACE
에서 아래 두 가지를 수정한다.
omit_com_google_android_annotations
의 값을False
에서True
로 변경omit_com_google_guava_failureaccess
의 값을False
에서True
로 변경
$ONOS_ROOT/deps/deps.json
에서 아래 내용을 수정한다.
http://repo1.maven.org/
의http
를https
로 변경// grpc related jars
부분에 다음 내용 추가
"com_google_guava_failureaccess": "mvn:com.google.guava:failureaccess:1.0.1",
"com_google_android_annotations": "mvn:com.google.android:annotations:4.1.1.4",
$ONOS_ROOT/tools/build/onos-lib-gen
에서 아래 두 가지를 수정한다.
VER=x.x
에서x.x
를2.2
로 변경curl http://repo1.maven.org/maven2/$ARTIFACT > $JAR
에서http
를https
로 변경
onos-lib-gen
을 실행한다. 이 과정을 거치면 $ONOS_ROOT/tools/build/bazel/generate_workspace.bzl
파일이 변경된다.
$ onos-lib-gen
Downloading onos-libgen-2.2.jar... % Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 6761k 100 6761k 0 0 353k 0 0:00:19 0:00:19 --:--:-- 1209k
Done.
aopalliance-repackaged mvn:org.glassfish.hk2.external:aopalliance-repackaged:jar:2.5.0-b42
amqp-client mvn:com.rabbitmq:amqp-client:jar:3.6.1
asm mvn:org.ow2.asm:asm:jar:5.2
...
onos-lib-gen
진행 중 Exception이 발생하면서 실패하면, 해당 버전 브랜치의 deps.json을 참고하여 수정한 뒤 다시 시도한다. 예를 들어, 2.2.0
태그로 checkout한 상태에서 이 과정을 수행하면 io_netty_netty
에서 Exception이 발생하는데, onos-2.2
브랜치의 것을 참고하여 $ONOS_ROOT/deps/deps.json
에서 다음 내용을 수정하고 다시 onos-lib-gen
을 실행하면 정상적으로 진행된다.
다음과 같이 Finish writing tools/build/bazel/generate_workspace.bzl
이라는 메시지와 함께 onos-lib-gen
이 정상적으로 끝나면 ONOS를 빌드할 수 있다.
...
Finish writing tools/build/bazel/generate_workspace.bzl
$ onos-build
Starting local Bazel server and connecting to it...
INFO: Analyzed target //:onos (782 packages loaded, 13159 targets configured).
INFO: Found 1 target...
...
INFO: Elapsed time: 682.669s, Critical Path: 226.95s
INFO: 2444 processes: 2116 linux-sandbox, 1 local, 327 worker.
INFO: Build completed successfully, 2472 total actions
Buck으로 빌드하는 버전
다음 두 파일에서 http://repo1.maven.org/
의 http
를 https
로 변경한다. 버전에 따라서 deps.json
에서는 해당 구문이 나타나지 않을 수 있다.
$ONOS_ROOT/tools/build/onos-buck
$ONOS_ROOT/lib/deps.json
deps.json
을 수정하지 않아도 되는 경우(예: 1.13.9
태그)는 그대로 문제 없이 빌드할 수 있다. 이 파일을 수정해야 하는 경우, 다음 절차를 계속 진행한다.
$ONOS_ROOT/tools/build/libgen/src/main/java/org/onosproject/libgen/AetherResolver.java
파일의 CENTRAL_URL
의 값에서 http
를 https
로 변경한다.
onos-lib-gen
을 실행한다. cd
에서 too many arguments
라는 에러 메시지가 출력되면서 중단되면, onos-lib-gen
을 다시 시도한다. Buck 업데이트 과정에서 출력된 다른 내용 때문에 발생한 에러이다.
$ onos-lib-gen
aopalliance-repackaged mvn:org.glassfish.hk2.external:aopalliance-repackaged:jar:2.5.0-b32
amqp-client mvn:com.rabbitmq:amqp-client:jar:3.6.1
asm mvn:org.ow2.asm:asm:jar:5.0.4
...
다음과 같이 Finish writing lib/BUCK
이라는 메시지와 함께 onos-lib-gen
이 정상적으로 끝나면 ONOS를 빌드할 수 있다.
...
Finish writing lib/BUCK
$ onos-build
Not using buckd because NO_BUCKD is set.
[-] PROCESSING BUCK FILES...FINISHED 1.6s [100%] 🐳 New buck daemon
[-] DOWNLOADING... (0.00 B/S AVG, TOTAL: 0.00 B, 0 Artifacts)
...
'2019 학부 졸업 프로젝트' 카테고리의 다른 글
Docker로 구동하는 ONOS에서 Inter-Domain Link LLDP 문제 해결하기 (0) | 2020.01.28 |
---|---|
ONOS에서 Provider 등록하여 ProviderService API 활용하기 (0) | 2020.01.23 |
onos-create-app으로 새 ONOS 애플리케이션 만들기 (0) | 2020.01.22 |
Ubuntu에서 ONOS 빌드하고 실행하기 (2) | 2020.01.14 |
2019년 졸업 프로젝트(ONOS REST Orchestration) 진행 과정 (1) | 2020.01.09 |