제거 후 mysql-server를 다시 설치할 수 없습니다


29

최근에 Ubuntu 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-serverapt-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. ...다른 종류의 설치 명령을 사용하고 있습니다.
Harry

제거한 다음에 ...을 시도하십시오 sudo apt-get remove --purge mysql-server-5.7. 이것은 실제로 mysql-server-5.7우리가 말하고있는 것이 아니라는 점에 유의하십시오 mysql-server.
fkraiem

@Harry 여러 번,이 유형의 오류를 제거하기 위해 시스템을 다시 시작합니다.
데이지

내 문제는이 게시물
Raizal IN Pregnanta

답변:


80

편집 2017년 1월 10일 이이 게시물의 올바른 심각한 문제에 대한이 게시물의 주요 검토이다.

마음의 오류

문제는 패키지가 여전히 반 설치 및 반 구성 상태로 시스템에 있으며 명시 적으로 제거해야한다는 것입니다.

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-phplibapache2-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시스템에 패키지 (코드 )가 설치되어 있지 않다고 주장했습니다 .

말할 때 aptremove무엇인가, 그것은 패키지, 구성 파일 및 자동 설치시 문제가 될 수있는 다른 항목을 남길 수 있습니다.

말할 때 aptpurge뭔가 그것이 어떤 빵 부스러기를 제거하는 것이 가장 좋습니다 않는 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

참고 : [pattern]은 service또는로 나열된 이름이어야합니다 initctl. 이유 I를 사용 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스스로 빌드하고 설치 하십시오.

위의 방법 중 어느 것도 작동하지 않으면 수동으로 소스를 다운로드하고 컴파일하고 make 또는 bash를 사용하여 거기에서 설치해야합니다 (모두 자동화 된 이후 소리가 나지 않습니다).


"16.04는 현재 수많은 버그로 가득 차 있습니다." MySQL을 포함한 저에게 효과적입니다. 우리가 여기서 보는 대부분의 문제는 rm패키지에 속하는 파일을 시도하는 것과 같이 사람들이 무언가 잘못하여 발생하는 것 같습니다 .
fkraiem

1
훌륭한 직장 친구! 고맙습니다. 나는 어리석은 지시를 사용하여 하루 종일 낭비했다. 이제 이것이 효과가있었습니다!
Renjith VR

나는 당신의 지시를 따르고 sudo systemctl stop mysql이 작동하는 것처럼 보입니다. 그러나 재부팅 후 다시 고장났습니다. 시작 또는 중지가 작동하지 않습니다. sudo systemctl status mysql shows : Active : Mon 2016-06-27 11:05:22 BST 이후 비활성화 (stop-sigterm); 8 분 전 mysql이 중지 될 때까지 10 분 정도 기다려야합니까? 사람들이 완전히 멈추지 않은 서비스를 제거한다는 사실에 놀라지 않습니까? Ubuntu 16.04가이를 해결할 수 있습니까? 이전 LTS 버전 또는 다른 배포판으로 돌아가는 옵션은 무엇입니까?
ruby_object

이 방법으로 제거하고 다시 설치해 주셔서 감사합니다.
Louwki

5
참고 : sudo rm -rf /var/lib/mysql기본 위치에서 모든 데이터베이스를 제거합니다. 먼저 백업하십시오!
augusto

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와 호환되지 않으므로 mysqldump를 망칠 시간이 없어서 MySQL로 다시 전환했습니다.

먼저 MariaDB 데이터를에서 멀리 옮기고 /var/lib/mysqlMySQL을 설치 한 다음 원본 데이터를 /var/lib/mysql-5.7(이 백업은 오류 전에 자동으로 생성되었습니다)에서로 이동해야했습니다 /var/lib/mysql.


-2

보십시오 apt-get -f install당신의 깨진 SQL 패키지를 수정하고 패키지 관리자 다운로드 SQL 서버의 소스 코드와 함께 문제가 여전히하고있는 경우 컴파일! 그러나 위의 명령을 시도 dpkg -l | grep sql하고 패키지 관리자가 여전히 SQL을 생각하는지 아닌지를 찾는 데 사용하십시오 .


작동하지 않았다. 또한 패키지를 설치할 때 발생하는 오류도 포함 시켰습니다.
Harry

@Harry apt-get -f install패키지 이름을 지정하지 않고 스스로 실행해야합니다 .
fkraiem

fkraim이 말한 것처럼 패키지 이름을 사용하십시오 ...
Ali Ghasempour 5

apt-get install -f변경 사항 없음 의 출력을 추가했습니다 .
Harry

시냅틱 응용 프로그램을 사용 해보고 패키지가 깨 졌는지 여부를 확인하십시오 (왼쪽 열) [데스크탑이있는 경우]
Ali Ghasempour
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.