https://github.com/rust-rocksdb/rust-rocksdb/pull/166 μ μ΄λ―Έ ꡬμΆλ rockdb μΈμ€ν΄μ€(μ: μμ€ν
μ 체μ μ€μΉλ μΈμ€ν΄μ€)μ μ°κ²°νλ κΈ°λ₯μ λμ
νμ΅λλ€. κ·Έλ¬λ κ²μ κ²½λ‘λ₯Ό λͺ
μμ μΌλ‘ μ 곡ν΄μΌ ν©λλ€( ROCKSDB_LIB_DIR
, SNAPPY_LIB_DIR
λ±). rocksdb-sys
κ° νμ€ OS μμΉμμλ rocksdb
λ° snappy
λ₯Ό μ¬μ©ν μ μλμ§ νμΈνλ©΄ μ λ§ κΉλν κ²μ
λλ€(μλ https://github.com/rust- rockdb/rust-rocksdb/pull/166#issuecomment-389564525). μ΄λ¬ν λΌμ΄λΈλ¬λ¦¬κ° μμ€ν
μ 체μ μ€μΉλμ΄ μμμλ λΆκ΅¬νκ³ λΉλν λλ§λ€ μ¬μ©μ μ μ νκ²½ λ³μλ₯Ό μ λ¬ν΄μΌ νλ κ²μ μ½κ° λΆνν μΌμ
λλ€.
λλ ROCKSDB_USE_SYSTEM=1
λ§μΌλ‘λ ν λ¨κ³ λ μ¬λΌκ° μ μμ΅λλ€.
μ΄μ κ΄λ ¨νμ¬ μ΄λ¬ν νκ²½ λ³μκ° README λ° λ¬Έμμ λ¬Έμνλμ΄ μμΌλ©΄ μ’μ κ²μ λλ€!
μ΄κ²μ μ λ§ μ μ©ν κ²μ λλ€!
openssl-sys
λν λΉλ νμΌμ μ¬κΈ°μμ μκ°μ μ»μ μ μλ μ’μ μ₯μμΌ μ μμ΅λλ€.
λλ μ΄κ²μ λ Έλ ₯νκ³ μλ€
@lovesegfault μ§ν μν©μ μ΄λ»μ΅λκΉ? rockdb λΉλλ νμ¬ λ΄ νλ‘μ νΈ λΉλ μκ°μ κ°μ₯ ν° λΆλΆμ λλ€ :cry:
μ§κΈ μμ€ν λΌμ΄λΈλ¬λ¦¬λ₯Ό μ¬μ©νλλ° μ΄λ€ λ¬Έμ κ° μμ΅λκΉ? AFAIK, pkg-config λλ env λ³μλ₯Ό ν΅ν΄ μ μλν©λλ€.
@aleksuss κΈμ, νμ¬ master
μμ librocksdb-sys
λ₯Ό λΉλνλ €κ³ νλ©΄ μμ€ν
μ 체 λΌμ΄λΈλ¬λ¦¬λ‘ rockdbλ₯Ό μ€μΉνμμλ λΆκ΅¬νκ³ μ¬μ ν λ§μ C++ μ»΄νμΌλ¬ μΈμ€ν΄μ€λ₯Ό νμ μν΅λλ€.
$ ls /usr/lib/librocksdb.so*
/usr/lib/librocksdb.so /usr/lib/librocksdb.so.6 /usr/lib/librocksdb.so.6.5.3
μ¬λ¬΄μ€μμ λ€λ₯Έ μΌμ μ°μ μνκΈ° λλ¬Έμ λλ μ΄ μΌμ κ·Έλ§λμμ΅λλ€. μμΌλ‘ 2μ£Όμ λ ν΄κ°λ₯Ό κ°λλ°, λ€μ λ°μλ³Ό μ μκΈ°λ₯Ό :)
#354λ λΌμ΄λΈλ¬λ¦¬ λ°κ²¬ λ§λ²μ μΆκ°νμ§ μμ΅λλ€. λλΆλΆ RocksDBκ° pkg-config λλ κΈ°ν μ μ¬ν λꡬλ₯Ό μ§μνμ§ μκΈ° λλ¬Έμ λλ€.
μμΌλ‘λ ν΄λΉ envvarκ° μ€μ λμ§ μμ κ²½μ° μΌλ°μ μΈ μμΉμμ λΌμ΄λΈλ¬λ¦¬λ₯Ό μ°Ύλ κ°λ¨ν μ μ μ½κ² μΆκ°ν μ μμ΅λλ€.
μ, μκ² μ΅λλ€. ν¬λ μ΄νΈκ° _νμ¬_ μμ€ν
μ 체μ RocksDBλ₯Ό μ°Ύλ λ° μ€ν¨νλλΌλ κ³μ κ·Έλ΄ κ²μ
λλ€. 무μμ΄ μ€ν¨νκ² λ§λλμ§ κΆκΈν©λλ€. λ¨μ§ νΈνλλ λ²μ μ΄ μλλΌ .so
μ λμΌν λ²μ μ _μ νν_ μ°Ύλ κ²μΌκΉμ?
κΈμ, νμ¬ ν¬λ μ΄νΈλ μμ€ν
rockdb λ° κ³΅κΈμ
체λ₯Ό μ°Ύμ μ μλ κ²½μ° μ°ΎμΌλ €κ³ μλν©λλ€. #354λ κΈ°λ₯μ ν΅ν΄ 곡κΈμ
체 μ¬λΆλ₯Ό μ ννλ€λ μλ―Έμ
λλ€. 곡κΈμ
μ²΄κ° μλ κ²½μ° ROCKSDB_LIB_DIR
μ€μ ν΄μΌ νλ©° κ·Έλ μ§ μμΌλ©΄ μ μ©ν μ€λ₯ λ©μμ§λ₯Ό λ°κ² λ©λλ€.
envvarκ° μ€μ λμ§ μμ κ²½μ° λΌμ΄λΈλ¬λ¦¬λ₯Ό μ°ΎμΌλ €κ³ μλνλ νμ μ‘°μΉλ₯Ό μΆκ°ν μ μμ΅λλ€. μ λ μΌλ°μ μΌλ‘ ν΄λΉ λμμ ν¬μ΄ μλλλ€.
@lovesegfault λ΄κ° μ λλ‘ μ½κ³ μλμ§ νμ€νμ§ μμ΅λκΉ? κ·Έλμ, νμ¬ ROCKSDB_LIB_DIR
κ° μ€μ λμ΄ μμ§ _μλ€λ©΄, κ·Έλ¬λ©΄ rockdb _will_ vendor? κ·Έλ¦¬κ³ μμ€ν
μ 체 libμ μ°κ²°νλ _μ μΌν_ λ°©λ²μ ROCKSDB_LIB_DIR
.
κΆκΈν©λλ€. κΈ°λ³Έμ μΌλ‘ μμ€ν λΌμ΄λΈλ¬λ¦¬λ₯Ό μ¬μ©νλ κ²μ λ°λνλ μ΄μ λ 무μμ λκΉ? 곡κΈμ 체λ _κ±°λν_ μ»΄νμΌ μκ°μ κ°μ Έμ€λλ°, μ₯μ μ΄ λ¬΄μμΈμ§ μ λͺ¨λ₯΄κ² μ΅λλ€.
@joonhoo
νμ¬ νλ
librocksdb-sys
λ ROCKSDB_LIB_DIR
λ³μλ₯Ό μ°Ύμ΅λλ€. μ€μ λμ΄ μμΌλ©΄ ν΄λΉ λλ ν 리μ .so
μ μ°κ²°λ©λλ€. μ€μ λμ§ μμ κ²½μ° λμμΌλ‘ rockdbλ₯Ό 곡κΈν©λλ€. _exact_ κ°μ λμμ κ°μ μμΆ λΌμ΄λΈλ¬λ¦¬λ₯Ό λ°μ bzip2
λ³μμ κ±°κΈ° BZIP2_LIB_DIR
, μλ₯Ό λ€λ©΄.
μλ‘μ΄ νλ
librocksdb-sys
μλ μλ‘μ΄(κΈ°λ³Έ) κΈ°λ₯ vendor
μμ΅λλ€. ν΄λΉ κΈ°λ₯μ΄ νμ±νλλ©΄ μ΄λ€ λ°©μμΌλ‘λ μμ€ν
λΌμ΄λΈλ¬λ¦¬λ₯Ό μ°ΎμΌλ €κ³ νμ§ μμ΅λλ€. λμ rocksdb
λ° λͺ¨λ μμΆ λΌμ΄λΈλ¬λ¦¬λ₯Ό 곡κΈν©λλ€.
vendor
κΈ°λ₯μ΄ νμ±ν λμ§ μμ κ²½μ° librocksdb-sys
λ μ΄λ ν λ°©μμΌλ‘λ rockdb λ° μμΆ λΌμ΄λΈλ¬λ¦¬λ₯Ό ν¬ν¨ν λΌμ΄λΈλ¬λ¦¬λ₯Ό 곡κΈνλ €κ³ μλνμ§ μμ΅λλ€. λμ νμν λΌμ΄λΈλ¬λ¦¬λ₯Ό μ°Ύμ μμΉλ₯Ό μλ €μ£Όλ νκ²½ λ³μλ₯Ό μ°Ύμ΅λλ€. μ΄λ¬ν νκ²½ λ³μλ LIBNAME_LIB_DIR
μ
λλ€. μμ€ν
λΌμ΄λΈλ¬λ¦¬ κ²μμ μλνμ§ μκ³ μ¬μ©μ μ§μ μ μμ‘΄ν©λλ€. vendor
λΉνμ±ννκ³ ν΄λΉ νκ²½ λ³μλ₯Ό μ€μ νλ κ²μ μμΌλ©΄ μ€μ νλΌλ λ©μμ§μ ν¨κ» λΉλκ° μ€ν¨ν©λλ€. νκ²½.
κ°λ₯ν λ―Έλ νλ
μμΌλ‘ vendor
κ° λΉνμ±νλλ©΄ νκ²½ λ³μκ° μ€μ λμ§ μμ κ²½μ° ν΄λ°±μΌλ‘ μμ€ν
λΌμ΄λΈλ¬λ¦¬ κ²μμ μλν μ μμ΅λλ€. μμ§ κ΅¬ννμ§λ μμμ§λ§ μκ°μ΄ μμ λ ꡬννλ €κ³ ν©λλ€.
κΈ°λ₯μΌλ‘ μ΄ μμ
μ μννλ κ²μ μ½κ° μ΄μν©λλ€. μλνλ©΄ μ’
μμ± νΈλ¦¬μ _any_ ν¬λ μ΄νΈμ vendor
κΈ°λ₯ μΈνΈμ ν¨κ» rocksdb
κ° ν¬ν¨λμ΄ μμΌλ©΄ RocksDBκ° κ³΅κΈλλ€λ μλ―Έμ΄κΈ° λλ¬Έμ
λλ€. μμ μμμλ ν° μ°¨μ΄κ° μμ κ²μ΄μ§λ§ RocksDBμ μ¬λ¬ μ μ΄ μ’
μμ±μ κ°μ§ μ μλ ν° λ°μ΄λ리μ κ²½μ° κ³΅κΈμ
체λ₯Ό μ ν ν΄μ ν λ°©λ²μ΄ μμ κ°λ₯μ±μ΄ λμ΅λλ€.
@jonhoo λ§μμ ,
IMHOλ νλ§€κ° μ ν μμ΄μΌνλ©° ν맀λ λͺ¨λ μ μ κ·Όμμ λλ€. @aleksuss μ λ€λ₯Έ μ μ§ κ΄λ¦¬μκ° κ·Έκ²μ νμ©νλ€λ©΄ λλ ν¨κ» ν맀λ₯Ό μμ λ κ²μ μ νΈν©λλ€.
λλ λΉμ μ λ§μ λμν©λλ€. ν΄κ²°μ± μ 곡κΈμ μ²΄κ° μλ κ²μ λλ€. μ΅μν λ²€λλ§μ κΈ°λ³Έ κΈ°λ₯ μΈνΈμ ν¬ν¨λμ΄μλ μ λ©λλ€. ν κ°μ§ μ΅μ μ νκ²½ λ³μλ₯Ό μ¬μ©νμ¬ κ³΅κΈμ μ²΄κ° μ΅νΈμΈνλλ‘ νλ κ²μ λλ€.
κ·Έλ κ² ν μ μμ΅λλ€. @aleksuss @vitvakatu μ¬λ¬λΆ μκ°μ μ΄λ€κ°μ?
μ μ΄μ μ’ μμ±μ κ²½μ° κΈ°λ₯μ μ μ΄νκΈ°κ° μ€μ λ‘ μ΄λ ΅κ³ μμ€μμ RocksDBλ₯Ό μ»΄νμΌνλ λ° λ§μ λΉμ©μ΄ λλλ€(μ°λ¦¬ νλ‘μ νΈμ κ²½μ° λΉλ μκ°μ΄ μ½ 30% μ¦κ°ν©λλ€!). κ·Έλ¬λ λλ λ²€λλ§μ μμ ν μ κ±°νλ€λ μμ΄λμ΄λ₯Ό μ’μνμ§ μμ΅λλ€. μΌλΆ νλ«νΌμμλ μ¬μ© κ°λ₯ν μ΅μ rockdb λ²μ μ΄ μμ΅λλ€. μ¬μ§μ΄ μ΄μ Ubuntu λ°°ν¬νμ λν΄ μ체 PPAλ₯Ό λ§λ€μ΄μΌ νμ΅λλ€.
λ°λΌμ νμ¬ λμμ μ μ₯νλ κ²μ μ νΈνμ§λ§ κ°μ ν μ μμ΅λλ€(μλ λΌμ΄λΈλ¬λ¦¬ κ²μ?). μλ§λ μ°λ¦¬λ μ¬μ©μκ° (env varλ₯Ό ν΅ν΄) μλμΌλ‘ λ²€λλ§μ νμ±νν΄μΌ ν μλ μμ§λ§, μ μ΄μ μ’ μμ±μλ μ½κ° μ±κ°μ€ κ²μ λλ€.
κΈμ, νμ¬ λ§μ€ν°μμ librocksdb-sysλ₯Ό λΉλνλ €κ³ νλ©΄ μμ€ν μ 체 λΌμ΄λΈλ¬λ¦¬λ‘ rockdbλ₯Ό μ€μΉνμμλ λΆκ΅¬νκ³ μ¬μ ν λ§μ C++ μ»΄νμΌλ¬ μΈμ€ν΄μ€λ₯Ό νμ μν΅λλ€.
μ΄κ²μ λν κ½€ μ΄μν΄ λ³΄μ΄λ©° μλ§λ μμ λμ΄μΌ ν κ²μ λλ€.
@vitvakatu μ, μ¬μ©μκ° λ²€λλ§μ μ ννλλ‘ λμμ "λ°μ "νλ κ²μ΄ μ¬λ°λ₯Έ λ°©λ²μ΄λΌκ³ μκ°ν©λλ€. :)
μ΄κ²μ λν κ½€ μ΄μν΄ λ³΄μ΄λ©° μλ§λ μμ λμ΄μΌ ν κ²μ λλ€.
env varsκ° μ€μ λμ΄ μμ§ μμΌλ―λ‘ μ΄κ²μ΄ μ€λμ μλλ λμμ΄λΌκ³ μκ°ν©λλ€.
μ’μ, λλ νλμ λ€μ§μλ€ :)
@lovesegfault μ μκ°μλ λμμ λ°μ μν€λ κ²½μ° build.rs
rocksdb
κ° /usr/lib
λλ κΈ°λ³Έμ μΌλ‘ rocksdb
μμ /usr/lib
rocksdb
λ₯Ό κ²μνλλ‘ ν΄μΌ ν©λλ€. κ·Έλ μ§ μμΌλ©΄ λ§μ μ¬μ©μκ° env var μΈνΈκ° μκΈ° λλ¬Έμ κ°μκΈ° μ»΄νμΌ μ€λ₯κ° λ°μν©λλ€.
μ’μ΅λλ€. 보λ₯ μ€μΈ μμ μ λ€μκ³Ό κ°μ΅λλ€.
vendor
κΈ°λ₯μ envvarλ‘ μ ν
κ°μ₯ μ μ©ν λκΈ
μ΄μ κ΄λ ¨νμ¬ μ΄λ¬ν νκ²½ λ³μκ° README λ° λ¬Έμμ λ¬Έμνλμ΄ μμΌλ©΄ μ’μ κ²μ λλ€!