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-Priority
trườ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ý.
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.