আপনি যদি মানহীন উপসর্গটিতে সফ্টওয়্যার ইনস্টল করেন তবে PKG_CONFIG_PATH এনভায়রনমেন্ট ভেরিয়েবল সামঞ্জস্য করুন। এটার মানে কি ?
আপনি যদি মানহীন উপসর্গটিতে সফ্টওয়্যার ইনস্টল করেন তবে PKG_CONFIG_PATH এনভায়রনমেন্ট ভেরিয়েবল সামঞ্জস্য করুন। এটার মানে কি ?
উত্তর:
PKG_CONFIG_PATH
পরিবেশের পরিবর্তনশীল এটি অতিরিক্ত পাথ নির্দিষ্ট করে যেখানে pkg-config
এর .pc ফাইলগুলি অনুসন্ধান করবে।
এই পরিবর্তনশীলটি পিকেজি-কনফিগারেশনের ডিফল্ট অনুসন্ধানের পথটি বাড়ানোর জন্য ব্যবহৃত হয়। একটি সাধারণ ইউনিক্স সিস্টেমে এটি ডিরেক্টরিতে /usr/lib/pkgconfig
এবং অনুসন্ধান করবে /usr/share/pkgconfig
। এটি সাধারণত সিস্টেম ইনস্টলড মডিউলগুলি কভার করবে। তবে কিছু স্থানীয় মডিউল ভিন্ন উপসর্গ যেমন ইনস্টল করা হতে পারে /usr/local
। সেক্ষেত্রে অনুসন্ধানের পথটি আগেই চালিত করা দরকার যাতে pkg-config .pc ফাইলগুলি সনাক্ত করতে পারে।
pkg-config
প্রোগ্রাম সিস্টেমে ইনস্টল লাইব্রেরি সম্বন্ধে তথ্য পুনরুদ্ধার করতে ব্যবহৃত হয়। এর প্রাথমিক ব্যবহার pkg-config
হ'ল একটি লাইব্রেরিতে একটি প্রোগ্রাম সংকলন এবং লিঙ্ক করার জন্য প্রয়োজনীয় বিশদ সরবরাহ করা। এই মেটাডেটা pkg-config ফাইলগুলিতে সংরক্ষিত আছে। এই ফাইলগুলির প্রত্যয় .pc রয়েছে এবং pkg-config সরঞ্জাম হিসাবে পরিচিত নির্দিষ্ট স্থানে থাকে।
PKG_CONFIG_PATH
মানটি পরীক্ষা করতে এই কমান্ডটি ব্যবহার করুন:
echo $PKG_CONFIG_PATH
PKG_CONFIG_PATH
মান ব্যবহার সেট করতে:
export PKG_CONFIG_PATH=/usr/lib/pkgconfig
অথবা
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
প্রথম উত্তরটি প্রযুক্তিগতভাবে যথেষ্ট সুস্পষ্ট নয়। ম্যান পৃষ্ঠা থেকে (একটি টার্মিনাল খুলুন, টাইপ করুন man pkg-config
):
pkg-config
বিশেষ মেটাডেটা ফাইল থেকে প্যাকেজগুলি সম্পর্কিত তথ্য পুনরুদ্ধার করে। এই ফাইলগুলি প্যাকেজের নামে নামকরণ করেছে এবং এর একটি.pc
এক্সটেনশন রয়েছে। সবচেয়ে সিস্টেমে,pkg-config
দেখায়/usr/lib/pkgconfig
,/usr/share/pkgconfig
,/usr/local/lib/pkgconfig
এবং/usr/local/share/pkgconfig
এই ফাইলগুলির জন্য। এটি অতিরিক্তভাবেPKG_CONFIG_PATH
পরিবর্তনশীল দ্বারা নির্ধারিত ডিরেক্টরিগুলির তালিকাতে কোলন-বিচ্ছিন্ন (উইন্ডোজে, অর্ধেকলিত-বিচ্ছিন্ন) তালিকায় থাকবে ।
সুতরাং pkg-config
প্রোগ্রামটি PKG_CONFIG_PATH
ডিরেক্টরিতে নেই; তবে, আপনি যদি কোনও গ্রন্থাগার ইনস্টল করেন, তথ্যটি কোনও automake
স্ক্রিপ্টে অ্যাক্সেসযোগ্য হওয়ার জন্য এটি ব্যবহার করার জন্য এটি কোনও ডিরেক্টরিতে থাকা প্রয়োজন pkg-config
সে সম্পর্কে সচেতন।
/usr/local/lib/x86_64-linux-gnu
নিখরচায় (একটি খালি সহ PKG_CONFIG_PATH
) একটি স্বয়ংক্রিয় অনুসন্ধানের স্থান হিসাবে নিক্ষেপ করব এবং সত্যই, প্রচুর .pc
ফাইল - জিটিকে + এট এল সহ উল্লেখযোগ্য। - সেখানে থাকুন। এর কারণ হ'ল
pkg-config
আপনার সিস্টেমে অনুসন্ধান করা ডিফল্ট পাথ চেক করতে হবে: Askubuntu.com/a/373217/436580
Pkg-config (সংস্করণ 0.24 বা তার পরে) ডিফল্টরূপে ইনস্টলড লাইব্রেরিগুলির জন্য অনুসন্ধান করে তা দেখতে, নিম্নলিখিত কমান্ডটি ব্যবহার করুন:
pkg-config --variable pc_path pkg-config
সেই পথটি সংশোধন করতে, PKG_CONFIG_PATH
পরিবেশের পরিবর্তনশীল সেট করুন । ম্যান ফাইল ফাইলটি PKG_CONFIG_PATH
হ'ল:
.Pc ফাইলগুলি অনুসন্ধান করার জন্য ডিরেক্টরিগুলির তালিকার একটি কোলন-বিচ্ছিন্ন (উইন্ডোজে, অর্ধেকোলন-বিচ্ছিন্ন) ডিফল্ট ডিরেক্টরিটি সর্বদা পথ অনুসন্ধানের পরে অনুসন্ধান করা হবে; ডিফল্ট হল libdir / pkgconfig: datadir / pkgconfig যেখানে libdir হল libdir যেখানে pkg-config এবং datadir সেই datadir যেখানে pkg-config ইনস্টল করা হয়েছিল।
echo $(pkg-config --variable pc_path pkg-config)${PKG_CONFIG_PATH:+:}${PKG_CONFIG_PATH}
PKG_CONFIG_PATH
এবং এখনও ডিফল্ট অনুসন্ধান ডিরেক্টরি থাকতে পারে, এবং একটি ফাঁকা মান সেট করা ডিফল্টগুলি সাফ করে না।
আপনি একটি সফ্টওয়্যার তৈরির চেষ্টা করছেন, উইজেট বলি। উইজেট আর একটি লাইব্রেরির উপর নির্ভর করে, যুক্তির খাতিরে libcog। উইজেটের বিল্ড প্রক্রিয়া (সম্ভবত একটি কনফিগার স্ক্রিপ্ট) কীভাবে লাইবকোগ ব্যবহার করবেন তা নির্ধারণ করতে pkg-config ব্যবহার করছে। pkg-config libcog সম্পর্কে কিছুই জানে না।
যদি libcog ইনস্টল না হয়, এটি আপনার সমস্যা। লিবকোগের একটি স্ট্যান্ডার্ড ইনস্টল সমস্যাটি সমাধান করবে এমন একটি ভাল সম্ভাবনা রয়েছে। আপনার সিস্টেমের উপর নির্ভর করে আপনার প্যাকেজের একটি অতিরিক্ত "বিকাশকারী" সংস্করণ ইনস্টল করতে হবে; এটি প্রায়শই শেষে "-devel" বা "-দেব" থাকে, সুতরাং আপনি যদি "libcog" ইনস্টল করেন তবে আপনাকে "libcog-devel" ইনস্টল করারও প্রয়োজন হতে পারে।
যদি libcog ইনস্টল করা থাকে, সম্ভবত এটি pkg-config এটির মতো আবিষ্কার করতে পারে না। আপনার সিস্টেমে সম্ভবত একটি libcog.pc ফাইল আছে। তর্কের পক্ষে, এটি /opt/cog/lib/pkgconfig/libcog.pc এ রয়েছে। সেক্ষেত্রে আপনি libcog.pc অধিবেশন ডিরেক্টরিতে PKG_CONFIG_PATH সেট করে পিকেজি-কনফিগার করতে পারেন। সুতরাং একটি বোর্ন শেল বা অনুরূপ, কিছু
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/opt/cog/lib/pkgconfig/
এটি হয়ে গেলে, কমান্ডটি পুনরায় চালনা করা ব্যর্থ হয়েছে আশা করি এটি কার্যকর হবে।
লাইব্রেরি এবং শিরোলেখ ফাইল সহ libcog ইনস্টল থাকলে এবং আপনার কাছে একটি libcog.pc ফাইল নেই, জিনিসগুলি খারাপভাবে চলছে। সম্ভবত libcog এর একটি স্ট্যান্ডার্ড ইনস্টল ইন তথ্য অন্তর্ভুক্ত, অন্যথায় উইজেট এটি উপর নির্ভর করবে না। আমি প্রথমে লাইবকোগ পুনরায় ইনস্টল করে তদন্ত করব। Libcog.pc ফাইলটি ম্যানুয়ালি তৈরি করা সম্ভব, তবে এটি সঠিকভাবে পাওয়া কঠিন এবং প্রদত্ত লাইব্রেরির পক্ষে অত্যন্ত নির্দিষ্ট।
আমি আমার -৪-বিট সিস্টেমে ম্যান-পৃষ্ঠার দিকে তাকিয়ে কিছুটা বিভ্রান্ত হয়ে পড়েছি। এটি এক লাইনে বলেছে:
pkg-config বিশেষ মেটাডেটা ফাইল থেকে প্যাকেজগুলি সম্পর্কে তথ্য পুনরুদ্ধার করে। এই ফাইলগুলি প্যাকেজের নামে .pc এক্সটেনশন সহ নামকরণ করা হয়েছে। ডিফল্টরূপে, pkg-config এই ফাইলগুলির জন্য ডাইরেক্টরি টিউরিফিক্স / lib / pkgconfig এ দেখায়; এটি কোলন-বিচ্ছিন্ন (উইন্ডোজে, সেমিকোলন-বিচ্ছিন্ন) ডিরেক্টরিগুলি PKG_CONFIG_PATH পরিবেশগত পার্থক্য অনুযায়ী সক্ষম ডিরেক্টরিগুলির মধ্যেও দেখবে।
আমি ধরে নিয়েছিলাম যে এটি আলওয়াস ডিরেক্টরিতে / lib / pkgconfig ডিরেক্টরিতে দেখায়। এর ডিরেক্টরিগুলি নিজেরাই সরিয়ে দেয়। আমার ক্ষেত্রে, আমি হ্যালো ওয়ার্ল্ড জিটিকে টিউটোরিয়াল সংকলন করার চেষ্টা করছিলাম। আমি যে ফাইলটি চাই তা সনাক্ত করি
locate gtk | grep '\.pc'
ফলাফলগুলির মধ্যে রয়েছে:
/usr/lib/x86_64-linux-gnu/pkgconfig/gtk+-3.0.pc
অবশেষে একটি রফতানি করা ছিল।
export PKG_CONFIG_PATH=/usr/lib/x86_64-linux-gnu/pkgconfig/
man
পৃষ্ঠাটি আধুনিক, মাল্টি-আর্কিটেকচার-সক্ষম সিস্টেমগুলির জন্য কীভাবে ওভারসিম্প্লিফাই করা হচ্ছে তা নির্দেশ করার জন্য +1 । আমি কিছুক্ষণের জন্য বিভ্রান্ত হয়ে পড়েছিলাম কারণ ডেবিয়ান 8 x86 এ pkg-config
ইতিমধ্যে x86_64 ফোল্ডারে (কোনও কিছু ছাড়াই PKG_CONFIG_PATH
) দেখছে । এটি কীভাবে অন্তর্ভুক্ত করা হয়েছিল তা আমি নিশ্চিত নই, তবে @ গ্র্যান্ডএডমিরাল দ্বারা এটি দেখানোর জন্য তদন্ত করার জন্য যে কমান্ড লাইনটি দেখায় এটি নিজস্ব প্যাকেজের --variable pc_path
জন্য সেটটি (কোনওভাবে!) সেট করে এটি নিয়ন্ত্রণ করে pkg-config
।
আমার কাছে মনে হয় বেশিরভাগ উত্তরের প্রয়োজনের তুলনায় অনেক বেশি তথ্য রয়েছে।
একটি ইনস্টল করা সফ্টওয়্যার কিছু লাইব্রেরি এবং / অথবা শিরোলেখগুলিতে নির্ভর করে (এবং সাধারণত এটি করে) এবং সিস্টেমগুলি তাদের অনুসন্ধানের জন্য pkg-config ব্যবহার করে।
বলেছিলেন, pkg-config
প্রাক-সংজ্ঞায়িত (ডিফল্ট) সিস্টেমের ডিরেক্টরিতে এই ফাইলগুলির সন্ধান করুন। এই ফোল্ডারগুলি হ'ল "উপসর্গ"। উদাহরণস্বরূপ একটি লাইব্রেরির উপসর্গ রয়েছে এমনটি /usr/local
শিরোনাম রয়েছে বলে আশা করা হয় এবং পাঠাগারটি /usr/local/include
নিজেই এতে থাকবে /usr/local/lib
।
পিকেজি-কনফিগারেশন প্যাকেজি_সিএনএফআইজিপিএটিএইচ এনভায়রনমেন্ট ভেরিয়েবলের তালিকাভুক্ত ডিরেক্টরিতে লাইব্রেরিগুলির সন্ধান করে ।
তারপরে আপনি যদি ফোল্ডারগুলির ডিফল্ট তালিকার বাইরে সফ্টওয়্যার ইনস্টল করেন তবে আপনাকে তালিকাটি "অ্যাডজাস্ট" করতে হবে, নামগুলি আপনার ডিরেক্টরিগুলি PKG_CONFIG_PATH এ যুক্ত করুন
$ export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:<your-directory>
PKG_CONFIG_PATH
কেবলমাত্র yourPkg.pc
( pkg-config
স্পেসিফিকেশন) ফাইলগুলি অনুসন্ধান করতে অতিরিক্ত ডিরেক্টরি সুনির্দিষ্ট করে। এটি গ্রন্থাগার অনুসন্ধান ডিরেক্টরিগুলির মতো পিকেজি-নির্দিষ্ট জিনিসগুলিকে প্রভাবিত করে না।
আমি এক্সেলের সর্বশেষতম সংস্করণটি ইনস্টল করার চেষ্টা করছিলাম এবং আমি দৌড়ে ./configure
এসেছি এবং এটি পেয়েছি:
configure: error: Package requirements (openssl) were not met:
No package 'openssl' found
Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.
Alternatively, you may set the environment variables SSL_CFLAGS
and SSL_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.
সুতরাং আমি চেষ্টা করেছি:
$ pkg-config --cflags openssl
এবং আমি পেয়েছি:
Package openssl was not found in the pkg-config search path.
Perhaps you should add the directory containing `openssl.pc'
to the PKG_CONFIG_PATH environment variable
No package 'openssl' found
স্পষ্টতই আমি ওপেনসেল ইনস্টল করেছিলাম ( sudo apt-get install openssl
) তবে উপরের আউটপুটে আপনি দেখতে পাচ্ছেন এটিতে "কোনও প্যাকেজ 'ওপেনসেল' পাওয়া যায় নি"। তাই আমি নিশ্চিত হয়েছি যে:
find / -type f -name "*.pc" |& grep -iv permission | grep openssl
দেখা যাচ্ছে আমার নিশ্চিতভাবে আমার আরও কিছু প্যাকেজ দরকার, তাই কিছুটা গুগলিং এবং আমি দেখতে পেলাম যে আমাকে এই প্যাকেজটি ইনস্টল করতে হয়েছিল:
sudo apt-get install libssl-dev
এবং এই সমস্ত pkg- কনফিগার পাথ env ভেরিয়েবল পরিবর্তন সঙ্গে কিছুই ছিল।
যারা https://github.com/confluentinc/confluent-kafka-go ব্যবহার করছেন
Librdkafka ইনস্টল করুন দয়া করে
এখন আপনি গো ইনস্টল / গো রান রান বিল্ড ব্যবহার করতে পারেন