अपने पर्स के बाद mysql- सर्वर को फिर से स्थापित नहीं कर सकता


29

मैंने हाल ही में उबंटू की एक नई स्थापना 16.04 की की थी। मैंने भी स्थापित किया mysql-serverऔर mysql-client(उनका डिफ़ॉल्ट संस्करण 5.7.12) के माध्यम से apt-get install

क्योंकि 5.7.12 कुछ मुद्दों को दिखा रहा था, मैंने इसे अनइंस्टॉल करने का फैसला किया। मैंने apt-get remove mysql-server mysql-clientपहले कोशिश की, लेकिन उस कलाकृतियों को देखा /etc/mysqlऔर /var/lib/mysqlहटाया नहीं।

मैंने तब कोशिश की apt-get --purge removed mysql-server mysql-client, लेकिन फिर भी कोई फर्क नहीं पड़ा।

इसलिए, मैंने मैन्युअल रूप से उन्हें (के माध्यम से rm -rf) हटा दिया । मैंने मैन्युअल रूप से सभी *mysql*फ़ाइलों को हटा दिया है /usr/जो किसी भी mysql-*निर्भरता पैकेज की तरह से आई हैं mysql-common

हालाँकि, अब, जब मैं फिर से स्थापित करना चाहता mysql-server and -clientहूँ, मुझे लग रहा है कि मैं नहीं कर सकता।

वास्तव में, अब मैं ऐसी अवस्था में हूं, जहां मैं न तो जा सकता हूं apt-get remove mysql-serverऔर न ही apt-get install mysql-server!

मैं जिस स्थिति में हूं, उसे कैसे ठीक करूं? यदि मेरा स्थानीय पैकेज रिपॉजिटरी मेटाडेटा दूषित हो गया है, तो मैं इसकी मरम्मत कैसे करूं?

मैं अपने सभी अन्य ऐप्स और वातावरण के साथ पूरे धन्य OS को फिर से इंस्टॉल करने से नफरत करना चाहूंगा, सिर्फ एक बार mysql-server

निम्नलिखित, उदाहरण के लिए, त्रुटि मुझे तब होती है जब मैं हटाने की कोशिश करता हूं mysql-server:

$ apt-get remove  mysql-server
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  libaio1 mysql-client-5.7 mysql-client-core-5.7 mysql-common mysql-server-5.7 mysql-server-core-5.7
Use 'apt autoremove' to remove them.
The following packages will be REMOVED:
  mysql-server
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
2 not fully installed or removed.
After this operation, 159 kB disk space will be freed.
Do you want to continue? [Y/n] 
(Reading database ... 237601 files and directories currently installed.)
Removing mysql-server (5.7.12-0ubuntu1) ...
Setting up mysql-server-5.7 (5.7.12-0ubuntu1) ...
Job for mysql.service failed because the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xe" for details.
invoke-rc.d: initscript mysql, action "start" failed.
dpkg: error processing package mysql-server-5.7 (--configure):
 subprocess installed post-installation script returned error exit status 1
Errors were encountered while processing:
 mysql-server-5.7
E: Sub-process /usr/bin/dpkg returned an error code (1)

और स्थापित करने की कोशिश करते समय, मुझे यह त्रुटि मिलती है:

$ apt-get -f install mysql-server
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following NEW packages will be installed:
  mysql-server
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
1 not fully installed or removed.
Need to get 0 B/10.1 kB of archives.
After this operation, 159 kB of additional disk space will be used.
Selecting previously unselected package mysql-server.
(Reading database ... 237599 files and directories currently installed.)
Preparing to unpack .../mysql-server_5.7.12-0ubuntu1_all.deb ...
Unpacking mysql-server (5.7.12-0ubuntu1) ...
Setting up mysql-server-5.7 (5.7.12-0ubuntu1) ...
Job for mysql.service failed because the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xe" for details.
invoke-rc.d: initscript mysql, action "start" failed.
dpkg: error processing package mysql-server-5.7 (--configure):
 subprocess installed post-installation script returned error exit status 1
dpkg: dependency problems prevent configuration of mysql-server:
 mysql-server depends on mysql-server-5.7; however:
  Package mysql-server-5.7 is not configured yet.

dpkg: error processing package mysql-server (--configure):
 dependency problems - leaving unconfigured
No apport report written because the error message indicates its a followup error from a previous failure.
                                                                                                          Errors were encountered while processing:
 mysql-server-5.7
 mysql-server
E: Sub-process /usr/bin/dpkg returned an error code (1)

यहाँ का उत्पादन है apt-get install -f:

$ apt-get install -f 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
2 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
Setting up mysql-server-5.7 (5.7.12-0ubuntu1) ...
Job for mysql.service failed because the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xe" for details.
invoke-rc.d: initscript mysql, action "start" failed.
dpkg: error processing package mysql-server-5.7 (--configure):
 subprocess installed post-installation script returned error exit status 1
dpkg: dependency problems prevent configuration of mysql-server:
 mysql-server depends on mysql-server-5.7; however:
  Package mysql-server-5.7 is not configured yet.

dpkg: error processing package mysql-server (--configure):
 dependency problems - leaving unconfigured
No apport report written because the error message indicates its a followup error from a previous failure.
                                                                                                          Errors were encountered while processing:
 mysql-server-5.7
 mysql-server
E: Sub-process /usr/bin/dpkg returned an error code (1)

ऐसा लगता है कि यह mysql-server-5.7एक खराब स्थिति में है, इसे पुनः स्थापित करने का प्रयास करें sudo apt-get install --reinstall mysql-server-5.7:।
fkraiem

कोई फर्क नहीं पड़ता, मुझे एक ही त्रुटि रेखा मिलती है: ... invoke-rc.d: initscript mysql, action "start" failed. ...कि मैं स्थापित कमांड के अन्य स्वादों के साथ मिल रहा हूं।
हैरी

फिर इसे दूर करने के लिए, का प्रयास करें ... sudo apt-get remove --purge mysql-server-5.7। ध्यान दें कि यह वास्तव में mysql-server-5.7हम बात कर रहे हैं, नहीं mysql-server
fkraiem

@ कई बार, मैं इस प्रकार की त्रुटि से छुटकारा पाने के लिए सिस्टम को पुनरारंभ करता हूं।
डेसी

जवाबों:


80

संपादित जनवरी 10 2017 : इस पोस्ट में गंभीर मुद्दों को सही करने के लिए इस पोस्ट की एक प्रमुख समीक्षा है।

दिल में त्रुटि

समस्या यह है कि पैकेज अभी भी एक आधे-स्थापित और आधे-कॉन्फ़िगर स्थिति में सिस्टम पर है और इसे स्पष्ट रूप से हटाने की आवश्यकता है।

dpkg: error processing package mysql-server (--configure):
 dependency problems - leaving unconfigured
No apport report written because the error message indicates its a followup error from a previous failure.
                                                                                                          Errors were encountered while processing:
 mysql-server-5.7
 mysql-server
E: Sub-process /usr/bin/dpkg returned an error code (1)

यह वास्तव में क्या कह रहा है कि पैकेज mysql-server-5.7एक निर्भरता है mysql-server, पहले से स्थापित है, लेकिन कॉन्फ़िगर नहीं है। तो आपको purgeइसके पीछे उन ब्रेडक्रंबों को हटाने की आवश्यकता है mysql-server-5.7

sudo apt purge mysql-server mysql-server-5.7

दलील

जब आप सॉफ्टवेयर का उपयोग कर स्थापित करते हैं apt, तो यह स्वचालित रूप से आपके लिए निर्भरता भी संभालता है।

जब आप कुछ विशेष पैकेजों को निकालते हैं, तो हो सकता है कि यह उन्हीं निर्भरताओं को न संभालें। इस पद के मामले में, यह निर्भरता है mysql-server-5.7

आप निम्न आदेश जारी करके एक पैकेज स्थिति देख सकते हैं।

dpkg-query -l [package-name-here]

आमतौर पर यदि आप कोड unया rcपैकेज नाम के बाईं ओर देखते हैं, तो आप बता पाएंगे कि क्या यह वास्तव में टूटा हुआ पैकेज है।

जब मैंने इस मुद्दे का अनुभव किया, तो यह साथ था libapache2-mod-phpऔर libapache2-mod-php7.0। यह मेरा आउटपुट था।

Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                        Version            Architecture       Description
+++-===========================-==================-==================-============================================================
un  libapache2-mod-php          <none>             <none>             (no description available)

मेरे मामले में, यह दावा किया गया कि मेरे पैकेज की स्थिति अज्ञात है और यह unमेरे सिस्टम पर स्थापित (कोड ) नहीं है।

जब आप किसी चीज़ aptको बताते removeहैं, तो यह संकुल, विन्यास फाइल और अन्य वस्तुओं को छोड़ सकता है जो स्वचालित संस्थापन के दौरान समस्याग्रस्त हो सकते हैं।

जब आप किसी चीज aptको बताते purgeहैं, तो किसी भी ब्रेडक्रंब को हटाने के लिए सबसे अच्छा है जो removeपीछे छोड़ सकता है।

मैंने मूल रूप से कहा था कि मैंने माना कि प्रक्रिया अभी भी चल रही है, लेकिन सबसे अधिक संभावना है कि यह निष्क्रिय था, या मृत था।

यह जांचने का सबसे अच्छा तरीका है कि सेवा आपके पैकेज को हटाने के साथ हस्तक्षेप कर रही है या नहीं, पहले उस सेवा की जांच करें।

1) mysqlसेवा की जांच

हमारे द्वारा दी गई सिस्टम त्रुटि का उपयोग करके apt, हम वास्तव systemctlमें mysqlसेवा की स्थिति की जांच करके त्रुटि की जांच कर सकते हैं

sudo systemctl status [pattern]

हमारे मामले में, हम यह देखना चाहते हैं कि mysql चल रहा है या नहीं

systemctl status mysql.service

यदि सेवा चल रही है, तो आपको यह आउटपुट देखना चाहिए

systemctl status mysql
● mysql.service - MySQL Community Server
   Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2017-01-10 23:10:06 EST; 1h 3min ago
 Main PID: 1206 (mysqld)
   CGroup: /system.slice/mysql.service
           └─1206 /usr/sbin/mysqld

नोट: यदि सेवा समाप्त हो गई है, तो आपको एक छोटा संदेश दिखाई देगा, जो यह संकेत देगा कि उस नाम से कोई सेवा नहीं चल रही है और फिर चरण 3 पर जाएं।

2) mysqlसेवा का उपयोग करना रोकनाsystemctl

नोट: [पैटर्न] द्वारा serviceया उसके द्वारा सूचीबद्ध नाम होना चाहिए initctl। मेरे द्वारा उपयोग किया जाने वाला कारण patternहै क्योंकि systemctlरेगेक्स मिलान का उपयोग करता है, इसलिए यदि आपको killतर्क का उपयोग करना चाहिए तो सावधान रहें ।

sudo systemctl stop [pattern]

जहाँ patternmysql डेमन / सेवा नाम का प्रतिनिधित्व करता है। अगर स्टॉप काम नहीं करता है

sudo systemctl kill [pattern]

उदाहरण के लिए

sudo systemctl stop mysql

3) अनइंस्टॉल करना / शुद्ध करना mysql

यदि आपको पूरी तरह से शुद्ध करने की आवश्यकता है, तो सुनिश्चित करें कि सेवा या प्रक्रिया पहले बंद हो गई है और फिर सुनिश्चित करें कि आप सही फ़ाइलों और निर्देशिकाओं को हटा रहे हैं!

नोट: सुनिश्चित करें कि आप सही mysqlसंस्करण को लक्षित कर रहे हैं । उदाहरण के लिए, यदि आप 5.5 का उपयोग करते हैं, तो संस्करण संख्या को उचित रूप से समायोजित करें।

चेतावनी: निम्न चरण आपके डेटा को हटा देंगे! (पहला कमांड बैकअप करने के लिए निष्पादित किया जाना चाहिए)

स्रोत: मैं MySQL की स्थापना कैसे करूँ?

tar -zcvf ~/msql_backup.tar.gz /etc/mysql /var/lib/mysql 
sudo apt purge mysql-server mysql-client mysql-common mysql-server-core-5.7 mysql-client-core-5.7
sudo rm -rfv /etc/mysql /var/lib/mysql
sudo apt autoremove
sudo apt autoclean

4) टूटे हुए पैकेजों को ठीक करना और लापता निर्भरता को संभालना

यदि पूर्ववर्ती चरण आपके लिए काम नहीं करते हैं, तो आपको इसके aptसाथ चलने की आवश्यकता हो सकती है--fix-broken किए गए किसी भी नुकसान की मरम्मत के विकल्प के है।

apt updateपहले और फिर सुनिश्चित करेंapt install

sudo apt update    
sudo apt install mysql-server mysql-client --fix-broken --fix-missing

5) जब अन्य सभी विफल हो जाते हैं, तो निर्माण और स्थापित करें mysql अपने आप को करें

यदि उपरोक्त में से कोई भी काम नहीं करता है, तो आपको वहाँ से स्थापित करने के लिए स्रोत, संकलन, और मेक या बैश को मैन्युअल रूप से डाउनलोड करना होगा (इसके सभी स्वचालित होने के बाद से यह उतना दर्दनाक नहीं है जितना लगता है)।


"16.04 अभी बग के भार से भरा हुआ है।" MySQL सहित मेरे लिए काम करता है। यह मुझे प्रतीत होता है कि हमारे द्वारा देखी जाने वाली अधिकांश समस्याएं कुछ गलत करने वाले लोगों से उत्पन्न होती हैं, जैसे rmकि पैकेज से संबंधित फ़ाइलों की कोशिश करना ।
fkraiem

1
बहुत बढ़िया काम दोस्त! धन्यवाद। मैंने कुछ मूर्खतापूर्ण निर्देशों का उपयोग करके अपना पूरा दिन बर्बाद कर दिया। अब यह काम!
रेनजिथ वीआर

मैंने आपके निर्देशों का पालन किया है और sudo systemctl stop mysql काम करने लगा। हालाँकि रिबूट के बाद इसे फिर से तोड़ दिया गया था। स्टार्ट या स्टॉप काम नहीं करता है। sudo systemctl status mysql दिखाता है: सक्रिय: निष्क्रिय करना (स्टॉप-सिगटरम) सोम 2016-06-27 11:05:22 BST के बाद; 8min पहले क्या मुझे वास्तव में mysql को रोकने के लिए 10 मिनट इंतजार करना होगा? क्या आपको आश्चर्य नहीं हुआ कि लोगों ने एक ऐसी सेवा को शुद्ध कर दिया जो पूरी तरह से बंद नहीं हुई? क्या यह संभव है कि Ubuntu 16.04 इसे ठीक करेगा? विकल्प क्या हैं, पिछले एलटीएस संस्करण या किसी अन्य डिस्ट्रो पर वापस जा रहे हैं?
ruby_object

इस तरह से पूरी तरह से काम करने और हटाने के लिए धन्यवाद!
लौवकी

5
नोट: sudo rm -rf /var/lib/mysqlडिफ़ॉल्ट स्थान पर आपके सभी डेटाबेस को हटा देगा। पहले एक वापस करो!
अगस्ता

7

पहली पोस्ट के साथ समस्या यह है कि आप एक मेटा-पैकेज को अच्छी तरह से कॉन्फ़िगर नहीं कर सकते हैं जो कि sql आइटम के लिए नहीं है। आपको वर्तमान रिलीज़ आइटम निर्दिष्ट करने की आवश्यकता है।

उपयोग कहो;

apt search mysql-server

अर्थात् संकुल की सूची प्रदर्शित करनी चाहिए

"mysql-server-5.7" "mysql-server-core-5.7" या बाद में रिलीज़

फिर;

dpkg-reconfigure --force mysql-server-5.7 mysql-server-core-5.7

किया हुआ।


4

यह आपके लिए सही समाधान है

सबसे पहले, आपको mysql-server के सभी पैकेज निकालने होंगे:

चेतावनी: निम्न चरण आपके डेटा को हटा देंगे! पहले एक बैकअप करें!

sudo rm -rf /var/lib/mysql

फिर स्थापित करें:

sudo apt-get install lamp-server^

या आप कर सकते हैं:

sudo apt-get install mysql-server

0

मैंने यह देखा

Job for mysql.service failed because the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xe" for details.
invoke-rc.d: initscript mysql, action "start" failed.

एक सुराग के रूप में कि अस्तित्व में एक गलत शुरुआत वाली स्क्रिप्ट अभी भी थी।

इसके लिए /etc/init.d/mysqlकिसी भी सहानुभूति की तलाश करें। इनको हटाने से मेरी पुनः-स्थापना के बाद की समस्याएँ ठीक हुईं।


0

MySQL से MariaDB ( https://bugs.launchpad.net/ubuntu/+source/mysql-5.7/+bug/1490071 ) पर स्विच करते समय यह त्रुटि भी हुई ।

MySQL बाइनरी डेटा फ़ाइलों को MariaDB के साथ संगत नहीं था इसलिए मैंने MySQL पर वापस स्विच किया क्योंकि मेरे पास mysqldump के साथ गड़बड़ करने का समय नहीं था।

पहले मुझे मारबीडीबी डेटा को दूर ले जाना था /var/lib/mysql, फिर माईएसक्यूएल स्थापित करना था और फिर अपने मूल डेटा को स्थानांतरित /var/lib/mysql-5.7करना था (त्रुटि से पहले यह बैकअप स्वचालित रूप से बनाया गया था /var/lib/mysql


-2

apt-get -f installअपने टूटे हुए एसक्यूएल पैकेज को ठीक करने की कोशिश करें और यदि आप अभी भी पैकेज मैनेजर के साथ समस्या में हैं तो एसक्यूएल सर्वर सोर्स कोड डाउनलोड करें और उसे संकलित करें !! लेकिन कमांड के ऊपर प्रयास करें और यह भी dpkg -l | grep sqlपता लगाने के लिए उपयोग करें कि पैकेज मैनेजर अभी भी आपको SQL या नहीं लगता है।


काम नहीं किया। मैंने उस त्रुटि को भी शामिल किया है जो मुझे पैकेज को स्थापित करने की कोशिश करते समय मिलती है।
हैरी

@ हेरी आपको apt-get -f installपैकेज नाम निर्दिष्ट किए बिना, अपने आप से चलना चाहिए ।
fkraiem

जैसा कि fkraim ने कहा कि इसे पैकेज के नाम के साथ उपयोग करें ...
अली घासेमोर

का उत्पादन apt-get install -f, कोई परिवर्तन नहीं हुआ।
हैरी

सिनैप्टिक एप्लिकेशन को आज़माएं और यह जांच लें कि टूटा हुआ पैकेज है या नहीं (बाएं कॉलम पर) [यदि आपके पास डेस्कटॉप है]
अली घासेमोर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.