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