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

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

최근 Ubuntu 16.04를 새로 설치했습니다. 또한 을 통해 mysql-servermysql-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!

내가 처한 상황을 어떻게 해결하나요? 내 로컬 패키지 저장소 메타데이터가 손상된 경우 어떻게 복구합니까?

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

답변1

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

무언가를 지시하면 apt자동 remove설치 중에 문제가 될 수 있는 패키지, 구성 파일 및 기타 항목이 남을 수 있습니다.

apt무언가 에 대해 말할 때 남겨졌을 수 있는 purge이동 경로를 제거하는 것이 가장 좋습니다 .remove

처음에는 프로세스가 여전히 실행 중이라고 가정했지만 대부분 비활성 상태이거나 종료되었을 가능성이 높습니다.

서비스가 패키지 제거를 방해하는지 확인하는 가장 좋은 방법은 해당 서비스를 먼저 확인하는 것입니다.

1) mysql서비스 조사

에서 제공한 시스템 오류를 사용하여 서비스 상태를 확인하여 apt실제로 오류를 조사하는 데 사용할 수 있습니다.systemctlmysql

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참고: [pattern]은 또는 에 의해 나열된 이름이어야 합니다 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직접 빌드하고 설치하세요.

위의 방법 중 어느 것도 작동하지 않으면 소스를 수동으로 다운로드하고 컴파일한 다음 make 또는 bash를 사용하여 거기에서 설치해야 합니다(모두 자동화되었기 때문에 들리는 것만큼 고통스럽지는 않습니다).

답변2

첫 번째 게시물의 문제는 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

완료.

답변3

이것이 당신에게 맞는 해결책입니다

먼저, mysql-server의 모든 패키지를 제거해야 합니다:

경고: 다음 단계를 수행하면 데이터가 삭제됩니다! 먼저 백업을 해보세요!

sudo rm -rf /var/lib/mysql

그런 다음 다음을 설치하십시오.

sudo apt-get install lamp-server^

아니면 다음을 수행할 수 있습니다.

sudo apt-get install mysql-server

답변4

이 오류는 MySQL에서 MariaDB로 전환할 때도 발생했습니다(https://bugs.launchpad.net/ubuntu/+source/mysql-5.7/+bug/1490071).

MySQL 바이너리 데이터 파일은 MariaDB와 호환되지 않아서 mysqldump를 망칠 시간이 없었기 때문에 MySQL로 다시 전환했습니다.

먼저 MariaDB 데이터를 에서 다른 곳으로 이동한 /var/lib/mysql다음 MySQL을 설치하고 원본 데이터를 /var/lib/mysql-5.7에서 /var/lib/mysql.

관련 정보