MariaDB स्थापित करना जब Apt रिपोर्ट करता है तो MariaDB के पास बिना निर्भरता या टूटे हुए पैकेज हैं


9

मैंने इस साफ Ubuntu इंस्टालेशन पर MariaDB स्थापित करने के लिए सब कुछ करने की कोशिश की है, लेकिन मुझे यह त्रुटि मिलती रहती है,

Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
mariadb-server : Depends: mariadb-server-5.5 (= 5.5.33a+maria-1~saucy) 
but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

मैंने इसे आज़माने और स्थापित करने के लिए इस गाइड का पालन किया है, http://www.unixmen.com/install-lemp-server-nginx-mysql-mariadb-php-ubuntu-13-10-server/

और मैंने १३.१० https://downloads.mariadb.org/mariadb/repositories/ के लिए MariaDB डाउनलोड पृष्ठ पर "आधिकारिक" गाइड का भी पालन किया है

लेकिन कुछ भी काम होता नहीं दिख रहा है।

संपादित करें 1

मैंने दोनों की कोशिश की है कि मैं पीपीए जोड़ने के बाद बिना किसी निर्भरता के कैसे हल करूं? और MariaDB कैसे स्थापित करें? लेकिन यह अभी भी मुझे वह त्रुटि देता है जो मैंने ऊपर पोस्ट की है।

यह एक ताजा उबंटू स्थापित है जिसमें शायद ही कुछ भी स्थापित है।

संपादित करें २

सभी चेक बॉक्स अपडेट में टिकट हैं। मैं भागा:

sudo apt-get update && sudo apt-get -f install mariadb-server-5.5"=5.5.33a+maria-1~saucy"

और इसने मुझे यह त्रुटि दी:

The following packages have unmet dependencies:
mariadb-server-5.5 : Depends: mariadb-client-5.5 (>= 5.5.33a+maria-1~saucy) 
but it is not going to be installed
Depends: mariadb-server-core-5.5 (>= 5.5.33a+maria-1~saucy) 
but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

सूचीबद्ध पैकेज को स्थापित करने के लिए एक बार इस कमांड को चलाएं: sudo apt-get update && sudo apt-get -f install mariadb-server-5.5"=5.5.33a+maria-1~saucy"सुनिश्चित करें कि आपने सॉफ़्टवेयर स्रोतों में अपडेट टैब के तहत सभी चेक-बॉक्स को टिक कर दिया है । इसे चलाने के लिए: सॉफ़्टवेयर स्रोत खोलने के लिए । यदि आपको मेरे द्वारा बताए गए कमांड में कोई त्रुटि / संदेश मिलता है तो इसे अपने प्रश्न में पोस्ट करें। sudo software-properties-gtk
सौरव कुमार

ऐसा लगता है कि आप जल्द ही अपनी समस्या को हल करने जा रहे हैं। मुख्य चाल यह है कि आपको स्थापित करने के लिए सभी आवश्यक पैकेजों को एक पंक्ति में सूचीबद्ध करना है। उदाहरण के लिए अपने नए आउटपुट के रूप में जिसे आप निष्पादित करना चाहते हैं: sudo apt-get -f install mariadb-server-5.5"=5.5.33a+maria-1~saucy mariadb-client-5.5"=5.5.33a+maria-1~saucy" mariadb-server-core-5.5"=5.5.33a+maria-1~saucy" पैटर्न को पकड़ो जो मैं कर रहा हूं, इसलिए यदि आपको इंस्टॉल करने के लिए कुछ और पैकेज मिलते हैं, तो आपको उसी लाइन में उसी संरक्षक के रूप में शामिल करना होगा। मुझे पता है कि यह मुश्किल होगा लेकिन आशा है कि यह आपकी मदद करेगा। जवाब दे दो।
सौरव कुमार

ठीक है, मैं mariadb-common को स्थापित करने में कामयाब रहा और libmariadbclient18 को स्थापित करने की कोशिश की, जो libmysqlclient18 पर निर्भर करता है, लेकिन यह कहता है कि मेरे पास पहले से libdbd-mysql-perl के साथ libmysqlclient18 है।
एंड्रियास

@ Ecaz क्या आपको अपनी समस्या का हल मिल गया है? मैं वही अनुभव कर रहा हूं।
जॉन कोप्स

मुझे यह त्रुटि मिल रही है:libmariadbclient18 : Depends: libmysqlclient18 (= 5.5.33a+maria-1~saucy) but 5.5.34-0ubuntu0.13.10.1 is to be installed
जॉन कोप्स

जवाबों:


16

मारियाडब और उबंटू डेबियन रिपोजिटरी के बीच संस्करण बेमेल देखें

यह mybql-common या libmysqlclient के संस्करण संख्याओं के लिए दुर्लभ है, उबंटू या डेबियन रिपॉजिटरी में मारियाडीपी रिपॉजिटरी में होने की तुलना में अधिक है, लेकिन ऐसा हुआ है। जब भी यह वितरण बग्स में MySQL के संस्करण में मौजूद बग्स के लिए महत्वपूर्ण बग फिक्स रिलीज़ के कारण हुआ है, लेकिन जो मारियाडीबी रिपॉजिटरी में मारियाडीबी के संस्करण में पहले से ही तय किया गया था।

यदि ऊपर वर्णित स्थिति मौजूद है, जब आप MariaDB स्थापित करने का प्रयास करते हैं, तो आपको इस तरह एक त्रुटि मिलेगी:
The following packages have unmet dependencies:
mariadb-server : Depends: mariadb-server-5.5 but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
इसे ठीक करने का एक तरीका उन दो पैकेजों का सटीक संस्करण निर्दिष्ट करना है जिन्हें आप इंस्टॉल करना चाहते हैं। ऐसा करने के लिए, पहले प्रभावित पैकेजों की पूर्ण संस्करण संख्या निर्धारित करें। ऐसा करने का एक आसान तरीका 'एप्ट-कैश शो' है:
apt-cache show mysql-common | grep Version
apt-cache show libmysqlclient18 | grep Version

यह स्थिति इस लेखन के रूप में है, क्योंकि संस्करण संख्याएँ निम्नानुसार दिखाई जाती हैं:

Version: 5.5.34-0ubuntu0.13.10.1
Version: 5.5.34+maria-1~saucy

MariaDB पेज दो समाधान देता है।

पहला समाधान: पैकेज संस्करण को निर्दिष्ट करना

उपरोक्त में से प्रत्येक के लिए आपको संस्करणों की एक सूची दी जाएगी। मारियाडीबी रिपॉजिटरी के लोगों में संस्करण स्ट्रिंग्स में "मरदब" होगा और आप जो चाहते हैं। हाथ में संस्करण संख्याओं के साथ आप स्पष्ट रूप से संस्करण संख्याओं को निर्दिष्ट करके MariaDB स्थापित करने में सक्षम होंगे:
apt-get install mariadb-server-5.5 mariadb-client-5.5 \
libmysqlclient18=<version-number> \
mysql-common=<version-number>

जो है

apt-get install mariadb-server-5.5 mariadb-client-5.5 \
 libmysqlclient18=5.5.34+maria-1~saucy \
 mysql-common=5.5.34+maria-1~saucy

नोट: अपडेट किया गया 5.5.34 वर्तमान संस्करण को प्रतिबिंबित करने के लिए 2014.01.28 के रूप में [RealPariah] स्थापना के बाद, आपको संकुल को तब तक पकड़ना होगा जब तक कि संस्करण संख्याएं सिंक में वापस नहीं आ जाती हैं।

MariaDB स्थापित होने के बाद, और जब तक संस्करण संख्या समस्या मौजूद रहती है, तब तक "उन्नत" libmysqlclient और mysql- सामान्य संकुल को स्थापित करने के लिए एक 'apt-get dist-upgrade', MariaDB को हटाने का प्रयास करेगा। ऐसा होने से रोकने के लिए आप उन्हें पकड़ सकते हैं ताकि उपयुक्त उन्हें अपग्रेड करने का प्रयास न करें। ऐसा करने के लिए, एक टर्मिनल खोलें, `sudo -s` के साथ रूट बनें, और फिर निम्न दर्ज करें:
echo libmysqlclient18 hold | dpkg --set-selections
echo mysql-common hold | dpkg --set-selections
होल्ड आपको MariaDB को अपग्रेड करने से रोकेगा, इसलिए जब आप होल्ड को हटाना चाहते हैं, तो एक टर्मिनल खोलें, 'sudo -s' के साथ रूट बनें, और फिर निम्न दर्ज करें:
echo libmysqlclient18 install | dpkg --set-selections
echo mysql-common install | dpkg --set-selections
फिर आप सामान्य रूप से मारियाडीबी को अपग्रेड करने में सक्षम होंगे (उदाहरण के लिए `सूडो एप्ट-गेट अपडेट के साथ; सूदो एप-गेट अपग्रेड`)।

मुझे कैसे पता चलेगा कि संस्करण संख्याएं फिर से मेल खाती हैं?

आप MariaDB.org पर नई रिलीज़ की ईमेल चेतावनी के लिए साइन अप करके MariaDB संस्करण संख्या को ट्रैक कर सकते हैं । साइट के अनुसार, यह एक है low-traffic announce-only list

इसके अतिरिक्त, जब पैकेज संस्करण एक बार फिर से सिंक में होते हैं, तो आपको एक संदेश देखना बंद कर देना चाहिए कि केवल 2 आयोजित पैकेज आयोजित किए जाएंगे, लेकिन सभी mariadb संकुल आयोजित किए जाएंगे:

The following packages have been kept back:
libmariadbclient18 libmysqlclient18 linux-generic linux-headers-generic
linux-image-generic mariadb-client-5.5 mariadb-client-core-5.5
mariadb-server mariadb-server-5.5 mariadb-server-core-5.5 mysql-common

यह इंगित करता है कि पैकेज संख्याएं सिंक में वापस आ गई हैं, जिसे सिनैप्टिक या समान टूल में भी जांचा जा सकता है।

दूसरा समाधान: मारिनडीबी रिपॉजिटरी को पिन करना

एक और चीज जो आप कर सकते हैं वह है मारियाडीबी रिपॉजिटरी का उपयोग करना। यह निम्नलिखित सामग्री के साथ `/ etc / apt / वरीयताओं.d /` के तहत एक फ़ाइल बनाकर किया जाता है:
Package: *
Pin: origin <mirror-domain>
Pin-Priority: 1000

<mirror-domain>आपके द्वारा उपयोग किए जाने वाले MariaDB दर्पण के डोमेन नाम से प्रतिस्थापित करें। उदाहरण के लिए, ftp.osuosl.org। जगह में पिन फ़ाइल के साथ, आपके MariaDB रिपॉजिटरी के पैकेज में सिस्टम रिपॉजिटरी से पैकेज पर प्राथमिकता होगी।

आप सिस्टम सेटिंग्स >> सॉफ़्टवेयर और अपडेट्स में उपयोग किए जा रहे दर्पण का नाम पा सकते हैं , या यदि आप उबंटू, सिनैप्टिक >> सेटिंग्स >> रिपॉजिटरी , या के किसी अन्य स्वाद का उपयोग कर रहे हैं cat /etc/apt/sources.list

Pin-Priorityइस मामले जरूरतों में से अधिक होना या 1000 के बराबर है, जो करने के लिएcauses a version to be installed even if this constitutes a downgrade of the package

( man 5 apt_preferencesअन्य मामलों में विकल्पों पर अधिक जानकारी के लिए देखें ।)

पिनिंग प्राथमिकताओं का नामकरण

Note that the file in the /etc/apt/preferences.d directory are parsed in alphanumeric ascending order and need to obey the following naming convention:

The files have either no or "pref" as filename extension and only contain alphanumeric, hyphen (-), undescore (_), and period (.) characters. Otherwise APT will print a notice that it has ignored a file...

(स्रोत: man 5 apt_preferences)

तो, नाम ही मायने नहीं रखता है, लेकिन एक अच्छा नाम कुछ ऐसा होगा 50_mariadb। यह शामिल पैकेज की पहचान करता है और प्रसंस्करण क्रम में इस फाइल के बाद अन्य पिनिंग वरीयताओं को आसानी से रखने से पहले अनुमति देता है।


मैं पहले समाधान की कोशिश करूंगा लेकिन आपको कैसे पता चलेगा कि बेमेल को कब ठीक किया गया है? क्या मुझे हर बार अपडेट जारी करने पर परिवर्तन लॉग को परिमार्जन करना होगा?
एंड्रियास

मैंने पहली विधि का उपयोग किया और यह बहुत आसानी से चली गई। निर्भरता की कोई चिंता नहीं। मैंने mariadb संस्करण संख्या
chaskes

दूसरे समाधान के लिए पिनिंग फ़ाइल का नाम क्या होना चाहिए?
थॉमस टेलर

I ♥ आप अपने कौशल के लिए। मारीदब पैकेज बहुत खराब हैं। मैं इस तथ्य पर आधारित है कि मुझे पहले कभी भी उपरोक्त में से कोई भी नहीं करना पड़ा था, लेकिन ऊपर ने मुझे स्थापित कर दिया। धन्यवाद!
जेट्टेरो

1
@ थोमस-टेलर ने पिनिंग फ़ाइल के नामकरण में जानकारी जोड़ी।
chaskes

2

मैं Ubuntu में इसी तरह का एक मुद्दा था 14.10 MySQL से मारिया DB में उन्नयन। अर्थात् मैं के साथ फंस जाएगा

 libmysqlclient18:amd64 10.0.16+maria-1~utopic (Multi-Arch: no) is not co-installable with libmysqlclient18 which has multiple installed instances

बिना किसी लाभ के इन सुझावों का पालन करने के बाद, निम्नलिखित ने मेरी बहुत मदद की: जर्नलएक्सट्रैक द्वारा उबंटू सर्वर में मारबाडी के साथ MySQL को कैसे बदलें

संपादन / var / lib / dpkg / स्थिति और इस तरह libmysqlclient18 के दो उदाहरणों को हटाना:

Package: libmysqlclient18
Status: deinstall ok config-files
Priority: optional
Section: libs
Installed-Size: 3392
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Architecture: i386
Multi-Arch: same
Source: mysql-5.5
Version: 5.5.40-0ubuntu1
Config-Version: 5.5.40-0ubuntu1
Depends: mysql-common (>= 5.5.40-0ubuntu1), libc6 (>= 2.4), libgcc1 (>= 1:4.1.1), zlib1g (>= 1:1.1.4)
Pre-Depends: multiarch-support
Description: MySQL database client library

MySQL एक तेज, स्थिर और सच्चा बहु-उपयोगकर्ता, बहु-थ्रेडेड SQL डेटाबेस सर्वर है। SQL (स्ट्रक्चर्ड क्वेरी लैंग्वेज) दुनिया की सबसे लोकप्रिय डेटाबेस क्वेरी लैंग्वेज है। MySQL के मुख्य लक्ष्य गति, मजबूती और उपयोग में आसानी हैं। । इस पैकेज में क्लाइंट लाइब्रेरी शामिल है। होमपेज: http://dev.mysql.com/ ओरिजिनल-मेंटेनर: डेबियन मायक्यूएल मेंटेनर

मारियाडीबी को सुचारू रूप से स्थापित करने के लिए मुझे अनुमति दी।

sudo apt-get install mariadb-server

नोट : इस समाधान के काम करने से पहले मैंने libmariadbclient18 और libmysqlclient18 को हटाने के कई प्रयासों के बाद यहां प्राप्त किया। जब तक इन टूटे हुए पैकेजों के रूप में रिपोर्ट किए जाने से पहले मैं किसी अन्य मरम्मत का प्रयास नहीं कर सकता, तब तक मैं पिछले मुद्दों को प्राप्त नहीं कर सका।

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