2012-12-14 23 views
90

मैं दो RPM पैकेजआरपीएम ऑटो निर्भरता

  • proj1-1.0-1.x86_64.rpm
  • libtest1-1.0-1.x86_64.rpm

proj1 फ़ाइल libtest1.so मौजूद होने पर निर्भर करता है का निर्माण किया है स्थापित करने के लिए कैसे और यह RPM संकुल में सही ढंग से देखा जा सकता है जैसा कि यहां देखा गया है:

[email protected]:~$ rpm -qp --requires proj1-1.0-1.x86_64.rpm 
libtest1.so()(64bit) 

[email protected]:~$ rpm -qp --provides libtest1-1.0-1.x86_64.rpm 
libtest1.so()(64bit) 

proj1 की स्थापना अनुपलब्ध निर्भरता के कारण विफल हो जाती है।

[email protected]:~$ rpm -ivh proj1-1.0-1.x86_64.rpm 
error: Failed dependencies: 
libtest1.so()(64bit) is needed by proj1-1.0-1.x86_64.rpm 

मैं कैसे सुनिश्चित करूँ कि libtest1-1.0-1.x86_64.rpm proj1-1.0-1.x86_64.rpm की स्थापना के दौरान स्वचालित रूप से स्थापित किया गया है?

मैंने --aid विकल्प rpm -i के साथ here वर्णित किया है लेकिन यह मेरे लिए काम नहीं करता है।

क्या कोई अन्य तरीका है?

किसी भी मदद के लिए धन्यवाद।

उत्तर

70

एक (स्थानीय) भंडार बनाएं और yum का उपयोग करें ताकि यह आपके लिए निर्भरता को हल कर सके।

CentOS विकी के पास एक अच्छा पृष्ठ है जो इस पर एक तरीका प्रदान करता है। CentOS wiki HowTos/CreateLocalRepos


सारांशित और आगे कम से कम (आदर्श नहीं है, लेकिन तेज):

  1. आप स्थानीय भंडार है, उदा के लिए एक निर्देशिका बनाएं /home/user/repo
  2. RPM को उस निर्देशिका में ले जाएं।
  3. फिक्स कुछ स्वामित्व और फाइल सिस्टम अनुमतियाँ:

    # chown -R root.root /home/user/repo 
    
  4. createrepo पैकेज को स्थापित करता है, तो अभी तक स्थापित नहीं है, और चलाने के

    # createrepo /home/user/repo 
    # chmod -R o-w+r /home/user/repo 
    
  5. भंडार विन्यास फाइल बनाएं, उदा /etc/yum.repos.d/myrepo.repo युक्त

    [local] 
    name=My Awesome Repo 
    baseurl=file:///home/user/repo 
    enabled=1 
    gpgcheck=0 
    
  6. अपने पैकेज को स्थापित करें

    # yum install packagename 
    
+28

आपके द्वारा प्रदान किया गया लिंक सिर्फ एक ही पंक्ति के साथ मेरा मामला हल करता है: 'yum --nogpgcheck localinstall packagename.arch.rpm'। – Matthew

+0

@ मैथ्यू कूल, जो पूरे स्थानीय भंडार चरणों को खत्म कर देगा। एक उत्तर के रूप में पोस्ट करें मैं कहूंगा। – gertvdijk

+0

धन्यवाद @ मैथ्यू :) –

139

लिंक प्रदान की @gertvdijk एक स्थानीय भंडार को विन्यस्त बिना वांछित परिणाम प्राप्त करने के लिए एक त्वरित तरीका पता चलता का उपयोग कर:

$ yum --nogpgcheck localinstall packagename.arch.rpm 

बस आरपीएम फ़ाइल नाम में packagename.arch.rpm बदलें जो आप चाहते हैं इंस्टॉल करें।

संपादित करें बस एक स्पष्टीकरण, यह स्वचालित रूप से सभी निर्भरताओं को स्थापित करेगा जो पहले से ही सिस्टम YUM रिपॉजिटरीज़ के माध्यम से उपलब्ध हैं।

यदि आपके पास अन्य आरपीएम द्वारा निर्भर निर्भरताएं हैं जो सिस्टम की रिपॉजिटरीज़ में नहीं हैं, तो यह विधि तब तक काम नहीं करेगी जब तक प्रत्येक आरपीएम को कमांड लाइन पर packagename.arch.rpm के साथ निर्दिष्ट नहीं किया जाता है।

+5

नहीं, यह तब तक काम नहीं करेगा जब तक कि 'libtest1-1.0-1.x86_64.rpm' कहीं और एक भंडार में नहीं है, या दोनों संकुल कमांड लाइन पर निर्दिष्ट हैं जैसे "rpm -i'" की आवश्यकता होगी। मैंने इसे 'yum' 3.4.3 (फेडोरा 18) पर अभी सत्यापित किया है। ट्रांसक्रिप्ट [यहां] (http://pastebin.com/HpjRtqFh) यह दर्शाता है कि यह निर्भरताओं के लिए 'अपडेट्स' रेपो पर जाता है, भले ही फाइलें ठीक हों। –

+3

@ AaronD.Marasco शायद आप प्रश्न में वर्णित विशिष्ट मामले के बारे में सही हैं, लेकिन यह एक-लाइनर किसी के लिए यहां घुमाए जाने के लिए बहुत आसान है जैसा मैंने किया था, और शीर्षक में सवाल के लिए एक पूरी तरह से वैध जवाब है, "कैसे आरपीएम ऑटो इंस्टॉल निर्भरताओं बनाने के लिए "। – Matthew

+3

नहीं, यह निर्भरता "ऑटो इंस्टॉलिंग" नहीं है - आप उन्हें कमांड लाइन पर निर्दिष्ट कर रहे हैं, वैसे ही आप "rpm -i'" के साथ भी करेंगे, इसलिए 'yum' का उपयोग करके आपको कोई अतिरिक्त लाभ नहीं मिलता है। –

4

मुझे एक आसान समाधान मिला। आप एक ही निर्देशिका में सभी RPMs है, तो तुम सब करने की जरूरत है,

$ sudo rpm -i *.rpm 

rpm इन स्थापित करने के लिए सही क्रम यह पता लगाने की लगती है और RPMs स्थापित करता है।

+4

यदि निर्भरता वर्तमान निर्देशिका में नहीं है तो भी यह मामला संभाल नहीं लेता है। –

+0

यह मेरी समस्या को हल करने का सबसे तेज़ तरीका था। धन्यवाद! –

19

डीएनएफ उपयोगकर्ताओं के लिए बस dnf install *.rpm, localinstall का उपयोग करने की आवश्यकता नहीं है।

+1

यह कहने के लिए यहां आया था कि यह –

+0

धन्यवाद, मैं 'आरएसपी-एवीएच' के साथ 'mysql-workbench' स्थापित करने के लिए संघर्ष कर रहा था। आखिरकार इस पोस्ट के साथ समाप्त हो गया। डीएनएफ ने चाल की। – BlueBird

10

मेरे लिए

# yum install ffmpeg-2.6.4-1.fc22.x86_64.rpm 

के साथ सिर्फ काम किया है और स्वचालित रूप से प्राधिकरण पूछा depedencies डाउनलोड करने तथा। उदाहरण के नीचे, मैं फेडोरा 22

[[email protected] lukas]# yum install ffmpeg-2.6.4-1.fc22.x86_64.rpm 
Yum command has been deprecated, redirecting to '/usr/bin/dnf install ffmpeg-2.6.4-1.fc22.x86_64.rpm'. 
See 'man dnf' and 'man yum2dnf' for more information. 
To transfer transaction metadata from yum to DNF, run: 
'dnf install python-dnf-plugins-extras-migrate && dnf-2 migrate' 

Last metadata expiration check performed 0:28:24 ago on Fri Sep 25 12:43:44 2015. 
Dependencies resolved. 
==================================================================================================================== 
Package    Arch   Version         Repository      Size 
==================================================================================================================== 
Installing: 
SDL     x86_64   1.2.15-17.fc22       fedora       214 k 
ffmpeg    x86_64   2.6.4-1.fc22        @commandline     1.5 M 
ffmpeg-libs   x86_64   2.6.4-1.fc22        rpmfusion-free-updates   5.0 M 
fribidi    x86_64   0.19.6-3.fc22       fedora       69 k 
lame-libs    x86_64   3.99.5-5.fc22       rpmfusion-free     345 k 
libass    x86_64   0.12.1-1.fc22       updates       85 k 
libavdevice   x86_64   2.6.4-1.fc22        rpmfusion-free-updates   75 k 
libdc1394    x86_64   2.2.2-3.fc22        fedora       124 k 
libva     x86_64   1.5.1-1.fc22        fedora       79 k 
openal-soft   x86_64   1.16.0-5.fc22       fedora       292 k 
opencv-core   x86_64   2.4.11-5.fc22       updates      1.9 M 
openjpeg-libs   x86_64   1.5.1-14.fc22       fedora       89 k 
schroedinger   x86_64   1.0.11-7.fc22       fedora       315 k 
soxr     x86_64   0.1.2-1.fc22        updates       83 k 
x264-libs    x86_64   0.142-12.20141221git6a301b6.fc22   rpmfusion-free     587 k 
x265-libs    x86_64   1.6-1.fc22        rpmfusion-free     486 k 
xvidcore    x86_64   1.3.2-6.fc22        rpmfusion-free     264 k 

Transaction Summary 
==================================================================================================================== 
Install 17 Packages 

Total size: 11 M 
Total download size: 9.9 M 
Installed size: 35 M 
Is this ok [y/N]: y 
0

उपयोग कर रहा हूँ मैं इस में पड़ गए और क्या मेरे लिए काम किया निर्देशिका जहां .rpm फ़ाइल स्थित है अंदर से yum localinstall enterPkgNameHere.rpm चलाने के लिए किया गया था।

नोट: enterPkgNameHere.rpm को अपनी .rpm फ़ाइल के नाम से बदलें।

-2

स्रोत फ़ाइल से आरपीएम पैदा करने की प्रक्रिया:

  1. डाउनलोड स्रोत फ़ाइल with.gz विस्तार।
  2. yum इंस्टॉल से rpm-build और rpmdevtools इंस्टॉल करें। (rpmbuild फ़ोल्डर जेनरेट किया जाएगा ... स्पेस, स्रोत, आरपीएमएस .. फ़ोल्डर rpmbuild फ़ोल्डर के अंदर उत्पन्न किया जाना चाहिए)।
  3. स्रोत कोड.gz को SOURCES फ़ोल्डर में कॉपी करें। (Rpmbuild/SOURCES)
  4. निम्न आदेश का उपयोग करके टैर बॉल को अनार करें।
    • SOURCES फ़ोल्डर पर जाएं: rpmbuild/SOURCES जहां टैर फ़ाइल मौजूद है। कमांड: उदाहरण tar -xvzf httpd-2.22.tar.gz httpd-2.22 फ़ोल्डर उसी पथ में जेनरेट किया जाएगा। Httpd-2.22/srclib फ़ोल्डर में apr और apr-use और वहां जांचें। अगर apr और apr-util मौजूद नहीं है, तो अपाचे साइट से नवीनतम संस्करण डाउनलोड करें, इसे हटा दें और इसे httpd-2.22/srclib फ़ोल्डर में डालें। यह भी सुनिश्चित करें कि आपके सिस्टम में पिक्चर इंस्टॉल है।
  5. जाओ फ़ोल्डर निकाले के लिए और फिर आदेश नीचे टाइप करें: आदेश नीचे ./configure --prefix=/usr/local/apache2 --with-included-apr --enable-proxy --enable-proxy-balancer --with-mpm=worker --enable-mods-static=all
  6. भागो एक बार कॉन्फ़िगर सफल हुआ: make
  7. मेकअप आदेश रन के सफल निष्पादन के बाद: एक ही फ़ोल्डर में checkinstall। (यदि आपके पास चेकइंस्ट सॉफ़्टवेयर नहीं है तो कृपया साइट से नवीनतम संस्करण डाउनलोड करें) यह भी जांचें कि सॉफ़्टवेयर में बग है जिसे हल करके हल किया जा सकता है: checkinstallrc का पता लगाएं और फिर vim कमांड का उपयोग कर TRANSLATE = 1 को TRANSLATE = 0 में बदलें। इसके अलावा पैकेज को बाहर के लिए जाँच: अपवर्जित = "/ SELinux"
  8. हो गया है (यदि आप tp स्रोत फ़ाइल के लिए आरपीएम का निर्माण चाहते हैं प्रकार आर)
  9. checkinstall विकल्प के लिए पूछेंगे! आरपीएमबी फाइल आरपीएमबीआईल्ड/आरपीएमएस फाइल के अंदर आरपीएमएस फ़ोल्डर में बनाया जाएगा।
1

मैथ्यू का जवाब कई भावनाओं को जागृत करता है, इस तथ्य के कारण कि इसमें अभी भी मामूली जानकारी नहीं है। सामान्य कमांड यह होगी:

# yum --nogpgcheck localinstall <package1_file_name> ... <packageN_file_name> 

package_file_name ऊपर, स्थानीय पूर्ण या संबंधित पथ शामिल या एक URL (संभवतः भी एक URI) हो सकता है।

यम कमांड लाइन पर दी गई सभी पैकेज फ़ाइलों के बीच निर्भरताओं की खोज करेगा और यदि निर्भरताएं खोजने के लिए आईटी विफलता है, तो यह किसी कॉन्फ़िगर किए गए और सक्षम यम भंडारों का भी उपयोग करेगा।

न तो वर्तमान कार्यशील निर्देशिका, न ही package_file_name के पथों की खोज की जाएगी, सिवाय इसके कि इनमें से कोई भी निर्देशिका पहले सक्षम yum भंडार के रूप में कॉन्फ़िगर की गई है।

ओपी के मामले में

तो yum आदेश:

# cd <path with pkg files>; yum --nogpgcheck localinstall ./proj1-1.0-1.x86_64.rpm ./libtest1-1.0-1.x86_64.rpm 

, क्या करना होगा के रूप में करना होगा rpm:

# cd <path with pkg files>; rpm -i proj1-1.0-1.x86_64.rpm libtest1-1.0-1.x86_64.rpm 

इन yum और rpm आमंत्रण के बीच differencve ही दिखाई एक अगर होगा स्थापित किए जाने वाले संकुलों में कमांड लाइन पर सूचीबद्ध संकुल पर और निर्भरता नहीं थी।

ऐसे मामले में rpm केवल जारी रखने से इनकार कर देगा, जबकि yum किसी भी कॉन्फ़िगरेशन और सक्षम यम भंडारों का उपयोग निर्भरताओं की खोज के लिए करेगा, और संभवतः सफल हो सकता है।

वर्तमान कार्य निर्देशिका किसी भी मामले में नहीं खोजी जाएगी, सिवाय इसके कि इसे पहले सक्षम yum भंडार के रूप में कॉन्फ़िगर किया गया था।