आरपीएम ऑटो स्थापित निर्भरता कैसे करें


138

मैंने दो RPM पैकेज बनाए हैं

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

proj1libtest1.soमौजूद फ़ाइल पर निर्भर करता है और यह आरपीएम संकुल में सही ढंग से परिलक्षित होता है जैसा कि यहाँ देखा गया है:

user@my-pc:~$ rpm -qp --requires proj1-1.0-1.x86_64.rpm
libtest1.so()(64bit)

user@my-pc:~$ rpm -qp --provides libtest1-1.0-1.x86_64.rpm
libtest1.so()(64bit)

proj1एक लापता निर्भरता के कारण विफलताओं की स्थापना ।

user@my-pc:~$ 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

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

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

जवाबों:


102

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

CentOS wiki में एक अच्छा पेज है जो इस पर एक कैसे-प्रदान करता है। CentOS wiki HowTos / CreateLocalRepos


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

  1. आप के लिए एक निर्देशिका बनाएँ स्थानीय भंडार, जैसे /home/user/repo
  2. RPMs को उस डायरेक्टरी में ले जाएं।
  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
    

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

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

यह बहुत अच्छी तरह से काम नहीं करता है यदि आप आरपीएम को मेरी तरह एआईएम पर स्थापित करने के लिए आरपीएम को स्क्रिप्ट करने की कोशिश कर रहे हैं ;-)
ट्रिकी

1
@ मैक्स 13, yum localinstallयह और यह पहले से ही यहां पोस्ट किए गए उत्तर के समान है , उन स्थितियों के लिए पहले से ही डाउनसाइड्स के साथ जहां निर्भरता yum रेपोस में नहीं है (देखें यह विधि तब तक काम नहीं करेगी जब तक [...] भाग)।
gertvdijk

यह sudo yum --disablerepo=* --enablerepo=local install packagename.arch.rpmसुनिश्चित करने के साथ ही कोई इंटरनेट कनेक्शन yumनहीं है कि यह सुनिश्चित करने के लिए अन्य रिपॉजिटरी में नहीं दिखता है।
अंशुमान गोएल

194

लिंक @gertvdijk ने एक स्थानीय भंडार को कॉन्फ़िगर किए बिना वांछित परिणाम प्राप्त करने का एक त्वरित तरीका दिखाया है:

$ yum --nogpgcheck localinstall packagename.arch.rpm

बस packagename.arch.rpmउस RPM फ़ाइल नाम में परिवर्तन करें जिसे आप इंस्टॉल करना चाहते हैं।

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

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


7
नहीं, यह तब तक काम नहीं करेगा जब तक libtest1-1.0-1.x86_64.rpmकि कहीं एक रिपॉजिटरी में नहीं है, या दोनों पैकेज कमांड लाइन पर निर्दिष्ट हैं जैसे " rpm -i" की आवश्यकता होगी। मैंने अभी इसे yum3.4.3 (फेडोरा 18) पर सत्यापित किया है । यहां ट्रांस्क्रिप्ट से पता चलता है कि यह updatesनिर्भरता के लिए रेपो में जाता है , तब भी जब फाइलें वहीं होती हैं।
आरोन डी। मार्स्को

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

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

2
कृपया जो मैंने लिखा है उसे फिर से पढ़ें। किसी भी निर्भरता को एक रिपॉजिटरी से डाउनलोड किया गया था, भले ही वे आरपीएम आपके द्वारा स्थापित निर्देशिका में स्थानीय रूप से उपलब्ध हों।
आरोन डी। मरास्को

1
@ AaronD.Marasco मैं इस बात पर बहस नहीं कर रहा हूं कि विशिष्ट उदाहरण ओपी के बारे में पूछने के लिए अन्य पोस्ट किया गया समाधान बेहतर है। मेरा जवाब, हालांकि, शीर्षक में प्रश्न का उत्तर देने के लिए सही है और एक स्थानीय रेपो को कॉन्फ़िगर करने की तुलना में बहुत तेज़ है, और दूसरों की मदद करेगा जो यहाँ हवा देते हैं जैसे मैंने किया था जो एक तेजी से रास्ता चाहते थे कि स्वचालित रूप से निर्भरता स्थापित करने के लिए यम प्राप्त करें आरपीएम की आवश्यकता होती है। यह स्टैक ओवरफ्लो का उद्देश्य है, उत्तर की खोज करने वाले समुदाय की मदद करना और न केवल ओपी की मदद करना।
मैथ्यू

28

के लिए DNF उपयोगकर्ताओं बस का उपयोग dnf install *.rpm, localinstallअब जरूरत है।


1
ठीक यही कहने के लिए यहाँ आया था
nawfel bgh

1
धन्यवाद, मैं स्थापित करने के लिए संघर्ष कर रहा था mysql-workbenchके साथ rpm -ivh। अंततः इस पद के साथ समाप्त हो गया। DNF ने किया ट्रिक
ब्लूबर्ड

21

मेरे लिए सिर्फ साथ काम किया

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

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

[root@localhost 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

सबसे आसान तरीका मुझे लगता है
शम्स

प्रत्यक्ष आरपीएम समाधान नहीं, लेकिन मुझे यह सबसे अच्छा लगता है।
टीफुटो

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

9

मुझे एक सरल समाधान मिला। यदि आपके पास सभी RPM एक ही डायरेक्टरी में हैं, तो आपको बस इतना करना है,

$ sudo rpm -i *.rpm

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


5
यदि निर्भरता वर्तमान निर्देशिका में नहीं है, तब भी मामला संभाल नहीं है।
डिंग-यी चेन

4

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

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

package_file_nameऊपर स्थानीय पूर्ण या संबंधित पथ एक यूआरएल (संभवतः भी एक 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इनवोकेशन के बीच का अंतर केवल तब दिखाई देगा जब सूचीबद्ध पैकेजों में से एक में कमांड लाइन पर सूचीबद्ध पैकेजों पर आगे निर्भरता न हो।

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

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


0

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

नोट: enterPkgNameHere.rpmअपने .rpm फ़ाइल के नाम से प्रतिस्थापित करें ।


0

OpenSUSE लीप 15 के मामले में, मैं इसी तरह की त्रुटि प्राप्त कर रहा हूं:

> sudo rpm -i opera-stable_53.0.2907.68_amd64.rpm 
[sudo] password for root: 
warning: opera-stable_53.0.2907.68_amd64.rpm: Header V4 RSA/SHA512 Signature, key ID a5c7ff72: NOKEY
error: Failed dependencies:
    at is needed by opera-stable-53.0.2907.68-0.x86_64

मैं इस कमांड को यह पता लगाने के लिए चलाता हूं कि निर्भरताएं क्या हैं:

> sudo zypper install opera-stable_53.0.2907.68_amd64.rpm 
Loading repository data...
Reading installed packages...
Resolving package dependencies...

The following 4 NEW packages are going to be installed:
  at libfl2 libHX28 opera-stable

4 new packages to install.
Overall download size: 50.3 MiB. Already cached: 0 B. After the operation, additional 176.9 MiB will be used.
Continue? [y/n/...? shows all options] (y): n

फिर मैं निर्भरता स्थापित करने के लिए यह कमांड चलाता हूं:

> sudo zypper in at
Loading repository data...
Reading installed packages...
Resolving package dependencies...

The following 3 NEW packages are going to be installed:
  at libfl2 libHX28

3 new packages to install.
Overall download size: 208.6 KiB. Already cached: 0 B. After the operation, additional 600.4 KiB will be used.
Continue? [y/n/...? shows all options] (y): y

तब मैं rpmफ़ाइल को स्थापित करने के लिए इसे चलाता हूं :

> sudo rpm -i opera-stable_53.0.2907.68_amd64.rpm

मुझे यकीन नहीं है कि यह सबसे अच्छा अभ्यास है, हालांकि इसने मेरी समस्या को हल किया।


0

Step1: दिए गए स्थानों में सभी rpm pkg की प्रतिलिपि बनाएँ

Step2: अगर craitepo पहले से इंस्टॉल नहीं है, क्योंकि यह डिफ़ॉल्ट रूप से नहीं होगा, तो इसे इंस्टॉल करें।

[root@pavangildamysql1 8.0.11_rhel7]# yum install createrepo

Step3: रिपॉजिटरी मेटाडेटा बनाएं और नीचे अनुमति दें

[root@pavangildamysql1 8.0.11_rhel7]# chown -R root.root /scratch/PVN/8.0.11_rhel7
[root@pavangildamysql1 8.0.11_rhel7]# createrepo /scratch/PVN/8.0.11_rhel7
Spawning worker 0 with 3 pkgs
Spawning worker 1 with 3 pkgs
Spawning worker 2 with 3 pkgs
Spawning worker 3 with 2 pkgs
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
[root@pavangildamysql1 8.0.11_rhel7]# chmod -R o-w+r /scratch/PVN/8.0.11_rhel7

Step4: /etc/yum.repos.d/mysql.repo पर निम्न सामग्री के साथ रिपॉजिटरी फ़ाइल बनाएँ

[local]
name=My Awesome Repo
baseurl=file:///scratch/PVN/8.0.11_rhel7
enabled=1
gpgcheck=0

स्टेप 5 इंस्टॉल करने के लिए इस कमांड को रन करें

[root@pavangildamysql1 local]# yum --nogpgcheck localinstall mysql-commercial-server-8.0.11-1.1.el7.x86_64.rpm

-2

सिंपल बस निम्न कमांड को रन करे।

sudo dnf install *package.rpm

अपना पासवर्ड डालें और आपका काम हो गया।


-5

सोर्स फाइल से RPM जेनरेट करने की प्रक्रिया: 1) .gz एक्स्टेंशन वाली सोर्स फाइल डाउनलोड करें। 2) yum install से rpm-build और rpmdevtools स्थापित करें। (rpmbuild फ़ोल्डर उत्पन्न किया जाएगा ... विशेषण, स्रोत, RPMS .. फ़ोल्डर rpmbuild फ़ोल्डर के भीतर उत्पन्न किया जाना चाहिए)। 3) स्रोत कोड को कॉपी करें। स्रोत फ़ोल्डर में जाएं। (rpmbuild / स्रोत) 4) निम्नलिखित कमांड का उपयोग करके टार बॉल को अनटार करें। स्रोत फ़ोल्डर पर जाएं: rpmbuild / SOURCES जहां टार फ़ाइल मौजूद है। कमांड: जैसे टार -xvzf httpd-2.22.tar.gz httpd-2.22 फोल्डर एक ही पथ में उत्पन्न होगा। अगर apr और apr-use और httpd-2.22 / srclib फ़ोल्डर में देखें। अगर apr और apr-use doesnt मौजूद नहीं है, तो अपाचे साइट से नवीनतम संस्करण डाउनलोड करें, इसे अनटार करें और इसे httpd-2.22 / srclib फ़ोल्डर के अंदर डालें। यह भी सुनिश्चित करें कि आपके पास अपने सिस्टम में pcre इंस्टॉल है।

5) निकाले गए फ़ोल्डर पर जाएं और फिर कमांड के नीचे टाइप करें ।/configure --prefix = / usr / local / apache2 --with-शामिल- apr-enable -xy-enable -xy -xy-balancer --with-mpm = कार्यकर्ता - चालू-मॉड-स्टेटिक = सभी 6) कमांड के नीचे चला जाता है जब एक बार कॉन्फ़िगर सफल होता है: सफल निष्पादन के बाद 7) कमांड बनाएं ओके कमांड रन करें: था उसी फ़ोल्डर में जाँच करें। (यदि आपके पास चेकइंस्टॉफ़्ट सॉफ़्टवेयर नहीं है, तो कृपया साइट से नवीनतम संस्करण डाउनलोड करें) इसके अलावा चेक-इन सॉफ़्टवेयर में बग है, जिसे निम्न तरीके से हल किया जा सकता है ::::: checkinstallrc खोजें और फिर विम कमांड का उपयोग करके ट्रांसलेट = 1 को ट्रांसलेट = 0 पर बदलें। बहिष्कृत पैकेज के लिए भी जाँच करें: EXCLUDE = "/ selinux" 8) चेकवॉइस विकल्प के लिए पूछेगा (टाइप करें R यदि आप सोर्स फाइल के लिए tp बिल्ड आरपीएम चाहते हैं) 9) Done .rpm फाइल rpmbuild / RPMS फ़ाइल के अंदर RPMS में बनाई जाएगी। .. शुभकामनाएं ....

सादर, प्रेरणा


किसी ने कुछ भी बनाने के बारे में कहां पूछा? यह पहले से निर्मित RPM की निर्भरता को हल करने के बारे में था।
क्रेग जैक्सन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.