Cài đặt MariaDB khi Apt báo cáo MariaDB có các phụ thuộc chưa được đáp ứng hoặc các gói bị hỏng


9

Tôi đã thử mọi cách để cài đặt MariaDB trên bản cài đặt Ubuntu sạch này nhưng tôi vẫn gặp lỗi này,

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.

Tôi đã làm theo hướng dẫn này để thử và cài đặt nó, http://www.unixmen.com/install-lemp-server-nginx-mysql-mariadb-php-ub Ubuntu-13-10-server /

Và tôi cũng đã làm theo hướng dẫn "chính thức" trên trang tải xuống MariaDB cho 13.10 https://doads.mariadb.org/mariadb/repos khu /

Nhưng dường như không có gì là làm việc.

Chỉnh sửa 1

Tôi đã thử cả Làm cách nào để giải quyết các phụ thuộc chưa được đáp ứng sau khi thêm PPA? Cách cài đặt MariaDB? nhưng nó vẫn cho tôi lỗi tôi đã đăng ở trên.

Đây là một bản cài đặt Ubuntu mới với hầu như không cài đặt gì.

Chỉnh sửa 2

Tất cả các hộp kiểm là vé trong Cập nhật. Tôi đã chạy

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

Và nó đã cho tôi lỗi này:

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.

Chạy lệnh này một lần để cài đặt gói được liệt kê: sudo apt-get update && sudo apt-get -f install mariadb-server-5.5"=5.5.33a+maria-1~saucy"Hãy chắc chắn rằng bạn đã đánh dấu vào tất cả các hộp kiểm bên dưới tab Cập nhật trong Nguồn phần mềm . Để xác minh nó chạy: sudo software-properties-gtkđể mở Nguồn phần mềm . Nếu bạn nhận được bất kỳ lỗi / thông báo nào trong lệnh tôi đã đề cập ở trên, hãy gửi nó trong câu hỏi của bạn.
Saurav Kumar

Có vẻ như bạn sẽ sớm giải quyết vấn đề của mình. Thủ thuật chính là bạn đã liệt kê tất cả các gói cần thiết trong một dòng để cài đặt. Ví dụ như từ đầu ra mới mà bạn thực hiện: Hãy 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" nắm bắt mô hình những gì tôi đang làm, vì vậy nếu bạn có thêm một số gói để cài đặt, bạn sẽ đưa nó vào cùng một dòng như sau cùng một mẫu. Tôi biết nó sẽ khó khăn nhưng hy vọng nó sẽ giúp bạn. Đáp lại.
Saurav Kumar

Đúng vậy, tôi đã quản lý để cài đặt mariadb-common và đã cố gắng cài đặt libmariadbclient18, điều này phụ thuộc vào libmysqlclient18 nhưng nó nói rằng tôi đã có libmysqlclient18 giống với libdbd-mysql-perl.
Andreas

@Ecaz Bạn đã tìm ra giải pháp cho vấn đề của mình chưa? Tôi cũng đang trải nghiệm như vậy.
Jon Koops

Tôi đang gặp lỗi này:libmariadbclient18 : Depends: libmysqlclient18 (= 5.5.33a+maria-1~saucy) but 5.5.34-0ubuntu0.13.10.1 is to be installed
Jon Koops

Câu trả lời:


16

Xem Phiên bản không khớp giữa kho lưu trữ Mariadb và Ubuntu Debian

Rất hiếm khi số phiên bản của mysql-common hoặc libmysqlclient cao hơn trong kho chính thức của Ubuntu hoặc Debian so với trong kho MariaDB, nhưng nó đã xảy ra. Bất cứ khi nào nó xảy ra là do các bản phát hành sửa lỗi nghiêm trọng cho các lỗi tồn tại trong phiên bản MySQL trong kho lưu trữ phân phối nhưng đã được sửa trong phiên bản MariaDB trong kho MariaDB.

Nếu một tình huống như được mô tả ở trên tồn tại khi bạn cố gắng cài đặt MariaDB, bạn sẽ gặp một lỗi như thế này:
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.
Một cách để khắc phục điều này là chỉ định phiên bản chính xác của hai gói mà bạn muốn cài đặt. Để làm điều này, trước tiên hãy xác định số phiên bản đầy đủ của các gói bị ảnh hưởng. Một cách dễ dàng để làm như vậy là với 'apt-cache show':
apt-cache show mysql-common | grep Version
apt-cache show libmysqlclient18 | grep Version

Đây là tình huống của văn bản này, vì số phiên bản được hiển thị là:

Version: 5.5.34-0ubuntu0.13.10.1
Version: 5.5.34+maria-1~saucy

Trang MariaDB đưa ra hai giải pháp.

Giải pháp đầu tiên: Chỉ định phiên bản gói

Đối với mỗi điều trên, bạn sẽ được cung cấp một danh sách các phiên bản. Những cái trong kho MariaDB sẽ có "mariadb" trong chuỗi phiên bản và là thứ bạn muốn. Với số phiên bản trong tay, bạn sẽ có thể cài đặt MariaDB bằng cách chỉ định rõ ràng các số phiên bản như vậy:
apt-get install mariadb-server-5.5 mariadb-client-5.5 \
libmysqlclient18=<version-number> \
mysql-common=<version-number>

đó là

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

LƯU Ý: Cập nhật lên 5.5.34 để phản ánh phiên bản hiện tại kể từ 2014.01.28 [RealPariah] Sau khi cài đặt, bạn cần giữ các gói cho đến khi số phiên bản trở lại đồng bộ.

Sau khi MariaDB được cài đặt và miễn là tồn tại vấn đề về số phiên bản, một 'apt-get dist-Nâng cấp' sẽ cố gắng loại bỏ MariaDB để cài đặt các gói phổ biến libmysqlclient và mysql "nâng cấp". Để ngăn điều này xảy ra, bạn có thể giữ chúng để apt không cố nâng cấp chúng. Để làm như vậy, hãy mở một thiết bị đầu cuối, trở thành root bằng `sudo -s`, rồi nhập vào như sau:
echo libmysqlclient18 hold | dpkg --set-selections
echo mysql-common hold | dpkg --set-selections
Các khoản giữ sẽ ngăn bạn nâng cấp MariaDB, vì vậy khi bạn muốn xóa các khoản giữ, hãy mở một thiết bị đầu cuối, trở thành root bằng 'sudo -s', sau đó nhập thông tin sau:
echo libmysqlclient18 install | dpkg --set-selections
echo mysql-common install | dpkg --set-selections
Sau đó, bạn sẽ có thể nâng cấp MariaDB như bình thường (ví dụ: với bản cập nhật `sudo apt-get; sudo apt-get Nâng cấp`).

Làm thế nào để tôi biết khi số phiên bản khớp lại?

Bạn có thể theo dõi số phiên bản MariaDB bằng cách đăng ký thông báo qua email về các bản phát hành mới tại MariaDB.org . Theo trang web, nó là một low-traffic announce-only list.

Ngoài ra, khi các phiên bản gói được đồng bộ hóa một lần nữa, bạn sẽ ngừng nhìn thấy một thông báo trong apt rằng chỉ có 2 gói được giữ sẽ được giữ, nhưng tất cả các gói mariadb sẽ được giữ:

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

Điều này cho thấy các số gói được đồng bộ hóa trở lại, cũng có thể được kiểm tra trong các công cụ synap hoặc tương tự.

Giải pháp thứ hai: Ghim kho lưu trữ MariaDB

Một điều khác bạn có thể làm là ghim kho lưu trữ MariaDB mà bạn sử dụng. Điều này được thực hiện bằng cách tạo một tệp trong `/ etc / apt / Preferences.d /` với các nội dung sau:
Package: *
Pin: origin <mirror-domain>
Pin-Priority: 1000

Thay thế <mirror-domain>bằng tên miền của máy nhân bản MariaDB mà bạn sử dụng. Ví dụ , ftp.osuosl.org. Với tệp ghim tại chỗ, các gói từ kho MariaDB của bạn sẽ được ưu tiên hơn các gói từ kho lưu trữ hệ thống.

Bạn có thể tìm thấy tên nhân bản mà bạn đang sử dụng trong Cài đặt hệ thống >> Phần mềm & Cập nhật hoặc nếu bạn đang sử dụng một hương vị khác của Ubuntu, Synaptic >> Cài đặt >> Kho lưu trữ hoặc cat /etc/apt/sources.list.

Trong Pin-Prioritytrường hợp này cần phải lớn hơn hoặc bằng 1000, trong đócauses a version to be installed even if this constitutes a downgrade of the package

(Xem man 5 apt_preferencesđể biết thêm thông tin về các tùy chọn trong các trường hợp khác.)

Đặt tên tệp ưu tiên ghim

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

(Nguồn man 5 apt_preferences:)

Vì vậy, tên của nó không quan trọng, nhưng một cái tên tốt sẽ là một cái gì đó như thế 50_mariadb. Điều này xác định gói liên quan và cho phép dễ dàng đặt các tệp tùy chọn ghim khác trước sau tệp này theo thứ tự xử lý.


Tôi sẽ thử giải pháp đầu tiên nhưng làm thế nào để bạn biết khi nào sự không phù hợp đã được khắc phục? Tôi có phải quét nhật ký thay đổi mỗi khi họ phát hành bản cập nhật không?
Andreas

Tôi đã sử dụng phương pháp đầu tiên và nó diễn ra rất suôn sẻ. Không phải lo lắng về sự phụ thuộc ở tất cả. Tôi đã chỉnh sửa câu trả lời với thông tin về số phiên bản
mariadb

Tên của tệp ghim nên là gì cho giải pháp thứ hai?
Thomas Taylor

Tôi ♥ bạn cho kỹ năng của bạn. Các gói mariadb khá vặn vẹo. Tôi khẳng định điều này dựa trên thực tế là tôi chưa bao giờ phải thực hiện bất kỳ điều nào ở trên, nhưng những điều trên đã giúp tôi cài đặt. Cảm ơn!
jettero

1
@ thomas-taylor Đã thêm thông tin trong cách đặt tên tệp ghim.
trò chuyện

2

Tôi gặp vấn đề tương tự khi nâng cấp Ubuntu 14.10 từ MySQL lên Maria DB. Cụ thể là tôi sẽ bị mắc kẹt với

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

Sau khi thực hiện theo các đề xuất này nhưng không có kết quả, những điều sau đây đã giúp tôi rất nhiều: Cách thay thế MySQL bằng MariaDB trong Ubuntu Server bằng JournalXtra.

Chỉnh sửa / var / lib / dpkg / status và xóa hai trường hợp libmysqlclient18 như thế này:

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 là một máy chủ cơ sở dữ liệu SQL đa luồng, nhanh, ổn định và thực sự. SQL (Structured Query Language) là ngôn ngữ truy vấn cơ sở dữ liệu phổ biến nhất trên thế giới. Mục tiêu chính của MySQL là tốc độ, sự mạnh mẽ và dễ sử dụng. . Gói này bao gồm thư viện khách hàng. Trang chủ: http://dev.mysql.com/ Bản gốc-Người bảo trì: Người bảo trì Debian Debian

Cho phép tôi cài đặt MariaDB một cách trơn tru sau đó.

sudo apt-get install mariadb-server

Lưu ý : Tôi đã đến đây sau nhiều lần thử loại bỏ libmariadbclient18 và libmysqlclient18 trước khi giải pháp này hoạt động. Tôi không thể vượt qua các vấn đề apt-get cho đến khi hai cái này bị xóa vì chúng được báo cáo là các gói bị hỏng trước khi tôi có thể thử bất kỳ sửa chữa nào khác.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.