使用buck安裝ONOS

安裝環境

  • 可以聯網的PC-CentOS7(有FQ代理更好)
  • PC的時間要準確
  • 預先安裝好的軟件
    • git
    • curl
    • JAVA1.8(必須是oracle的,openjdk不行),并切換為當前JAVA默認版本
    • karaf-3.0.8(解壓后的文件夾必須放在~/Applications/)
    • maven-3.3.9(解壓后的文件夾必須放在~/Applications/)

git操作

  • 了解一下git常用操作的示意圖


    常用git操作示意圖
  • 先將git配置代理,這樣拉代碼能快一些
[centec@compute1 Applications]$ git config --global http.proxy http://proxy_host:_proxy_port
  • 將ONOS代碼庫拉到本地
[centec@compute1 Applications]$ git clone http://github.com/opennetworkinglab/onos.git
Cloning into 'onos'...
remote: Counting objects: 395378, done.
remote: Compressing objects: 100% (931/931), done.
remote: Total 395378 (delta 607), reused 1579 (delta 468), pack-reused 393654
Receiving objects: 100% (395378/395378), 114.98 MiB | 47.00 KiB/s, done.
Resolving deltas: 100% (180095/180095), done.
[centec@compute1 Applications]$ 
  • 進入到新生成的目錄onos/,checkout指定版本的代碼
[centec@compute1 Applications]$ cd onos
[centec@compute1 onos]$ git checkout 1.10.8
Note: checking out '1.10.8'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

  git checkout -b new_branch_name

HEAD is now at 66866e3... Tagging 1.10.8
[centec@compute1 onos]$ 

設置,修改和編譯打包

  • 將git網絡代理設置去掉,不然太卡了
[centec@compute1 Applications]$ git config --global --unset http.proxy 
[centec@compute1 Applications]$cd onos/
  • 設置環境變量,source profile(可以看一下這個文件的內容)
[centec@compute1 onos]$ export ONOS_ROOT=/home/centec/Applications/onos
[centec@compute1 onos]$ 
[centec@compute1 onos]$ source $ONOS_ROOT/tools/dev/bash_profile
[centec@compute1 onos]$ 
  • 修改buckconfig,更換為阿里云的源
[centec@compute1 onos]$ vi .buckconfig 
[maven_repositories]
#  central = https://repo1.maven.org/maven2
 central = http://maven.aliyun.com/nexus/content/groups/public/
  • 如果有修改代碼的需求,例如希望下發流表的時候不要加clear_action這個instructions
[centec@compute1 onos]$ vi providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/FlowModBuilderVer13.java
        if (treatment.clearedDeferred()) {
        //    instructions.add(factory().instructions().clearActions());
  • 精簡注釋掉不需要編譯的內容,提高編譯速度和成功率。下面是個示例
[centec@compute1 onos]$ cat modules.defs
UTILS = [
    '//utils/osgi:onlab-osgi',
    '//utils/junit:onlab-junit',
    '//utils/misc:onlab-misc',
    '//utils/rest:onlab-rest',
    '//tools/build/conf:onos-build-conf',
]

API = [
    '//core/api:onos-api',
    '//incubator/api:onos-incubator-api',
]

CORE = UTILS + API + [
    '//core/net:onos-core-net',
    '//core/common:onos-core-common',
    '//core/store/primitives:onos-core-primitives',
    '//core/store/serializers:onos-core-serializers',
    '//core/store/dist:onos-core-dist',
    '//core/security:onos-security',
    '//core/store/persistence:onos-core-persistence',

    '//incubator/net:onos-incubator-net',
    '//incubator/core:onos-incubator-core',
    '//incubator/store:onos-incubator-store',
    '//incubator/rpc:onos-incubator-rpc',

    '//cli:onos-cli',

    '//protocols/rest/api:onos-protocols-rest-api',
    '//protocols/rest/ctl:onos-protocols-rest-ctl',
#    '//protocols/bgp/bgpio:onos-protocols-bgp-bgpio',
#    '//protocols/bgp/api:onos-protocols-bgp-api',
#    '//protocols/bgp/ctl:onos-protocols-bgp-ctl',
    '//protocols/netconf/api:onos-protocols-netconf-api',
    '//protocols/netconf/ctl:onos-protocols-netconf-ctl',
    '//protocols/openflow/api:onos-protocols-openflow-api',
    '//protocols/openflow/ctl:onos-protocols-openflow-ctl',
#    '//protocols/ospf/api:onos-protocols-ospf-api',
#    '//protocols/ospf/protocol:onos-protocols-ospf-protocol',
#    '//protocols/ospf/ctl:onos-protocols-ospf-ctl',
    '//protocols/ovsdb/rfc:onos-protocols-ovsdb-rfc',
    '//protocols/ovsdb/api:onos-protocols-ovsdb-api',
    '//protocols/ovsdb/ctl:onos-protocols-ovsdb-ctl',
#    '//protocols/pcep/pcepio:onos-protocols-pcep-pcepio',
#    '//protocols/pcep/api:onos-protocols-pcep-api',
#    '//protocols/pcep/ctl:onos-protocols-pcep-ctl',
    '//protocols/snmp/api:onos-protocols-snmp-api',
    '//protocols/snmp/ctl:onos-protocols-snmp-ctl',
#    '//protocols/isis/api:onos-protocols-isis-api',
#    '//protocols/isis/ctl:onos-protocols-isis-ctl',
#    '//protocols/isis/isisio:onos-protocols-isis-isisio',
#    '//protocols/lisp/api:onos-protocols-lisp-api',
#    '//protocols/lisp/ctl:onos-protocols-lisp-ctl',
#    '//protocols/lisp/msg:onos-protocols-lisp-msg',
#    '//protocols/tl1/api:onos-protocols-tl1-api',
#    '//protocols/tl1/ctl:onos-protocols-tl1-ctl',
    '//protocols/restconf/client/api:onos-protocols-restconf-client-api',
    '//protocols/restconf/client/ctl:onos-protocols-restconf-client-ctl',

    '//drivers/utilities:onos-drivers-utilities',

    '//providers/netconf/device:onos-providers-netconf-device',
    '//providers/openflow/device:onos-providers-openflow-device',
    '//providers/openflow/packet:onos-providers-openflow-packet',
    '//providers/openflow/flow:onos-providers-openflow-flow',
    '//providers/openflow/group:onos-providers-openflow-group',
    '//providers/openflow/meter:onos-providers-openflow-meter',
    '//providers/ovsdb/device:onos-providers-ovsdb-device',
    '//providers/ovsdb/tunnel:onos-providers-ovsdb-tunnel',
    '//providers/rest/device:onos-providers-rest-device',
#    '//providers/snmp/device:onos-providers-snmp-device',
#    '//providers/isis/cfg:onos-providers-isis-cfg',
#    '//providers/isis/topology:onos-providers-isis-topology',
#    '//providers/lisp/device:onos-providers-lisp-device',
#    '//providers/tl1/device:onos-providers-tl1-device',

    '//web/api:onos-rest',
    '//web/gui:onos-gui',
]

ONOS_DRIVERS = [
    # Drivers
    '//drivers/default:onos-drivers-default-oar',
#    '//drivers/arista:onos-drivers-arista-oar',
    # TODO ONOS-5554 excluding from the build
    #'//drivers/bti:onos-drivers-bti-oar',
#    '//drivers/ciena:onos-drivers-ciena-oar',
#    '//drivers/cisco:onos-drivers-cisco-oar',
#    '//drivers/corsa:onos-drivers-corsa-oar',
#    '//drivers/fujitsu:onos-drivers-fujitsu-oar',
#    '//drivers/lumentum:onos-drivers-lumentum-oar',
#    '//drivers/netconf:onos-drivers-netconf-oar',
#    '//drivers/optical:onos-drivers-optical-oar',
    '//drivers/ovsdb:onos-drivers-ovsdb-oar',
#    '//drivers/juniper:onos-drivers-juniper-oar',
#    '//drivers/lisp:onos-drivers-lisp-oar',
#    '//drivers/flowspec:onos-drivers-flowspec-oar',
#    '//drivers/huawei:onos-drivers-huawei-oar',
#    '//drivers/microsemi:onos-drivers-microsemi-oar',
#    '//drivers/oplink:onos-drivers-oplink-oar',
#    '//drivers/hp:onos-drivers-hp-oar',
]

ONOS_PROVIDERS = [
    # Providers
#    '//providers/bgp:onos-providers-bgp-oar',
#    '//providers/bgpcep:onos-providers-bgpcep-oar',
#    '//providers/host:onos-providers-host-oar',
    '//providers/lldp:onos-providers-lldp-oar',
#    '//providers/netcfghost:onos-providers-netcfghost-oar',
#    '//providers/netcfglinks:onos-providers-netcfglinks-oar',
#    '//providers/netconf:onos-providers-netconf-oar',
    '//providers/openflow/message:onos-providers-openflow-message-oar',
    '//providers/ovsdb:onos-providers-ovsdb-oar',
    '//providers/ovsdb/host:onos-providers-ovsdb-host-oar',
    '//providers/ovsdb/base:onos-providers-ovsdb-base-oar',
#    '//providers/pcep:onos-providers-pcep-oar',
#    '//providers/null:onos-providers-null-oar',
    '//providers/openflow/base:onos-providers-openflow-base-oar',
    '//providers/openflow/app:onos-providers-openflow-app-oar',
    '//providers/rest:onos-providers-rest-oar',
#    '//providers/isis:onos-providers-isis-oar',
#    '//providers/snmp:onos-providers-snmp-oar',
#    '//providers/link:onos-providers-link-oar',
#    '//providers/lisp:onos-providers-lisp-oar',
#    '//providers/tl1:onos-providers-tl1-oar',
#    '//providers/ietfte:onos-providers-ietfte-oar',
]

ONOS_APPS = [
    # Apps
#    '//apps/dhcp:onos-apps-dhcp-oar',
#    '//apps/dhcprelay:onos-apps-dhcprelay-oar',
    '//apps/fwd:onos-apps-fwd-oar',
#    '//apps/acl:onos-apps-acl-oar',
#    '//apps/bgprouter:onos-apps-bgprouter-oar',
#    '//apps/cip:onos-apps-cip-oar',
#    '//apps/drivermatrix:onos-apps-drivermatrix-oar',
#    '//apps/events:onos-apps-events-oar',
#    '//apps/proxyarp:onos-apps-proxyarp-oar',
#    '//apps/segmentrouting:onos-apps-segmentrouting-oar',
#    '//apps/gangliametrics:onos-apps-gangliametrics-oar',
#    '//apps/graphitemetrics:onos-apps-graphitemetrics-oar',
#    '//apps/flowanalyzer:onos-apps-flowanalyzer-oar',
#    '//apps/intentsync:onos-apps-intentsync-oar',
#    '//apps/influxdbmetrics:onos-apps-influxdbmetrics-oar',
#    '//apps/metrics:onos-apps-metrics-oar',
#    '//apps/mfwd:onos-apps-mfwd-oar',
#    '//apps/mlb:onos-apps-mlb-oar',
#    '//apps/openstacknetworking:onos-apps-openstacknetworking-oar',
#    '//apps/mobility:onos-apps-mobility-oar',
    '//apps/optical:onos-apps-optical-oar',
    '//apps/newoptical:onos-apps-newoptical-oar',
    '//apps/optical-model:onos-apps-optical-model-oar',
#    '//apps/pathpainter:onos-apps-pathpainter-oar',
#    '//apps/pcep-api:onos-apps-pcep-api-oar',
#    '//apps/pim:onos-apps-pim-oar',
#    '//apps/reactive-routing:onos-apps-reactive-routing-oar',
#    '//apps/roadm:onos-apps-roadm-oar',
#    '//apps/sdnip:onos-apps-sdnip-oar',
#    '//apps/test/demo:onos-apps-test-demo-oar',
#    '//apps/test/distributed-primitives:onos-apps-test-distributed-primitives-oar',
#    '//apps/test/election:onos-apps-test-election-oar',
#    '//apps/test/flow-perf:onos-apps-test-flow-perf-oar',
#    '//apps/test/intent-perf:onos-apps-test-intent-perf-oar',
#    '//apps/test/loadtest:onos-apps-test-loadtest-oar',
#    '//apps/test/netcfg-monitor:onos-apps-test-netcfg-monitor-oar',
#    '//apps/test/messaging-perf:onos-apps-test-messaging-perf-oar',
#    '//apps/test/transaction-perf:onos-apps-test-transaction-perf-oar',
#    '//apps/virtualbng:onos-apps-virtualbng-oar',
#    '//apps/vpls:onos-apps-vpls-oar',
#    '//apps/vrouter:onos-apps-vrouter-oar',
#    '//apps/routing/fibinstaller:onos-apps-routing-fibinstaller-oar',
#    '//apps/routing/cpr:onos-apps-routing-cpr-oar',
#    '//apps/routing/fpm:onos-apps-routing-fpm-oar',
#    '//apps/vtn:onos-apps-vtn-oar',
#    '//apps/faultmanagement:onos-apps-faultmanagement-oar',
#    '//apps/openstacknode:onos-apps-openstacknode-oar',
#    '//apps/cpman/app:onos-apps-cpman-app-oar',
#    '//apps/scalablegateway:onos-apps-scalablegateway-oar',
#    '//apps/castor:onos-apps-castor-oar',
#    '//apps/yms:onos-apps-yms-oar',
#    '//apps/ofagent:onos-apps-ofagent-oar',
#    '//apps/mappingmanagement:onos-apps-mappingmanagement-oar',
#    '//apps/config:onos-apps-config-oar',
#    '//apps/netconf/client:onos-apps-netconf-client-oar',
#    '//apps/tetopology:onos-apps-tetopology-oar',
#    '//apps/tetunnel:onos-apps-tetunnel-oar',
##    '//apps/tenbi/yangmodel:onos-apps-tenbi-yangmodel-feature',
##    '//apps/tenbi:onos-apps-tenbi-oar',
    '//protocols/restconf/server:onos-protocols-restconf-server-oar',
    '//apps/restconf:onos-apps-restconf-oar',
#    '//apps/flowspec-api:onos-apps-flowspec-api-oar',
#    '//apps/yang:onos-apps-yang-oar',
#    '//apps/yang-gui:onos-apps-yang-gui-oar',
#    '//apps/cord-support:onos-apps-cord-support-oar',
#    '//apps/network-troubleshoot:onos-apps-network-troubleshoot-oar',
#    '//apps/l3vpn:onos-apps-l3vpn-oar',
#    '//apps/openroadm:onos-apps-openroadm-oar',
#    '//apps/cfm:onos-apps-cfm-oar',
]

MODELS = [
#    '//models/demo:onos-models-demo-oar',
#    '//models/openroadm:onos-models-openroadm-oar',
#    '//models/l3vpn:onos-models-l3vpn-oar',
#    '//models/microsemi:onos-models-microsemi-oar'
]

APP_JARS = [
#    '//apps/cpman/api:onos-apps-cpman-api',
#    '//apps/routing-api:onos-apps-routing-api',
#    '//apps/dhcp/api:onos-apps-dhcp-api',
#    '//apps/dhcp/app:onos-apps-dhcp-app',
#    '//apps/dhcprelay:onos-apps-dhcprelay',
#    '//apps/fwd:onos-apps-fwd',
#    '//apps/iptopology-api:onos-apps-iptopology-api',
#    '//apps/openstacknode:onos-apps-openstacknode',
#    '//apps/routing/common:onos-apps-routing-common',
#    '//apps/vtn/vtnrsc:onos-apps-vtn-vtnrsc',
#    '//apps/vtn/sfcmgr:onos-apps-vtn-sfcmgr',
#    '//apps/vtn/vtnmgr:onos-apps-vtn-vtnmgr',
#    '//apps/vtn/vtnweb:onos-apps-vtn-vtnweb',
]

APPS = ONOS_DRIVERS + ONOS_PROVIDERS + ONOS_APPS + MODELS

[centec@compute1 onos]$ 
  • 更換一下central的URL
[centec@compute1 onos]$ vi tools/build/libgen/src/main/java/org/onosproject/libgen/AetherResolver.java 
...
public class AetherResolver {
   private static final String CENTRAL_URL = "http://maven.aliyun.com/nexus/content/groups/public/";
...
  • 更換過源后,需要onos-lib-gen,請耐心等待,尤其是apache-karaf
[centec@compute1 onos]$ ./tools/build/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
atomix mvn:io.atomix:atomix-all:jar:1.0.8
commons-codec mvn:commons-codec:commons-codec:jar:1.10
commons-collections mvn:commons-collections:commons-collections:jar:3.2.2
commons-configuration mvn:commons-configuration:commons-configuration:jar:1.10
commons-io mvn:commons-io:commons-io:jar:2.4
commons-lang mvn:commons-lang:commons-lang:jar:2.6
commons-lang3 mvn:org.apache.commons:commons-lang3:jar:3.5
commons-logging mvn:commons-logging:commons-logging:jar:1.2
commons-math3 mvn:org.apache.commons:commons-math3:jar:3.6.1
commons-pool mvn:commons-pool:commons-pool:jar:1.6
commons-beanutils mvn:commons-beanutils:commons-beanutils:jar:1.9.2
concurrent-trees mvn:com.googlecode.concurrent-trees:concurrent-trees:jar:2.6.0
easymock mvn:org.easymock:easymock:jar:3.4
antlr mvn:antlr:antlr:jar:2.7.7
error_prone_annotations mvn:com.google.errorprone:error_prone_annotations:jar:2.0.11
ganymed-ssh2 mvn:ch.ethz.ganymed:ganymed-ssh2:jar:262
gmetric4j mvn:info.ganglia.gmetric4j:gmetric4j:jar:1.0.10
gson mvn:com.google.code.gson:gson:jar:2.6.2
guava mvn:com.google.guava:guava:jar:22.0
guava-testlib mvn:com.google.guava:guava-testlib:jar:22.0
hamcrest-all mvn:org.hamcrest:hamcrest-all:jar:1.3
hk2-api mvn:org.glassfish.hk2:hk2-api:jar:2.5.0-b32
hk2-locator mvn:org.glassfish.hk2:hk2-locator:jar:2.5.0-b32
hk2-osgi-resource-locator mvn:org.glassfish.hk2:osgi-resource-locator:jar:1.0.1
hk2-utils mvn:org.glassfish.hk2:hk2-utils:jar:2.5.0-b32
httpclient-osgi mvn:org.apache.httpcomponents:httpclient-osgi:jar:4.5.1
httpcore-osgi mvn:org.apache.httpcomponents:httpcore-osgi:jar:4.4.4
influxdb-java mvn:org.influxdb:influxdb-java:jar:2.2
retrofit mvn:com.squareup.retrofit:retrofit:jar:1.9.0
okhttp mvn:com.squareup.okhttp:okhttp:jar:2.4.0
okio mvn:com.squareup.okio:okio:jar:1.4.0
jackson-annotations mvn:com.fasterxml.jackson.core:jackson-annotations:jar:2.8.6
jackson-core mvn:com.fasterxml.jackson.core:jackson-core:jar:2.8.6
jackson-databind mvn:com.fasterxml.jackson.core:jackson-databind:jar:2.8.6
javax.annotation-api mvn:javax.annotation:javax.annotation-api:jar:1.2
javax.inject mvn:org.glassfish.hk2.external:javax.inject:jar:2.5.0-b32
javax.ws.rs-api mvn:javax.ws.rs:javax.ws.rs-api:jar:2.0.1
jersey-client mvn:org.glassfish.jersey.core:jersey-client:jar:2.25.1
jersey-common mvn:org.glassfish.jersey.core:jersey-common:jar:2.25.1
jersey-container-jetty-http mvn:org.glassfish.jersey.containers:jersey-container-jetty-http:jar:2.25.1
jersey-container-servlet mvn:org.glassfish.jersey.containers:jersey-container-servlet:jar:2.25.1
jersey-container-servlet-core mvn:org.glassfish.jersey.containers:jersey-container-servlet-core:jar:2.25.1
jersey-guava mvn:org.glassfish.jersey.bundles.repackaged:jersey-guava:jar:2.25.1
jersey-media-multipart mvn:org.glassfish.jersey.media:jersey-media-multipart:jar:2.25.1
jersey-server mvn:org.glassfish.jersey.core:jersey-server:jar:2.25.1
jersey-test-framework-core mvn:org.glassfish.jersey.test-framework:jersey-test-framework-core:jar:2.25.1
jersey-test-framework-jetty mvn:org.glassfish.jersey.test-framework.providers:jersey-test-framework-provider-jetty:jar:2.25.1
jetty-util mvn:org.eclipse.jetty:jetty-util:jar:9.2.21.v20170120
jetty-websocket mvn:org.eclipse.jetty:jetty-websocket:jar:8.1.19.v20160209
jetty-server mvn:org.eclipse.jetty:jetty-server:jar:9.2.21.v20170120
jetty-continuation mvn:org.eclipse.jetty:jetty-continuation:jar:9.2.21.v20170120
jetty-http mvn:org.eclipse.jetty:jetty-http:jar:9.2.21.v20170120
jetty-io mvn:org.eclipse.jetty:jetty-io:jar:9.2.21.v20170120
javax.servlet-api mvn:javax.servlet:javax.servlet-api:jar:3.1.0
joda-time mvn:joda-time:joda-time:jar:2.9.3
jsch mvn:com.jcraft:jsch:jar:0.1.53
jsr305 mvn:com.google.code.findbugs:jsr305:jar:3.0.1
junit mvn:junit:junit:jar:4.12
kryo mvn:com.esotericsoftware:kryo:jar:4.0.0
mapdb mvn:org.mapdb:mapdb:jar:1.0.9
metrics-core mvn:io.dropwizard.metrics:metrics-core:jar:3.1.0
metrics-ganglia mvn:io.dropwizard.metrics:metrics-ganglia:jar:3.1.2
metrics-graphite mvn:io.dropwizard.metrics:metrics-graphite:jar:3.1.2
metrics-influxdb mvn:com.izettle:metrics-influxdb:jar:1.1.1
metrics-json mvn:io.dropwizard.metrics:metrics-json:jar:3.1.0
minimal-json mvn:com.eclipsesource.minimal-json:minimal-json:jar:0.9.4
minlog mvn:com.esotericsoftware:minlog:jar:1.3.0
netty mvn:io.netty:netty:jar:3.10.5.Final
netty-buffer mvn:io.netty:netty-buffer:jar:4.1.5.Final
netty-codec mvn:io.netty:netty-codec:jar:4.1.5.Final
netty-common mvn:io.netty:netty-common:jar:4.1.5.Final
netty-handler mvn:io.netty:netty-handler:jar:4.1.5.Final
netty-transport mvn:io.netty:netty-transport:jar:4.1.5.Final
netty-transport-native-epoll mvn:io.netty:netty-transport-native-epoll:jar:4.1.5.Final
netty-resolver mvn:io.netty:netty-resolver:jar:4.1.5.Final
catalyst-concurrent mvn:io.atomix.catalyst:catalyst-concurrent:jar:1.2.1
catalyst-netty mvn:io.atomix.catalyst:catalyst-netty:jar:1.2.1
catalyst-transport mvn:io.atomix.catalyst:catalyst-transport:jar:1.2.1
objenesis mvn:org.objenesis:objenesis:jar:2.2
openflowj mvn:org.onosproject:openflowj:jar:0.9.9.onos
org.apache.felix.scr mvn:org.apache.felix:org.apache.felix.scr:jar:1.8.2
org.apache.felix.scr.annotations mvn:org.apache.felix:org.apache.felix.scr.annotations:jar:1.9.12
org.apache.karaf.features.core mvn:org.apache.karaf.features:org.apache.karaf.features.core:jar:3.0.8
org.apache.karaf.shell.console mvn:org.apache.karaf.shell:org.apache.karaf.shell.console:jar:3.0.8
org.apache.karaf.system.core mvn:org.apache.karaf.system:org.apache.karaf.system.core:jar:3.0.8
org.apache.servicemix.bundles.snmp4j mvn:org.apache.servicemix.bundles:org.apache.servicemix.bundles.snmp4j:jar:2.3.4_1
org.osgi.compendium mvn:org.osgi:org.osgi.compendium:jar:5.0.0
osgi-core mvn:org.osgi:org.osgi.core:jar:5.0.0
reflectasm mvn:com.esotericsoftware:reflectasm:jar:1.11.0
remotetea-oncrpc mvn:org.acplt.remotetea:remotetea-oncrpc:jar:1.1.3
rrd4j mvn:org.rrd4j:rrd4j:jar:2.2
javassist mvn:org.javassist:javassist:jar:3.20.0-GA
mimepull mvn:org.jvnet.mimepull:mimepull:jar:1.9.6
servlet-api mvn:javax.servlet:servlet-api:jar:2.5
slf4j-api mvn:org.slf4j:slf4j-api:jar:1.7.21
slf4j-jdk14 mvn:org.slf4j:slf4j-jdk14:jar:1.7.21
typesafe-config mvn:com.typesafe:config:jar:1.2.1
validation-api mvn:javax.validation:validation-api:jar:1.1.0.Final
checkstyle mvn:com.puppycrawl.tools:checkstyle:jar:6.19
apache-karaf 
op
http://onlab.vicci.org/onos/third-party/apache-karaf-3.0.8-offline-20170202.tar.gz
bndlib mvn:biz.aQute.bnd:biz.aQute.bndlib:jar:3.1.0
bndexe http://onlab.vicci.org/onos/third-party/biz.aQute.bnd-3.1.0.jar
libthrift mvn:org.apache.thrift:libthrift:jar:0.9.3
qdox mvn:com.thoughtworks.qdox:qdox:jar:2.0-M3
org.apache.felix.scr.bnd https://oss.sonatype.org/content/repositories/snapshots/org/onosproject/org.apache.felix.scr.bnd/1.4.1-SNAPSHOT/org.apache.felix.scr.bnd-1.4.1-20160328.235003-2.jar
snmp-core mvn:org.onosproject:snmp-core:jar:1.3-20161021.1
bti7000 mvn:org.onosproject:mibbler-mibs-bti7000:jar:1.0-20151221.1
mibs-net-snmp mvn:org.onosproject:mibbler-mibs-net-snmp:jar:1.0-20151221.1
mibs-rfc mvn:org.onosproject:mibbler-mibs-rfc:jar:1.0-20151221.1
openstack4j-core mvn:org.pacesys:openstack4j-core:jar:2.11
openstack4j-http-connector mvn:org.pacesys.openstack4j.connectors:openstack4j-http-connector:jar:2.11
openstack4j-httpclient mvn:org.pacesys.openstack4j.connectors:openstack4j-httpclient:jar:2.11
onos-yang-datamodel mvn:org.onosproject:onos-yang-datamodel:jar:1.11
onos-yang-maven-plugin mvn:org.onosproject:onos-yang-maven-plugin:jar:1.11
onos-yang-utils-generator mvn:org.onosproject:onos-yang-utils-generator:jar:1.11
onos-yang-model mvn:org.onosproject:onos-yang-model:jar:2.1
onos-yang-compiler-api mvn:org.onosproject:onos-yang-compiler-api:jar:2.1
onos-yang-runtime mvn:org.onosproject:onos-yang-runtime:jar:2.1
onos-yang-serializers-json mvn:org.onosproject:onos-yang-serializers-json:jar:2.1
onos-yang-serializers-xml mvn:org.onosproject:onos-yang-serializers-xml:jar:2.1
onos-yang-serializers-utils mvn:org.onosproject:onos-yang-serializers-utils:jar:2.1
org.apache.servicemix.bundles.dom4j mvn:org.apache.servicemix.bundles:org.apache.servicemix.bundles.dom4j:jar:1.6.1_5
openflowj-3.0 https://oss.sonatype.org/content/repositories/snapshots/org/projectfloodlight/openflowj/3.0.0-SNAPSHOT/openflowj-3.0.0-20161029.095322-40.jar
plexus-utils mvn:org.codehaus.plexus:plexus-utils:jar:3.0.24
sshd-core mvn:org.apache.sshd:sshd-core:jar:1.4.0

Finish writing lib/BUCK
[centec@compute1 onos]$ 
  • 開始編譯打包,op=onos-package
[centec@compute1 onos]$ op
Updating Buck...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 44.0M  100 44.0M    0     0  22238      0  0:34:37  0:34:36  0:00:01 30834
Archive:  cache/buck-v2017.05.25.01.zip
  inflating: buck                    
 extracting: .buck_version           
   creating: plugins/
  inflating: plugins/onos.jar        
  inflating: plugins/yang.jar        
Successfully updated Buck in /home/centec/Applications/onos/bin/buck to buck-v2017.05.25.01.zip

Not using buckd because NO_BUCKD is set.
[-] PROCESSING BUCK FILES...FINISHED 3.0s [100%] \U0001f433  New buck daemon
[+] DOWNLOADING... (0.00 B/S, TOTAL: 0.00 B, 0 Artifacts)
[+] BUILDING...2m33.6s [100%] (363/363 JOBS, 287 UPDATED, 287 [79.1%] CACHE MISS)
 |=> IDLE
 |=> IDLE
The outputs are:
//tools/package:onos-package buck-out/gen/tools/package/onos-package/onos.tar.gz
-rw-rw-r-- 1 centec centec 123269856 Nov 16 05:29 /tmp/onos-1.10.8.centec.tar.gz
2071771737 123269856 /tmp/onos-1.10.8.centec.tar.gz
[centec@compute1 onos]$ 
  • 編譯成功后,可以找到打包好的文件
[centec@compute1 onos]$ cd buck-out/gen/tools/package/onos-package
[centec@compute1 onos-package]$ ll
total 120384
-rw-rw-r-- 1 centec centec 123269856 Nov 16 05:29 onos.tar.gz
[centec@compute1 onos-package]$

運行

  • 將onos.tar.gz放到需要部署PC的/opt,解壓縮,改名為onos/
root@centec:/opt# tar -zxvf onos.tar.gz
root@centec:/opt# mv onos-1.10.8 onos
  • 運行ONOS
root@centec:/opt# /opt/onos/bin/onos-service start
Welcome to Open Network Operating System (ONOS)!
     ____  _  ______  ____     
    / __ \/ |/ / __ \/ __/   
   / /_/ /    / /_/ /\ \     
   \____/_/|_/\____/___/     
                               
Documentation: wiki.onosproject.org      
Tutorials:     tutorials.onosproject.org 
Mailing lists: lists.onosproject.org     

Come help out! Find out how at: contribute.onosproject.org 

Hit '<tab>' for a list of available commands
and '[cmd] --help' for help on a specific command.
Hit '<ctrl-d>' or type 'system:shutdown' or 'logout' to shutdown ONOS.

onos> 

一些問題的記錄

  • 開VNC的時候,最好把有道詞典關掉,否則會在VNC的終端莫名其妙加Ctl+C
  • buck加速,先查看onos-buck文件
[centec@compute1 build]$ pwd
/home/centec/Applications/onos/tools/build
[centec@compute1 build]$ cat onos-buck
#!/bin/bash
# -----------------------------------------------------------------------------
# Runs the custom version of Buck required by ONOS.
# -----------------------------------------------------------------------------

set -e

BUCK_URL="http://repo1.maven.org/maven2/org/onosproject/onos-buck/v2018.01.10.02/buck-v2018.01.10.02.zip"
BUCK_SHA="04ac8754c6ca5957ac68a75544d1bd0c9d17b908"

每次buck都會從上面的網址下載這個zip文件,可以先把它下載好,然后修改BUCK_URL為本地文件地址

[centec@compute1 Applications]$ sha1sum buck-v2018.02.09.01.zip 
45d8bd28f441991257babf89f7a317edb3a2b536  buck-v2018.02.09.01.zip
[centec@compute1 build]$ vi onos-buck
BUCK_URL="file:///home/centec/Applications/buck-v2018.02.09.01.zip"
BUCK_SHA="45d8bd28f441991257babf89f7a317edb3a2b536"
  • 如果onos-lib-gen或是op出錯,可以查看deps.json
[centec@compute1 onos]$ cat ./lib/deps.json
{
  "libraries": {
    "COMPILE": [
      "joda-time",
      "commons-configuration",
      "commons-logging",
      "commons-collections",
      "commons-lang",
      "commons-lang3",
      "commons-io",
      "commons-pool",
      "objenesis",
      "guava",
      "netty",
      "netty-common",
      "minimal-json",
      "kryo",
      "reflectasm",
      "asm",
      "minlog",
      "metrics-core",
      "metrics-json",
      "slf4j-api",
      "osgi-core",
      "org.osgi.compendium",
      { "name": "org.apache.felix.scr.annotations", "compile_only": true },
      "org.apache.felix.scr",
      "jackson-annotations",
      "jackson-core",
      "jackson-databind",
      "org.apache.karaf.features.core",
      "org.apache.karaf.system.core",
      { "name": "jsr305", "compile_only": true },
      "onos-yang-datamodel",
      "onos-yang-utils-generator",
      "onos-yang-model",
      "onos-yang-compiler-api",
      "onos-yang-maven-plugin",
      "onos-yang-serializers-json",
      "onos-yang-serializers-xml",
      "onos-yang-serializers-utils",
      "org.apache.servicemix.bundles.dom4j"
    ],
    "CORE_DEPS": [
      ":COMPILE",
      "http://core/api:onos-api",
      "http://utils/misc:onlab-misc",
      "http://utils/osgi:onlab-osgi"
    ],
    "TEST": [
      "junit",
      "easymock",
      "hamcrest-all",
      "guava-testlib",
      "http://utils/junit:onlab-junit"
    ],
    "TEST_ADAPTERS": [
      ":TEST",
      "http://core/common:onos-core-common",
      "http://core/api:onos-api-tests",
      "http://core/common:onos-core-common-tests"
    ],
    "TEST_REST": [
      ":TEST_ADAPTERS",
      "jersey-client",
      "jersey-server",
      "jersey-common",
      "jersey-test-framework-core",
      "jersey-test-framework-jetty",
      "jersey-container-jetty-http",
      "jetty-continuation",
      "jetty-http",
      "jetty-server",
      "jetty-io",
      "jetty-util",
      "javax.servlet-api",
      "jersey-guava",
      "hk2-api",
      "hk2-locator",
      "hk2-utils",
      "javax.inject",
      "hk2-osgi-resource-locator",
      "javax.annotation-api",
      "validation-api",
      "http://core/common:onos-core-common",
      "http://core/api:onos-api-tests",
      "http://core/common:onos-core-common-tests",
      "http://utils/osgi:onlab-osgi-tests"
    ]
  },

  "artifacts": {
    "aopalliance-repackaged": "mvn:org.glassfish.hk2.external:aopalliance-repackaged:2.5.0-b32",
    "amqp-client": "mvn:com.rabbitmq:amqp-client:jar:3.6.1",
    "asm": "mvn:org.ow2.asm:asm:5.0.4",
    "atomix": "mvn:io.atomix:atomix-all:1.0.8",
    "commons-codec": "mvn:commons-codec:commons-codec:1.10",
    "commons-collections": "mvn:commons-collections:commons-collections:3.2.2",
    "commons-configuration": "mvn:commons-configuration:commons-configuration:1.10",
    "commons-io": "mvn:commons-io:commons-io:2.4",
    "commons-lang": "mvn:commons-lang:commons-lang:2.6",
    "commons-lang3": "mvn:org.apache.commons:commons-lang3:3.5",
    "commons-logging": "mvn:commons-logging:commons-logging:1.2",
    "commons-math3": "mvn:org.apache.commons:commons-math3:3.6.1",
    "commons-pool": "mvn:commons-pool:commons-pool:1.6",
    "commons-beanutils": "mvn:commons-beanutils:commons-beanutils:1.9.2",
    "concurrent-trees": "mvn:com.googlecode.concurrent-trees:concurrent-trees:2.6.0",
    "easymock": "mvn:org.easymock:easymock:3.4",
    "antlr": "mvn:antlr:antlr:2.7.7",
    "error_prone_annotations": "mvn:com.google.errorprone:error_prone_annotations:2.0.11",
    "ganymed-ssh2": "mvn:ch.ethz.ganymed:ganymed-ssh2:262",
    "gmetric4j": "mvn:info.ganglia.gmetric4j:gmetric4j:1.0.10",
    "gson": "mvn:com.google.code.gson:gson:jar:2.6.2",
    "guava": "mvn:com.google.guava:guava:22.0",
    "guava-testlib": "mvn:com.google.guava:guava-testlib:22.0",
    "hamcrest-all": "mvn:org.hamcrest:hamcrest-all:1.3",
    "hk2-api": "mvn:org.glassfish.hk2:hk2-api:2.5.0-b32",
    "hk2-locator": "mvn:org.glassfish.hk2:hk2-locator:2.5.0-b32",
    "hk2-osgi-resource-locator": "mvn:org.glassfish.hk2:osgi-resource-locator:1.0.1",
    "hk2-utils": "mvn:org.glassfish.hk2:hk2-utils:2.5.0-b32",
    "httpclient-osgi": "mvn:org.apache.httpcomponents:httpclient-osgi:4.5.1",
    "httpcore-osgi": "mvn:org.apache.httpcomponents:httpcore-osgi:4.4.4",
    "influxdb-java": "mvn:org.influxdb:influxdb-java:2.2",
    "retrofit": "mvn:com.squareup.retrofit:retrofit:1.9.0",
    "okhttp": "mvn:com.squareup.okhttp:okhttp:2.4.0",
    "okio": "mvn:com.squareup.okio:okio:1.4.0",
    "jackson-annotations": "mvn:com.fasterxml.jackson.core:jackson-annotations:2.8.6",
    "jackson-core": "mvn:com.fasterxml.jackson.core:jackson-core:2.8.6",
    "jackson-databind": "mvn:com.fasterxml.jackson.core:jackson-databind:2.8.6",
    "javax.annotation-api": "mvn:javax.annotation:javax.annotation-api:1.2",
    "javax.inject": "mvn:org.glassfish.hk2.external:javax.inject:2.5.0-b32",
    "javax.ws.rs-api": "mvn:javax.ws.rs:javax.ws.rs-api:2.0.1",
    "jersey-client": "mvn:org.glassfish.jersey.core:jersey-client:2.25.1",
    "jersey-common": "mvn:org.glassfish.jersey.core:jersey-common:2.25.1",
    "jersey-container-jetty-http": "mvn:org.glassfish.jersey.containers:jersey-container-jetty-http:2.25.1",
    "jersey-container-servlet": "mvn:org.glassfish.jersey.containers:jersey-container-servlet:2.25.1",
    "jersey-container-servlet-core": "mvn:org.glassfish.jersey.containers:jersey-container-servlet-core:2.25.1",
    "jersey-guava": "mvn:org.glassfish.jersey.bundles.repackaged:jersey-guava:2.25.1",
    "jersey-media-multipart": "mvn:org.glassfish.jersey.media:jersey-media-multipart:2.25.1",
    "jersey-server": "mvn:org.glassfish.jersey.core:jersey-server:2.25.1",
    "jersey-test-framework-core": "mvn:org.glassfish.jersey.test-framework:jersey-test-framework-core:2.25.1",
    "jersey-test-framework-jetty": "mvn:org.glassfish.jersey.test-framework.providers:jersey-test-framework-provider-jetty:2.25.1",
    "jetty-util": "mvn:org.eclipse.jetty:jetty-util:9.2.21.v20170120",
    "jetty-websocket": "mvn:org.eclipse.jetty:jetty-websocket:8.1.19.v20160209",
    "jetty-server": "mvn:org.eclipse.jetty:jetty-server:9.2.21.v20170120",
    "jetty-continuation": "mvn:org.eclipse.jetty:jetty-continuation:9.2.21.v20170120",
    "jetty-http": "mvn:org.eclipse.jetty:jetty-http:9.2.21.v20170120",
    "jetty-io": "mvn:org.eclipse.jetty:jetty-io:9.2.21.v20170120",
    "javax.servlet-api": "mvn:javax.servlet:javax.servlet-api:3.1.0",
    "joda-time": "mvn:joda-time:joda-time:2.9.3",
    "jsch": "mvn:com.jcraft:jsch:0.1.53",
    "jsr305": "mvn:com.google.code.findbugs:jsr305:3.0.1",
    "junit": "mvn:junit:junit:4.12",
    "kryo": "mvn:com.esotericsoftware:kryo:4.0.0",
    "mapdb": "mvn:org.mapdb:mapdb:1.0.9",
    "metrics-core": "mvn:io.dropwizard.metrics:metrics-core:3.1.0",
    "metrics-ganglia": "mvn:io.dropwizard.metrics:metrics-ganglia:3.1.2",
    "metrics-graphite": "mvn:io.dropwizard.metrics:metrics-graphite:3.1.2",
    "metrics-influxdb": "mvn:com.izettle:metrics-influxdb:1.1.1",
    "metrics-json": "mvn:io.dropwizard.metrics:metrics-json:3.1.0",
    "minimal-json": "mvn:com.eclipsesource.minimal-json:minimal-json:0.9.4",
    "minlog": "mvn:com.esotericsoftware:minlog:1.3.0",
    "netty": "mvn:io.netty:netty:3.10.5.Final",
    "netty-buffer": "mvn:io.netty:netty-buffer:4.1.5.Final",
    "netty-codec": "mvn:io.netty:netty-codec:4.1.5.Final",
    "netty-common": "mvn:io.netty:netty-common:4.1.5.Final",
    "netty-handler": "mvn:io.netty:netty-handler:4.1.5.Final",
    "netty-transport": "mvn:io.netty:netty-transport:4.1.5.Final",
    "netty-transport-native-epoll": "mvn:io.netty:netty-transport-native-epoll:4.1.5.Final",
    "netty-resolver": "mvn:io.netty:netty-resolver:4.1.5.Final",
    "catalyst-concurrent": "mvn:io.atomix.catalyst:catalyst-concurrent:1.2.1",
    "catalyst-netty": "mvn:io.atomix.catalyst:catalyst-netty:1.2.1",
    "catalyst-transport": "mvn:io.atomix.catalyst:catalyst-transport:1.2.1",
    "objenesis": "mvn:org.objenesis:objenesis:2.2",
    "openflowj": "mvn:org.onosproject:openflowj:0.9.9.onos",
    "org.apache.felix.scr": "mvn:org.apache.felix:org.apache.felix.scr:1.8.2",
    "org.apache.felix.scr.annotations": "mvn:org.apache.felix:org.apache.felix.scr.annotations:1.9.12",
    "org.apache.karaf.features.core": "mvn:org.apache.karaf.features:org.apache.karaf.features.core:3.0.8",
    "org.apache.karaf.shell.console": "mvn:org.apache.karaf.shell:org.apache.karaf.shell.console:3.0.8",
    "org.apache.karaf.system.core": "mvn:org.apache.karaf.system:org.apache.karaf.system.core:3.0.8",
    "org.apache.servicemix.bundles.snmp4j": "mvn:org.apache.servicemix.bundles:org.apache.servicemix.bundles.snmp4j:2.3.4_1",
    "org.osgi.compendium": "mvn:org.osgi:org.osgi.compendium:5.0.0",
    "osgi-core": "mvn:org.osgi:org.osgi.core:5.0.0",
    "reflectasm": "mvn:com.esotericsoftware:reflectasm:1.11.0",
    "remotetea-oncrpc": "mvn:org.acplt.remotetea:remotetea-oncrpc:1.1.3",
    "rrd4j": "mvn:org.rrd4j:rrd4j:2.2",
    "javassist": "mvn:org.javassist:javassist:3.20.0-GA", //transitive
    "mimepull": "mvn:org.jvnet.mimepull:mimepull:1.9.6", //transitive
    "servlet-api": "mvn:javax.servlet:servlet-api:2.5",
    "slf4j-api": "mvn:org.slf4j:slf4j-api:1.7.21",
    "slf4j-jdk14": "mvn:org.slf4j:slf4j-jdk14:1.7.21",
    "typesafe-config": "mvn:com.typesafe:config:1.2.1",
    "validation-api": "mvn:javax.validation:validation-api:1.1.0.Final",
    "checkstyle": "mvn:com.puppycrawl.tools:checkstyle:6.19",
    "apache-karaf": "http://onlab.vicci.org/onos/third-party/apache-karaf-3.0.8-offline-20170202.tar.gz",
    "bndlib": "mvn:biz.aQute.bnd:biz.aQute.bndlib:jar:3.1.0",
    "bndexe": "http://onlab.vicci.org/onos/third-party/biz.aQute.bnd-3.1.0.jar",
    "libthrift": "mvn:org.apache.thrift:libthrift:0.9.3",
    "qdox": "mvn:com.thoughtworks.qdox:qdox:2.0-M3",
    "org.apache.felix.scr.bnd": {
      "uri": "mvn:org.onosproject:org.apache.felix.scr.bnd:1.4.1-SNAPSHOT",
      "repo": "https://oss.sonatype.org/content/repositories/snapshots"
    },
    "snmp-core": "mvn:org.onosproject:snmp-core:1.3-20161021.1",
    "bti7000": "mvn:org.onosproject:mibbler-mibs-bti7000:1.0-20151221.1",
    "mibs-net-snmp": "mvn:org.onosproject:mibbler-mibs-net-snmp:1.0-20151221.1",
    "mibs-rfc": "mvn:org.onosproject:mibbler-mibs-rfc:1.0-20151221.1",
    // Openstack4j related jars
    "openstack4j-core": "mvn:org.pacesys:openstack4j-core:2.11",
    "openstack4j-http-connector": "mvn:org.pacesys.openstack4j.connectors:openstack4j-http-connector:2.11",
    "openstack4j-httpclient": "mvn:org.pacesys.openstack4j.connectors:openstack4j-httpclient:2.11",
    "onos-yang-datamodel": "mvn:org.onosproject:onos-yang-datamodel:1.11",
    "onos-yang-maven-plugin": "mvn:org.onosproject:onos-yang-maven-plugin:1.11",
    "onos-yang-utils-generator": "mvn:org.onosproject:onos-yang-utils-generator:1.11",
    "onos-yang-model":"mvn:org.onosproject:onos-yang-model:2.1",
    "onos-yang-compiler-api":"mvn:org.onosproject:onos-yang-compiler-api:2.1",
    "onos-yang-runtime":"mvn:org.onosproject:onos-yang-runtime:2.1",
    "onos-yang-serializers-json":"mvn:org.onosproject:onos-yang-serializers-json:2.1",
    "onos-yang-serializers-xml":"mvn:org.onosproject:onos-yang-serializers-xml:2.1",
    "onos-yang-serializers-utils":"mvn:org.onosproject:onos-yang-serializers-utils:2.1",
    "org.apache.servicemix.bundles.dom4j":"mvn:org.apache.servicemix.bundles:org.apache.servicemix.bundles.dom4j:1.6.1_5",
    "openflowj-3.0": {
      "uri": "mvn:org.projectfloodlight:openflowj:3.0.0-SNAPSHOT",
      "repo": "https://oss.sonatype.org/content/repositories/snapshots"
    },
    "plexus-utils": "mvn:org.codehaus.plexus:plexus-utils:3.0.24",
    "sshd-core": "mvn:org.apache.sshd:sshd-core:1.4.0"
  }
}
[centec@compute1 onos]$ 

很大可能是因為下載apache-karaf超時導致。可以先下載帶本地,然后啟動一個http文件服務,將相關網址替換掉,例如

"apache-karaf": "http://127.0.0.1/apache-karaf-3.0.8-offline-20170202.tar.gz",

其它的有網址對應的文件也可以這樣加速,記得提更換后一定要記得一定要 ./tools/build/onos-lib-gen

  • 如果編譯時候還有報錯,在modules.defs中將相關內容用"http://"注釋掉
  • 做了修改,最好是刪除之前的編譯結果重新編譯
[centec@compute1 onos]$ rm -fr buck-out/
[centec@compute1 onos]$ op
  • 如果是開發的同學, 需要反復編譯的,還是建議用Nexus Repository Manager搭建一個本地的maven庫,然后把上面用到的下載到本地后再上傳到nexus,網址換成本地





當然,修改后需要./tools/build/onos-lib-gen

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,505評論 6 533
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,556評論 3 418
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,463評論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,009評論 1 312
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,778評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,218評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,281評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,436評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,969評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,795評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,993評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,537評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,229評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,659評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,917評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,687評論 3 392
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,990評論 2 374

推薦閱讀更多精彩內容