Apt가보고 할 때 MariaDB 설치하기 MariaDB에 종속성이 없거나 패키지가 손상되었습니다.


9

이 깨끗한 Ubuntu 설치에 MariaDB를 설치하기 위해 모든 것을 시도했지만이 오류가 계속 발생합니다.

Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
mariadb-server : Depends: mariadb-server-5.5 (= 5.5.33a+maria-1~saucy) 
but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

http://www.unixmen.com/install-lemp-server-nginx-mysql-mariadb-php-ubuntu-13-10-server/ 에서이 안내서를 따라 설치했습니다 .

또한 13.10 https://downloads.mariadb.org/mariadb/repositories/ 에 대한 MariaDB 다운로드 페이지의 "공식"안내서를 따랐습니다.

그러나 아무것도 작동하지 않는 것 같습니다.

편집 1

나는 시도 모두 어떻게 PPA를 추가 한 후 충족되지 않은 종속성을 해결하는 방법은 무엇입니까? MariaDB를 설치하는 방법? 그러나 여전히 위에 게시 한 오류가 발생합니다.

거의 설치되지 않은 새로운 우분투 설치입니다.

편집 2

모든 확인란은 업데이트의 티켓입니다. 나는 달렸다 :

sudo apt-get update && sudo apt-get -f install mariadb-server-5.5"=5.5.33a+maria-1~saucy"

그리고 그것은 나 에게이 오류를 주었다 :

The following packages have unmet dependencies:
mariadb-server-5.5 : Depends: mariadb-client-5.5 (>= 5.5.33a+maria-1~saucy) 
but it is not going to be installed
Depends: mariadb-server-core-5.5 (>= 5.5.33a+maria-1~saucy) 
but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

: 나열된 패키지를 설치하면이 명령을 실행 sudo apt-get update && sudo apt-get -f install mariadb-server-5.5"=5.5.33a+maria-1~saucy"하면 모든 쳤다 적이 있는지 확인 체크 박스 에서 업데이트 에서 탭 소프트웨어 소스 . 실행 여부를 확인하려면 : 소프트웨어 소스sudo software-properties-gtk 를 엽니 다 . 위에서 언급 한 명령에 오류 / 메시지가 표시되면 질문에 게시하십시오.
Saurav Kumar

곧 문제를 해결할 것 같습니다. 주요 요령은 필요한 모든 패키지를 한 줄에 나열하여 설치하는 것입니다. 예를 들어 새로운 출력에서 ​​실행해야 할 것 : 내가하고 sudo apt-get -f install mariadb-server-5.5"=5.5.33a+maria-1~saucy mariadb-client-5.5"=5.5.33a+maria-1~saucy" mariadb-server-core-5.5"=5.5.33a+maria-1~saucy" 있는 패턴을 잡아라. 따라서 더 많은 패키지를 설치하려면 같은 패턴을 따르는 것과 같은 줄에 포함시켜야한다. 어려울 것 같지만 도움이 되길 바랍니다. 댓글.
Saurav 쿠마

맞습니다, 나는 mariadb-common을 설치하고 libmysqlclient18에 의존하는 libmariadbclient18을 설치하려고 시도했지만 이미 libdbd-mysql-perl과 동일한 libmysqlclient18이 있다고 말합니다.
Andreas

@Ecaz 문제에 대한 해결책을 찾았습니까? 같은 경험이 있습니다.
Jon Koops

이 오류가 발생합니다 :libmariadbclient18 : Depends: libmysqlclient18 (= 5.5.33a+maria-1~saucy) but 5.5.34-0ubuntu0.13.10.1 is to be installed
Jon Koops

답변:


16

Mariadb와 Ubuntu Debian 리포지토리의 버전 불일치 참조

mysql-common 또는 libmysqlclient의 버전 번호가 공식 우분투 또는 데비안 리포지토리에서 MariaDB 리포지토리보다 높은 경우는 드물지만 발생했습니다. 배포 리포지토리의 MySQL 버전에는 있지만 MariaDB 리포지토리의 MariaDB 버전에서는 이미 수정 된 버그에 대한 중요한 버그 수정 릴리스로 인해 발생했습니다.

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'입니다.
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 리포지토리의 버전 문자열에는 "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

참고 : 2014.01.28 기준으로 현재 버전을 반영하려면 5.5.34로 업데이트하십시오. [RealPariah] 설치 후 버전 번호가 다시 동기화 될 때까지 패키지를 보류해야합니다.

MariaDB가 설치되고 버전 번호 문제가있는 한, 'apt-get dist-upgrade'는 "업그레이드 된"libmysqlclient 및 mysql-common 패키지를 설치하기 위해 MariaDB를 제거하려고 시도합니다. 이 문제가 발생하지 않도록 apt가 업그레이드를 시도하지 않도록 유지할 수 있습니다. 그렇게하려면 터미널을 열고`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를 정상적으로 업그레이드 할 수 있습니다 (예 :`sudo apt-get update; sudo apt-get upgrade`).

버전 번호가 언제 다시 일치하는지 어떻게 알 수 있습니까?

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

이는 패키지 번호가 다시 동기화되었음을 나타내며 시냅스 또는 유사한 도구로도 확인할 수 있습니다.

두 번째 솔루션 : MariaDB 리포지토리 고정

사용할 수있는 또 다른 작업은 사용하는 MariaDB 리포지토리를 고정하는 것입니다. `/ etc / apt / preferences.d /`아래에 다음 내용으로 파일을 생성하면됩니다 :
Package: *
Pin: origin <mirror-domain>
Pin-Priority: 1000

교체 <mirror-domain>사용하는 MariaDB 미러의 도메인 이름으로. 예를 들면 다음과 같습니다 ftp.osuosl.org. 핀 파일이 있으면 MariaDB 리포지토리의 패키지가 시스템 리포지토리의 패키지보다 우선합니다.

시스템 설정 >> 소프트웨어 및 업데이트 에서 사용중인 미러 이름을 찾 거나 Ubuntu, Synaptic >> 설정 >> 리포지토리 또는 다른 버전을 사용하는 경우 또는 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. 이것은 관련된 패키지를 식별하고 처리 순서에서이 파일 다음에 다른 고정 환경 설정 파일을 쉽게 배치 할 수있게합니다.


첫 번째 해결책을 시도하지만 불일치가 수정 된 시점을 어떻게 알 수 있습니까? 업데이트를 릴리스 할 때마다 변경 로그를 청소해야합니까?
Andreas

첫 번째 방법을 사용했으며 매우 매끄럽게 진행되었습니다. 의존성에 대해 전혀 걱정할 필요가 없습니다. 나는 mariadb 버전 번호에 대한 정보를 사용하여 답변을 편집했습니다.
chaskes

두 번째 솔루션의 고정 파일 이름은 무엇입니까?
토마스 테일러

나는 당신의 기술에 대한 당신을 ♥. mariadb 꾸러미는 꽤 엉망입니다. 나는 이전에 위의 작업을 한 번도 할 필요가 없다는 사실에 근거하여 이것을 주장하지만 위의 내용은 저를 설치했습니다. 감사!
jettero

1
@ thomas-taylor 고정 파일 이름 지정에 정보가 추가되었습니다.
chaskes

2

우분투 14.10에서 비슷한 문제가 MySQL에서 Maria DB로 업그레이드되었습니다. 즉, 나는 붙어있을 것입니다

 libmysqlclient18:amd64 10.0.16+maria-1~utopic (Multi-Arch: no) is not co-installable with libmysqlclient18 which has multiple installed instances

이러한 제안을 따르지 않으면 다음이 크게 도움이 되었습니다. JournalXtra 로 우분투 서버에서 MySQL을 MariaDB 로 바꾸는 방법.

/ var / lib / dpkg / status를 편집하고 다음과 같이 libmysqlclient18의 두 인스턴스를 제거하십시오.

Package: libmysqlclient18
Status: deinstall ok config-files
Priority: optional
Section: libs
Installed-Size: 3392
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Architecture: i386
Multi-Arch: same
Source: mysql-5.5
Version: 5.5.40-0ubuntu1
Config-Version: 5.5.40-0ubuntu1
Depends: mysql-common (>= 5.5.40-0ubuntu1), libc6 (>= 2.4), libgcc1 (>= 1:4.1.1), zlib1g (>= 1:1.1.4)
Pre-Depends: multiarch-support
Description: MySQL database client library

MySQL은 빠르고 안정적이며 진정한 다중 사용자, 다중 스레드 SQL 데이터베이스 서버입니다. SQL (Structured Query Language)은 세계에서 가장 많이 사용되는 데이터베이스 쿼리 언어입니다. MySQL의 주요 목표는 속도, 견고성 및 사용 편의성입니다. . 이 패키지에는 클라이언트 라이브러리가 포함되어 있습니다. 홈페이지 : http://dev.mysql.com/ Original-Maintainer : 데비안 MySQL 관리자

나중에 MariaDB를 원활하게 설치할 수있었습니다.

sudo apt-get install mariadb-server

참고 :이 솔루션이 작동하기 전에 libmariadbclient18 및 libmysqlclient18을 제거하려고 여러 번 시도한 후에 여기에 왔습니다. 다른 수리를 시도하기 전에 손상된 패키지로보고되어이 두 가지가 제거 될 때까지 과거의 apt-get 문제를 해결할 수 없었습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.