2012-10-24 17 views
5

ओला सभी स्मार्ट लोगों पर स्थापित करने में विफल रहता है। मुझे एक समस्या का सामना करना पड़ रहा है जिसे मैं हल करने की कोशिश कर रहा हूं लेकिन असफल रहा हूं। मैं सर्वर जो यानी http://www.opscode.com/chef/install/पीजी मणि ऑम्निबस शेफ स्थापना

असल समस्या पहले से ही सूचित किया गया है पर Omnibus बावर्ची स्थापना है पर स्नातकोत्तर मणि स्थापित करने के लिए कोशिश कर रहा हूँ (http://tickets.opscode.com/browse/COOK-1406), लेकिन मैं एम अगर कोई है तो इसका समाधान ढूंढ रहा है - ओपसोड उबंटू रिपोज़ से पैकेज स्थापित करने के लिए कामकाज का सुझाव दिया गया है - लेकिन वे रूबी 1.8 के साथ आते हैं - मुझे आशा है कि मुझे आगे बढ़ना नहीं होगा क्यों मैं ऐसा करने के लिए अनिच्छुक महसूस कर रहा हूं :)

त्रुटि मैं जब स्नातकोत्तर मणि स्थापित करने हो रही है:

$ sudo /opt/chef/embedded/bin/gem install pg 
Building native extensions. This could take a while... 
ERROR: Error installing pg: 
    ERROR: Failed to build gem native extension. 

     /opt/chef/embedded/bin/ruby extconf.rb 
checking for pg_config... yes 
Using config values from /usr/bin/pg_config 
checking for libpq-fe.h... yes 
checking for libpq/libpq-fs.h... yes 
checking for pg_config_manual.h... yes 
checking for PQconnectdb() in -lpq... no 
checking for PQconnectdb() in -llibpq... no 
checking for PQconnectdb() in -lms/libpq... no 
Can't find the PostgreSQL client library (libpq) 
*** extconf.rb failed *** 
Could not create Makefile due to some reason, probably lack of 
necessary libraries and/or headers. Check the mkmf.log file for more 
details. You may need configuration options. 

Provided configuration options: 
    --with-opt-dir 
    --with-opt-include 
    --without-opt-include=${opt-dir}/include 
    --with-opt-lib 
    --without-opt-lib=${opt-dir}/lib 
    --with-make-prog 
    --without-make-prog 
    --srcdir=. 
    --curdir 
    --ruby=/opt/chef/embedded/bin/ruby 
    --with-pg 
    --without-pg 
    --with-pg-dir 
    --without-pg-dir 
    --with-pg-include 
    --without-pg-include=${pg-dir}/include 
    --with-pg-lib 
    --without-pg-lib=${pg-dir}/lib 
    --with-pg-config 
    --without-pg-config 
    --with-pg_config 
    --without-pg_config 
    --with-pqlib 
    --without-pqlib 
    --with-libpqlib 
    --without-libpqlib 
    --with-ms/libpqlib 
    --without-ms/libpqlib 


Gem files will remain installed in /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/pg-0.14.1 for inspection. 
Results logged to /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/pg-0.14.1/ext/gem_make.out 

mkmf.log में बिट्स Faulting के लिए के रूप में है llows:

have_library: checking for PQconnectdb() in -lpq... -------------------- no 

"gcc -o conftest -I/opt/chef/embedded/include/ruby-1.9.1/x86_64-linux -I/opt/chef/embedded/include/ruby-1.9.1/ruby/backward -I/opt/chef/embedded/include/ruby-1.9.1 -I. -I/opt/chef/embedded/include -I/usr/include/postgresql -I/opt/chef/embedded/include -fPIC conftest.c -L. -L/opt/chef/embedded/lib -Wl,-R/opt/chef/embedded/lib -L/opt/chef/embedded/lib -Wl,-R/opt/chef/embedded/lib -L. -Wl,-rpath,/opt/chef/embedded/lib -L/opt/chef/embedded/lib -rdynamic -Wl,-export-dynamic -L/usr/lib  -Wl,-R -Wl,/opt/chef/embedded/lib -L/opt/chef/embedded/lib -lruby -lpq -lpthread -lrt -ldl -lcrypt -lm -lc" 
/usr/lib/libpq.so: undefined reference to `[email protected]_1.0.0' 
/usr/lib/libpq.so: undefined reference to `[email protected]_1.0.0' 
/usr/lib/libpq.so: undefined reference to `[email protected]_1.0.0' 
/usr/lib/libpq.so: undefined reference to `[email protected]_1.0.0' 
/usr/lib/libpq.so: undefined reference to `[email protected]_1.0.0' 
/usr/lib/libpq.so: undefined reference to `[email protected]_1.0.0' 
/usr/lib/libpq.so: undefined reference to `[email protected]_1.0.0' 
/usr/lib/libpq.so: undefined reference to `[email protected]_1.0.0' 
/usr/lib/libpq.so: undefined reference to `[email protected]_1.0.0' 
/usr/lib/libpq.so: undefined reference to `[email protected]_1.0.0' 
/usr/lib/libpq.so: undefined reference to `[email protected]_1.0.0' 
/usr/lib/libpq.so: undefined reference to `[email protected]_1.0.0' 
/usr/lib/libpq.so: undefined reference to `[email protected]_1.0.0' 
/usr/lib/libpq.so: undefined reference to `[email protected]_1.0.0' 
/usr/lib/libpq.so: undefined reference to `[email protected]_1.0.0' 
/usr/lib/libpq.so: undefined reference to `[email protected]_1.0.0' 
/usr/lib/libpq.so: undefined reference to `[email protected]_1.0.0' 
/usr/lib/libpq.so: undefined reference to `[email protected]_1.0.0' 
/usr/lib/libpq.so: undefined reference to `[email protected]_1.0.0' 
/usr/lib/libpq.so: undefined reference to `[email protected]_1.0.0' 
/usr/lib/libpq.so: undefined reference to `[email protected]_1.0.0' 
/usr/lib/libpq.so: undefined reference to `[email protected]_1.0.0' 
/usr/lib/libpq.so: undefined reference to `[email protected]_1.0.0' 
/usr/lib/libpq.so: undefined reference to `[email protected]_1.0.0' 
/usr/lib/libpq.so: undefined reference to `[email protected]_1.0.0' 
/usr/lib/libpq.so: undefined reference to `[email protected]_1.0.0' 
/usr/lib/libpq.so: undefined reference to `[email protected]_1.0.0' 
/usr/lib/libpq.so: undefined reference to `[email protected]_1.0.0' 
/usr/lib/libpq.so: undefined reference to `[email protected]_1.0.0' 
/usr/lib/libpq.so: undefined reference to `[email protected]_1.0.0' 
/usr/lib/libpq.so: undefined reference to `[email protected]_1.0.0' 
/usr/lib/libpq.so: undefined reference to `[email protected]_1.0.0' 
/usr/lib/libpq.so: undefined reference to `[email protected]_1.0.0' 
/usr/lib/libpq.so: undefined reference to `[email protected]_1.0.0' 
/usr/lib/libpq.so: undefined reference to `[email protected]_1.0.0' 
/usr/lib/libpq.so: undefined reference to `[email protected]_1.0.0' 
/usr/lib/libpq.so: undefined reference to `[email protected]_1.0.0' 
/usr/lib/libpq.so: undefined reference to `[email protected]_1.0.0' 
/usr/lib/libpq.so: undefined reference to `[email protected]_1.0.0' 
/usr/lib/libpq.so: undefined reference to `[email protected]_1.0.0' 
collect2: ld returned 1 exit status 
checked program was: 
/* begin */ 
1: #include "ruby.h" 
2: 
3: #include <libpq-fe.h> 
4: 
5: /*top*/ 
6: int main() {return 0;} 
7: int t() { void ((*volatile p)()); p = (void ((*)()))PQconnectdb; return 0; } 
/* end */ 

"gcc -o conftest -I/opt/chef/embedded/include/ruby-1.9.1/x86_64-linux -I/opt/chef/embedded/include/ruby-1.9.1/ruby/backward -I/opt/chef/embedded/include/ruby-1.9.1 -I. -I/opt/chef/embedded/include -I/usr/include/postgresql -I/opt/chef/embedded/include -fPIC conftest.c -L. -L/opt/chef/embedded/lib -Wl,-R/opt/chef/embedded/lib -L/opt/chef/embedded/lib -Wl,-R/opt/chef/embedded/lib -L. -Wl,-rpath,/opt/chef/embedded/lib -L/opt/chef/embedded/lib -rdynamic -Wl,-export-dynamic -L/usr/lib  -Wl,-R -Wl,/opt/chef/embedded/lib -L/opt/chef/embedded/lib -lruby -lpq -lpthread -lrt -ldl -lcrypt -lm -lc" 
conftest.c: In function ‘t’: 
conftest.c:7:1: error: too few arguments to function ‘PQconnectdb’ 
/usr/include/postgresql/libpq-fe.h:243:16: note: declared here 
checked program was: 
/* begin */ 
1: #include "ruby.h" 
2: 
3: #include <libpq-fe.h> 
4: 
5: /*top*/ 
6: int main() {return 0;} 
7: int t() { PQconnectdb(); return 0; } 
/* end */ 

-------------------- 

have_library: checking for PQconnectdb() in -llibpq... -------------------- no 

"gcc -o conftest -I/opt/chef/embedded/include/ruby-1.9.1/x86_64-linux -I/opt/chef/embedded/include/ruby-1.9.1/ruby/backward -I/opt/chef/embedded/include/ruby-1.9.1 -I. -I/opt/chef/embedded/include -I/usr/include/postgresql -I/opt/chef/embedded/include -fPIC conftest.c -L. -L/opt/chef/embedded/lib -Wl,-R/opt/chef/embedded/lib -L/opt/chef/embedded/lib -Wl,-R/opt/chef/embedded/lib -L. -Wl,-rpath,/opt/chef/embedded/lib -L/opt/chef/embedded/lib -rdynamic -Wl,-export-dynamic -L/usr/lib  -Wl,-R -Wl,/opt/chef/embedded/lib -L/opt/chef/embedded/lib -lruby -llibpq -lpthread -lrt -ldl -lcrypt -lm -lc" 
/usr/bin/ld: cannot find -llibpq 
collect2: ld returned 1 exit status 
checked program was: 
/* begin */ 
1: #include "ruby.h" 
2: 
3: #include <libpq-fe.h> 
4: 
5: /*top*/ 
6: int main() {return 0;} 
7: int t() { void ((*volatile p)()); p = (void ((*)()))PQconnectdb; return 0; } 
/* end */ 

"gcc -o conftest -I/opt/chef/embedded/include/ruby-1.9.1/x86_64-linux -I/opt/chef/embedded/include/ruby-1.9.1/ruby/backward -I/opt/chef/embedded/include/ruby-1.9.1 -I. -I/opt/chef/embedded/include -I/usr/include/postgresql -I/opt/chef/embedded/include -fPIC conftest.c -L. -L/opt/chef/embedded/lib -Wl,-R/opt/chef/embedded/lib -L/opt/chef/embedded/lib -Wl,-R/opt/chef/embedded/lib -L. -Wl,-rpath,/opt/chef/embedded/lib -L/opt/chef/embedded/lib -rdynamic -Wl,-export-dynamic -L/usr/lib  -Wl,-R -Wl,/opt/chef/embedded/lib -L/opt/chef/embedded/lib -lruby -llibpq -lpthread -lrt -ldl -lcrypt -lm -lc" 
conftest.c: In function ‘t’: 
conftest.c:7:1: error: too few arguments to function ‘PQconnectdb’ 
/usr/include/postgresql/libpq-fe.h:243:16: note: declared here 
checked program was: 
/* begin */ 
1: #include "ruby.h" 
2: 
3: #include <libpq-fe.h> 
4: 
5: /*top*/ 
6: int main() {return 0;} 
7: int t() { PQconnectdb(); return 0; } 
/* end */ 

-------------------- 

have_library: checking for PQconnectdb() in -lms/libpq... -------------------- no 

"gcc -o conftest -I/opt/chef/embedded/include/ruby-1.9.1/x86_64-linux -I/opt/chef/embedded/include/ruby-1.9.1/ruby/backward -I/opt/chef/embedded/include/ruby-1.9.1 -I. -I/opt/chef/embedded/include -I/usr/include/postgresql -I/opt/chef/embedded/include -fPIC conftest.c -L. -L/opt/chef/embedded/lib -Wl,-R/opt/chef/embedded/lib -L/opt/chef/embedded/lib -Wl,-R/opt/chef/embedded/lib -L. -Wl,-rpath,/opt/chef/embedded/lib -L/opt/chef/embedded/lib -rdynamic -Wl,-export-dynamic -L/usr/lib  -Wl,-R -Wl,/opt/chef/embedded/lib -L/opt/chef/embedded/lib -lruby -lms/libpq -lpthread -lrt -ldl -lcrypt -lm -lc" 
/usr/bin/ld: cannot find -lms/libpq 
collect2: ld returned 1 exit status 
checked program was: 
/* begin */ 
1: #include "ruby.h" 
2: 
3: #include <libpq-fe.h> 
4: 
5: /*top*/ 
6: int main() {return 0;} 
7: int t() { void ((*volatile p)()); p = (void ((*)()))PQconnectdb; return 0; } 
/* end */ 

"gcc -o conftest -I/opt/chef/embedded/include/ruby-1.9.1/x86_64-linux -I/opt/chef/embedded/include/ruby-1.9.1/ruby/backward -I/opt/chef/embedded/include/ruby-1.9.1 -I. -I/opt/chef/embedded/include -I/usr/include/postgresql -I/opt/chef/embedded/include -fPIC conftest.c -L. -L/opt/chef/embedded/lib -Wl,-R/opt/chef/embedded/lib -L/opt/chef/embedded/lib -Wl,-R/opt/chef/embedded/lib -L. -Wl,-rpath,/opt/chef/embedded/lib -L/opt/chef/embedded/lib -rdynamic -Wl,-export-dynamic -L/usr/lib  -Wl,-R -Wl,/opt/chef/embedded/lib -L/opt/chef/embedded/lib -lruby -lms/libpq -lpthread -lrt -ldl -lcrypt -lm -lc" 
conftest.c: In function ‘t’: 
conftest.c:7:1: error: too few arguments to function ‘PQconnectdb’ 
/usr/include/postgresql/libpq-fe.h:243:16: note: declared here 
checked program was: 
/* begin */ 
1: #include "ruby.h" 
2: 
3: #include <libpq-fe.h> 
4: 
5: /*top*/ 
6: int main() {return 0;} 
7: int t() { PQconnectdb(); return 0; } 
/* end */ 

-------------------- 

मुझे लगता है कि समस्या यह है कि स्नातकोत्तर मणि एक अलग lib एक PostgreSQL से के खिलाफ बनाया गया था और संकलन में विफल रहता है के खिलाफ जुड़ा हुआ है। मैं बस सोच रहा हूं कि क्या ऐसा कुछ है जो मैं इसके आसपास काम करने के लिए कर सकता हूं? कोई आश्चर्यजनक उज्ज्वल दिमाग? चीयर्स

उत्तर

3

मैं पोस्टग्रेस्क्ल स्रोत डाउनलोड करके स्थापित करने के लिए पीजी मणि प्राप्त करने में सक्षम था, और/opt/chef/एम्बेडेड में पुस्तकालय बनाम बनाकर इसे संकलित कर सकता था। यह इष्टतम नहीं है, लेकिन यह काम करना चाहिए (चेतावनी: मैं एक नुस्खा या एक गहरे लाल रंग का कार्यक्रम में यह प्रयास नहीं किया है):

apt-get install -y build-essential 
apt-get build-dep -y postgresql 
wget http://ftp.postgresql.org/pub/source/v9.2.1/postgresql-9.2.1.tar.gz 
tar -zxvf postgresql-9.2.1.tar.gz 
cd postgresql-9.2.1 
export MAJOR_VER=9.2 
./configure \ 
    --prefix=/opt/chef/embedded \ 
    --mandir=/opt/chef/embedded/share/postgresql/${MAJOR_VER}/man \ 
    --docdir=/opt/chef/embedded/share/doc/postgresql-doc-${MAJOR_VER} \ 
    --sysconfdir=/etc/postgresql-common \ 
    --datarootdir=/opt/chef/embedded/share/ \ 
    --datadir=/opt/chef/embedded/share/postgresql/${MAJOR_VER} \ 
    --bindir=/opt/chef/embedded/lib/postgresql/${MAJOR_VER}/bin \ 
    --libdir=/opt/chef/embedded/lib/ \ 
    --libexecdir=/opt/chef/embedded/lib/postgresql/ \ 
    --includedir=/opt/chef/embedded/include/postgresql/ \ 
    --enable-nls \ 
    --enable-integer-datetimes \ 
    --enable-thread-safety \ 
    --enable-debug \ 
    --with-gnu-ld \ 
    --with-pgport=5432 \ 
    --with-openssl \ 
    --with-libedit-preferred \ 
    --with-includes=/opt/chef/embedded/include \ 
    --with-libs=/opt/chef/embedded/lib 
make 
sudo make install 
sudo /opt/chef/embedded/bin/gem install pg -- --with-pg-config=/opt/chef/embedded/lib/postgresql/9.2/bin/pg_config 

https://gist.github.com/3954641

+0

यही वह है जो हम कर रहे हैं। लेकिन हमें 2 कारणों से यह पसंद नहीं है: 1.) प्रत्येक पोस्टग्रेज़ अपग्रेड का मतलब है 2.) पोस्टग्रेस कुकबुक में काम करने से इसमें बहुत सारे बदलाव की आवश्यकता होगी और आम तौर पर चीजों को गड़बड़ करनी होगी। फिर भी आपके उत्तर – gyre

+0

हाँ के लिए धन्यवाद, यह पूरी तरह से उप-इष्टतम है। यदि आप शेफ में पीजी मणि का उपयोग करना चाहते हैं, तो यह केवल एक मुद्दा है, जैसे कि पोस्टग्रेस्क्ल डेटाबेस और उपयोगकर्ता प्रबंधन के लिए ओप्सकोड के डेटाबेस कुकबुक संसाधनों में। यदि आप केवल अपने ऐप में पीजी का उपयोग कर रहे हैं, तो इसकी आवश्यकता नहीं है, बस अपने ऐप का उपयोग करने वाले रूबी के तहत मणि इंस्टॉल करें (हम ऑम्निबस पैकेज में रूबी की अनुशंसा नहीं करते हैं)। – jtimberman

+0

यही है, हम आपके ऐप के लिए शेफ की रूबी की सिफारिश नहीं करते हैं, केवल शेफ के लिए :-)। – jtimberman

1

कोशिश जोड़ने "-lssl -lcrypto" जबकि संकलन। यह ओपनस्ल आधारित अनुप्रयोगों को संकलित करते समय मेरे लिए काम करता है