2015-03-29 16 views
11

Mục tiêu của tôi là kết nối với cơ sở dữ liệu oracle trên máy khách VMWare (OpenSuse) từ Ubuntu.libclntsh.so.12.1: không thể mở lỗi tệp đối tượng được chia sẻ khi chạy mẫu của nút-oracledb

Hiện tại tôi chỉ cài đặt trình điều khiển oracledb và đang cố gắng chạy example connect program nhất định.

Các bước mà tôi đang theo dõi là từ trang github INSTALL. Những gì tôi đã làm cho đến bây giờ là:

1) Vì tôi đã cài đặt node.js nên bỏ qua số step 3.1.

2) Tôi đã tải về thành công và trích xuất các cơ bảnsdk như đã đề cập trong step 3.2.

3) Vì tôi không thể tìm thấy bất kỳ gói nào có tên libaio nhưng tôi đã tìm thấy libaio1. Vì vậy, tôi đã cài đặt libaio1.

4) Tôi đã biến môi trường LD_LIBRARY_PATH và nội dung của nó trên máy tính của tôi là /opt/oracle/instantclient.

5) Như được đề cập trong step 3.3; mặc dù nó không bắt buộc trong trường hợp của tôi; Tôi đã tạo hai biến môi trường: OCI_LIB_DIR với nội dung /opt/oracle/instantclientOCI_INC_DIR có nội dung /opt/oracle/instantclient/sdk/include.

6) Đã cài đặt node-oracledb.

Tôi đang cố gắng chạy chương trình kết nối mẫu. Mã tôi đang sử dụng ở đây là https://github.com/ishanatmuz/oracle-test. Khi tôi chạy node connect.js Tôi nhận được lỗi này.

/home/ishan/node.js/oracle-test/node_modules/oracledb/lib/oracledb.js:28 
throw err; 
     ^
Error: libclntsh.so.12.1: cannot open shared object file: No such file or directory 
    at Module.load (module.js:356:32) 
    at Function.Module._load (module.js:312:12) 
    at Module.require (module.js:364:17) 
    at require (module.js:380:17) 
    at Object.<anonymous> (/home/ishan/node.js/oracle-test/node_modules/oracledb/lib/oracledb.js:23:15) 
    at Module._compile (module.js:456:26) 
    at Object.Module._extensions..js (modullibclntsh.so.12.1e.js:474:10) 
    at Module.load (module.js:356:32) 
    at Function.Module._load (module.js:312:12) 
    at Module.require (module.js:364:17) 

Vì tôi chưa bắt đầu máy khách VMware; Tôi đã hy vọng nhận được một lỗi liên quan đến không có ví dụ cơ sở dữ liệu được tìm thấy. Và sau đó chỉ sau đó chạy máy VMWare và kết nối với cơ sở dữ liệu bên trong nó. Nhưng thay vào đó tôi nhận được lỗi của cannot open shared object file cho libclntsh.so.12.1.

Trả lời

12

Nghi ngờ đầu tiên của tôi là LD_LIBRARY_PATH không thực sự được đặt hoặc xuất chính xác. Kiểm tra ba lần nó được thiết lập và thư mục có thể đọc được bởi trình bao thực tế cố gắng khởi động nút.

Tôi cũng sẽ kiểm tra xem thư viện Oracle nào khác được cài đặt trên máy.

Cập nhật: lưu ý rằng việc sử dụng ldconfig có thể dễ dàng hơn việc đặt LD_LIBRARY_PATH trên Linux. Bạn có thể làm điều gì đó như:

sudo sh -c "echo /opt/oracle/instantclient_12_2 > /etc/ld.so.conf.d/oracle-instantclient.conf" 
sudo ldconfig 

Xem hướng dẫn Instant Client install để biết chi tiết.

+0

Tôi xin lỗi.Tôi không chấp nhận câu trả lời của bạn. Điều này thực sự là vấn đề. Tôi đã tìm ra nó sớm hơn một chút so với câu trả lời của bạn. Quên chấp nhận điều này như một giải pháp. Xin lỗi vì đã để bạn đợi. – Ishan

5

chỉ hoạt động với một quy trình. Có vẻ như, nó không xuất hiện ở cửa sổ đầu cuối của bạn (nó là quá trình riêng biệt). Vì vậy, bạn nên thực hiện sau một lần nữa trước khi bắt đầu node connect.js (trong cửa sổ terminal cùng nơi bạn sẽ bắt đầu nút):

export LD_LIBRARY_PATH=/opt/oracle/instantclient:$LD_LIBRARY_PATH 
+0

làm thế nào để làm cho nó vĩnh viễn? – Zolbayar

Các vấn đề liên quan