Tidak dapat menginstal ulang mysql-server setelah pembersihannya

29

Baru-baru ini saya melakukan instalasi baru Ubuntu 16.04. Saya juga menginstal mysql-serverdan mysql-client(versi default mereka 5.7.12) via apt-get install.

Karena 5.7.12 menunjukkan beberapa masalah, saya memutuskan untuk menghapus instalannya. Saya mencoba apt-get remove mysql-server mysql-clientdulu tetapi melihat bahwa artefak suka /etc/mysqldan /var/lib/mysqltidak dihapus.

Saya kemudian mencoba apt-get --purge removed mysql-server mysql-client, tetapi tetap tidak ada perbedaan.

Jadi, saya menghapusnya secara manual (via rm -rf). Saya juga secara manual menghapus semua *mysql*file di bawah /usr/yang berasal dari mysql-*paket dependensi seperti mysql-common.

Namun, sekarang, ketika saya ingin menginstal ulang mysql-server and -client, saya menemukan bahwa saya tidak bisa.

Bahkan, sekarang saya dalam keadaan di mana saya tidak bisa apt-get remove mysql-serveratau tidak apt-get install mysql-server!

Bagaimana cara memperbaiki situasi saya sekarang? Jika metadata repositori paket lokal saya rusak, bagaimana cara memperbaikinya?

Saya benci menginstal ulang OS yang diberkati dengan semua aplikasi dan lingkungan saya yang lain, sekali lagi hanya karena mysql-server.

Sebagai contoh, berikut ini adalah kesalahan yang saya dapatkan saat mencoba menghapus 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)

Dan ketika mencoba menginstal, saya mendapatkan kesalahan ini:

$ 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)

Inilah output dari 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)
Harry
sumber
Sepertinya mysql-server-5.7dalam keadaan yang buruk, cobalah untuk menginstal ulang: sudo apt-get install --reinstall mysql-server-5.7.
fkraiem
Tidak ada bedanya, saya mendapatkan garis kesalahan yang sama: ... invoke-rc.d: initscript mysql, action "start" failed. ...yang saya dapatkan dengan rasa lain dari perintah instal.
Harry
Cobalah untuk menghapusnya, kemudian ... sudo apt-get remove --purge mysql-server-5.7. Perhatikan bahwa ini benar-benar mysql-server-5.7sedang kita bicarakan, bukan mysql-server.
fkraiem
@ Harry Berkali-kali, saya memulai ulang sistem untuk menghilangkan kesalahan jenis ini.
daisy
Masalah saya terpecahkan dengan mengikuti pos
Raizal IN Pregnanta

Jawaban:

80

Diedit 10 Jan 2017 : Ini adalah ulasan utama dari posting ini untuk memperbaiki masalah serius dalam posting ini.

Kesalahan di Hati

Masalahnya adalah bahwa paket tersebut masih pada sistem dalam keadaan setengah terinstal dan setengah dikonfigurasi dan perlu dihapus secara eksplisit.

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)

Apa yang sebenarnya dikatakannya adalah bahwa paket mysql-server-5.7tersebut merupakan dependensi untuk mysql-server, sudah diinstal, tetapi tidak dikonfigurasi. Jadi Anda perlu purgemenghapus remah roti yang ditinggalkan oleh mysql-server-5.7.

sudo apt purge mysql-server mysql-server-5.7

Alasan

Ketika Anda menginstal perangkat lunak menggunakan apt, secara otomatis menangani dependensi untuk Anda juga.

Ketika Anda menghapus paket tertentu, itu mungkin tidak menangani dependensi yang sama Dalam hal posting ini, ketergantungan itu adalah mysql-server-5.7.

Anda dapat memeriksa untuk melihat status paket dengan mengeluarkan perintah berikut.

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

Biasanya jika Anda melihat kode unatau rcdi sebelah kiri nama paket, Anda dapat mengetahui apakah itu benar-benar paket yang rusak.

Ketika saya mengalami masalah ini, itu dengan libapache2-mod-phpdan libapache2-mod-php7.0. Ini adalah output saya.

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)

Dalam kasus saya, ia mengklaim bahwa status paket saya tidak diketahui dan tidak diinstal (kode un) pada sistem saya.

Ketika Anda memberitahu aptuntuk removesesuatu, itu dapat meninggalkan paket, file konfigurasi, dan item lainnya yang dapat menjadi masalah selama instalasi otomatis.

Ketika Anda memberitahu aptuntuk purgesesuatu itu terjadi itu terbaik untuk menghilangkan remah roti yang removemungkin telah ditinggalkan.

Saya awalnya menyatakan bahwa saya menganggap prosesnya masih berjalan, tetapi kemungkinan besar itu tidak aktif, atau mati.

Cara terbaik untuk memeriksa apakah layanan tersebut mengganggu penghapusan paket Anda adalah dengan memeriksa layanan itu terlebih dahulu.

1) Investigasi mysqllayanan

Dengan menggunakan kesalahan sistem yang diberikan kepada kami oleh apt, kami sebenarnya dapat menggunakan systemctluntuk menyelidiki kesalahan dengan memeriksa status mysqllayanan

sudo systemctl status [pattern]

Dalam kasus kami, kami ingin melihat apakah mysql berjalan sehingga dapat mengetik

systemctl status mysql.service

Anda akan melihat output ini jika layanan sedang berjalan

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

Catatan: Jika layanan ini mati, Anda akan melihat pesan singkat yang menunjukkan bahwa tidak ada layanan dengan nama yang berjalan dan kemudian melompat ke langkah 3.

2) Menghentikan mysqllayanan menggunakansystemctl

catatan: [pola] harus nama yang terdaftar oleh serviceatau initctl. alasan saya menggunakan patternini karena systemctlmenggunakan pencocokan regex, jadi hati-hati jika Anda harus menggunakan killargumen.

sudo systemctl stop [pattern]

di mana patternmewakili nama daemon mysql / layanan. jika berhenti tidak berhasil coba

sudo systemctl kill [pattern]

Sebagai contoh

sudo systemctl stop mysql

3) Menghapus Instalasi / Membersihkan mysql

jika Anda harus benar-benar membersihkan, pastikan layanan atau proses dihentikan terlebih dahulu dan kemudian pastikan Anda menghapus file dan direktori yang tepat!

Catatan: Pastikan Anda menargetkan mysqlversi yang benar . Misalnya, jika Anda menggunakan 5.5, sesuaikan nomor versi dengan tepat.

PERINGATAN: langkah-langkah berikut akan menghapus data Anda! (perintah pertama harus dijalankan untuk membuat cadangan)

sumber: Bagaimana cara menghapus instalasi 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) Memperbaiki paket yang rusak dan menangani dependensi yang hilang

Jika langkah-langkah sebelumnya tidak bekerja untuk Anda, Anda mungkin perlu untuk menjalankan aptdengan --fix-brokenpilihan untuk memperbaiki setiap kerusakan yang dilakukan.

Pastikan untuk apt updatepertama dan kemudianapt install

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

5) Ketika semuanya gagal, bangun dan instal mysqlsendiri

Jika tidak ada yang di atas berfungsi, Anda harus mengunduh secara manual sumber, kompilasi, dan menggunakan make atau bash untuk menginstal dari sana (tidak separah kedengarannya karena semuanya otomatis).

David Foerster
sumber
"16,04 penuh dengan banyak bug sekarang." Bekerja untuk saya, termasuk MySQL. Tampak bagi saya bahwa sebagian besar masalah yang kita lihat di sini muncul dari orang yang melakukan kesalahan, seperti mencoba rmfile milik paket.
fkraiem
1
Sahabat Kerja Bagus! Terima kasih. saya menghabiskan seluruh hari dengan menggunakan instruksi bodoh. Sekarang ini berhasil!
Renjith VR
Saya telah mengikuti instruksi Anda dan sudo systemctl menghentikan mysql sepertinya berhasil. Namun setelah reboot itu rusak lagi. mulai atau berhenti tidak bekerja. sudo systemctl status mysql menunjukkan: Aktif: menonaktifkan (stop-sigterm) sejak Senin 2016-06-27 11:05:22 BST; 8 menit yang lalu Apakah saya BENAR-BENAR harus menunggu 10 menit agar mysql berhenti? Tidakkah Anda terkejut bahwa orang-orang membersihkan layanan yang tidak sepenuhnya berhenti? Apakah mungkin Ubuntu 16.04 akan memperbaikinya? Apa saja pilihannya, kembali ke versi LTS sebelumnya atau distro lain?
ruby_object
Terima kasih menghapus dan menginstal ulang cara ini berfungsi dengan sempurna!
Louwki
5
catatan: sudo rm -rf /var/lib/mysqlakan menghapus semua basis data Anda di lokasi default. Lakukan back up dulu!
augusto
7

Masalah dengan posting pertama adalah Anda tidak dapat mengkonfigurasi ulang paket meta dengan baik bukan untuk item sql. Anda perlu menentukan item rilis saat ini.

Katakanlah gunakan;

apt search mysql-server

Itu akan menampilkan daftar paket yaitu

"mysql-server-5.7" "mysql-server-core-5.7" atau yang lebih baru rilis

kemudian;

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

selesai

e8hffff
sumber
4

Ini solusi yang tepat untuk Anda

Pertama, Anda harus menghapus semua paket server mysql:

PERINGATAN: langkah-langkah berikut akan menghapus data Anda! Lakukan backup terlebih dahulu!

sudo rm -rf /var/lib/mysql

Kemudian instal:

sudo apt-get install lamp-server^

Atau Anda dapat melakukannya:

sudo apt-get install mysql-server
Rohan
sumber
0

saya melihat ini

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.

sebagai petunjuk bahwa masih ada skrip start-up yang salah.

Cari /etc/init.d/mysqldan semua tautannya. Menghapus ini muncul untuk memperbaiki masalah saya menginstal ulang setelah pembersihan.

ghatzhat
sumber
0

Kesalahan ini juga terjadi ketika beralih dari MySQL ke MariaDB ( https://bugs.launchpad.net/ubuntu/+source/mysql-5.7/+bug/1490071 ).

File data biner MySQL tidak kompatibel dengan MariaDB jadi saya beralih kembali ke MySQL karena saya tidak punya waktu untuk mengacaukan mysqldump.

Pertama saya harus memindahkan data MariaDB dari /var/lib/mysql, kemudian menginstal MySQL dan kemudian memindahkan data asli saya dari /var/lib/mysql-5.7(cadangan ini secara otomatis dibuat sebelum kesalahan) ke /var/lib/mysql.

baptx
sumber
-2

Cobalah apt-get -f installuntuk memperbaiki paket SQL Anda yang rusak dan jika Anda masih bermasalah dengan pengelola paket unduh kode sumber server SQL dan kompilasi !! Tapi coba perintah di atas dan gunakan juga dpkg -l | grep sqluntuk mengetahui manajer paket masih berpikir Anda SQL atau tidak ..

Ali Ghasempour
sumber
Tidak bekerja. Saya juga menyertakan kesalahan yang saya dapatkan ketika mencoba menginstal paket.
Harry
@ Harry Anda harus menjalankannya apt-get -f installsendiri, tanpa menentukan nama paket.
fkraiem
Seperti yang dikatakan fkraim, gunakan tanpa nama paket ...
Ali Ghasempour
Menambahkan output apt-get install -f, tidak ada perubahan.
Harry
Coba aplikasi sinaptik dan periksa apakah ada paket yang rusak atau tidak (di kolom kiri) [jika Anda memiliki desktop]
Ali Ghasempour