apt-get bị treo khi nâng cấp mysql-server-5.1


9

Khi tôi cố gắng làm như sau:

sudo apt-get update
sudo apt-get upgrade

trên bản cài đặt Ubuntu Server 10.04 của tôi, nó bị treo ở dòng sau:

Preparing to replace mysql-server-5.1 5.1.41-3ubuntu12.1 (using .../mysql-server-5.1_5.1.41-3ubuntu12.3_i386.deb)

Tôi thậm chí không thể CTRL-C ra khỏi nó! Tôi cuối cùng phải giết phiên của mình và đăng nhập từ một thiết bị đầu cuối khác và quá trình nâng cấp vẫn đang chạy. Tôi đã khởi động lại nó nhiều lần và khi tôi quay lại và thử lại, nó cho tôi biết:

E: dpkg was interrupted, you must manually run 'sudo --configure -a' to correct the problem.

Khi tôi làm điều đó, tôi trở lại hình vuông và nó bị đóng băng khi tôi cố gắng nâng cấp myQuery.


1
và, đây cũng sẽ là bạn ... newyork.ubuntuforums.org/showthread.php?t=1514195
nik

2
@nik: và? anh ta không nên hỏi một câu hỏi ở hai nơi? nó là tốt để gửi ở hai nơi? Bạn đang cho thấy rằng bạn biết cách sử dụng Google?
msw

2
@msw, Đó không phải là một bình luận tiêu cực hay phô trương. Trong thực tế, tôi nghĩ rằng tôi đã tìm thấy một tài liệu tham khảo khác cho một vấn đề tương tự .. nhưng, hóa ra không phải như vậy.
nik

@msw: Đăng chéo là ... gây tranh cãi. Tất nhiên, nó tối đa hóa khả năng bạn nhận được câu trả lời, nhưng cũng sẽ có những 'đội' khác nhau làm việc tương tự, có thể đưa ra những gợi ý tương tự và chỉ lãng phí thời gian của họ.
Bobby

Lý do tôi đăng ở đây là vì tôi không nhận được một phản hồi nào trên ubuntuforums.org. Không cần phải nói, tôi sẽ không sử dụng chúng làm tài nguyên công nghệ kể từ bây giờ :)
Rob

Câu trả lời:


2

Hãy thử đi một cấp dưới apt, sau khi sao lưu cơ sở dữ liệu của bạn:

sudo dpkg -r mysql-server
sudo apt-get check    # verify that apt's metadata is okay
sudo apt-get install mysql-server

đã thêm :

dpkg -rđang nghẹt thở thử dpkg --purgevà thất bại mà lấy nội dung gói với dpkg -L mysql-server-5.1zap chúng và sau đó muck về /var/lib/dpkg.

Tôi chưa bao giờ thấy những thứ có lông, xin lỗi.

nếu lúc đầu bạn không thành công

Tôi đang suy nghĩ rất nhiều ở đây, tha thứ cho tôi. Gói meta máy chủ mysql chứa hoặc yêu cầu các gói này:

libdbd-mysql-perl
libdbi-perl
libhtml-template-perl
libnet-daemon-perl
libplrpc-perl
mysql-client-5.1
mysql-client-core-5.1
mysql-server
mysql-server
-5.1

Dữ liệu meta cho quản lý gói được tách riêng một cách thú vị, có các kho lưu trữ trung tâm nhưng các gói độc lập. /var/cache/apt/archiveslà nơi *.debcác tập tin đã được cài đặt trực tiếp.

Đầu tiên, buộc dpkg quên các gói này (có nguy cơ không thể xóa một số tệp mà chúng tôi sẽ thay thế bằng mọi cách).

for i in mysql-server-core-5.1 mysql-server-5.1 ... ; do
    sudo dpkg -r --force-remove-reinstreq $i
done

Sau đó lấy các tệp .deb cần thiết để cài đặt đầy đủ:

sudo apt-get install --download-only mysql-server

và sau đó thử cài đặt từng cái một:

cd /var/cache/apt/archives
sudo dpkg -i mysql-server-core-5.1_5.1.41-3ubuntu12.3_i386.deb

nếu bạn gặp vấn đề ở đó, hãy thử:

sudo dpkg -D77777 -i mysql-server-core-5.1... > 2>&1 /tmp/dpkg.log.$$

Và thử và tìm các dòng có liên quan trong số hàng triệu trong logfile và đăng chúng ở đây. Chúc may mắn và thuận lợi.


Khi tôi thực hiện "dpkg -r mysql-server" thì nó báo chưa được cài đặt. Vì vậy, sau đó tôi thử "dpkg -r mysql-server-5.1" và thông báo: Gói đang ở trạng thái không nhất quán rất xấu - bạn nên cài đặt lại trước khi thử gỡ bỏ.
Cướp

Tôi giả sử bạn đã thử "dpkg -r mysql-server-5.1" và không thành công?
msw

Vâng, nó thất bại. Nó nhận ra rằng nó ở đó, nhưng nói "Gói đang ở trạng thái không nhất quán rất xấu - bạn nên cài đặt lại trước khi thử gỡ bỏ."
Cướp

"dpkg --purge" cho cùng một lỗi. Vậy tôi có nên xóa tất cả các tệp được liệt kê với "dpkg -L mysql-server-5.1" không? Và ý của bạn là "muck" về / var / lib / dpkg là gì?
Cướp

đã thêm giai đoạn tiếp theo
msw

6

Rõ ràng bản cập nhật đang chờ máy chủ khởi động và vì một số lý do, nó không hoạt động. Để khắc phục vấn đề có một số khả năng.

Dễ nhất:

  1. Mở một thiết bị đầu cuối mới và chạy:

    sudo services mysql start
    

Phức tạp hơn nhưng đôi khi cần thiết: (điều này rất hữu ích khi bạn không có quyền truy cập vào thiết bị đầu cuối khác):

  1. Nhấn "^ z" ( Ctrl+ Z) sẽ "DỪNG" công việc của bạn. Sau đó chạy:

    sudo services mysql start
    
  2. Khi máy chủ được khởi động, hãy gõ như sau và nhấn Enter:

    fg 
    

    Điều này sẽ đặt công việc "DỪNG LẠI" của bạn trở lại nền trước và tiếp tục nơi nó rời đi.


Trong trường hợp của tôi, nó thực sự đang chờ máy chủ khởi động.
izak

Mặc dù lệnh start cho biết nó đã chạy, nhưng trong vài giây apt-get vẫn tiếp tục tốt. Cảm ơn
Liam Wheldon

2

Tôi gặp vấn đề này vì nó là bản sao của VM nên tôi đã thay đổi địa chỉ IP của máy chủ nhưng không thay đổi địa chỉ liên kết trong tệp my.cnf. Khi tôi thay đổi địa chỉ liên kết để khớp, bản cập nhật không bị treo và hoàn thành thành công.


1

Tôi đã đối mặt với cùng một vấn đề và tôi đã dành hơn một ngày để gỡ lỗi nó.

Khi tôi xóa thư mục cơ sở dữ liệu /var/lib/mysql/, quá trình cài đặt diễn ra suôn sẻ.


2
Điều đó nên được thực hiện một cách thận trọng, phải không?
slhck

1

Tôi đã có vấn đề chính xác này nhưng không có giải pháp nào hiện có vẻ phù hợp. Buộc gỡ cài đặt được cho là không cần thiết trong bất kỳ * nix nào và chắc chắn không phải là HÔN. Trong trường hợp của tôi, tôi thấy rằng nguyên nhân là đơn giản. MySQL đã từ chối bắt đầu vì nó vẫn đang chạy! Khi apt cố gắng ngăn chặn MySQL, nó đã hoạt động và không bao giờ thực sự dừng lại.

Như mọi khi, hãy chắc chắn rằng bạn có bản sao lưu!

Dừng dịch vụ:

sudo service mysql stop

Đảm bảo dịch vụ không còn chạy:

sudo ps ax | grep mysql

Nếu nó vẫn đang chạy, hãy cho nó một chút thời gian:

sudo kill <pid>

Nhưng cuối cùng, nếu nó vẫn chạy, bạn phải giết nó thật mạnh:

sudo kill -9 <pid>

Khi bạn đã xác nhận nó không còn chạy nữa, bạn có thể tiếp tục cập nhật.

Sau khi cập nhật hoàn tất, đặc biệt là nếu bạn phải giết -9, hãy chắc chắn chạy mysqlcheck để đảm bảo rằng bất cứ điều gì có thể khiến dịch vụ không dừng lại không phải là bảng bị hỏng hoặc bị hỏng. Cũng đảm bảo bạn có các bản sao lưu thường xuyên (và đảm bảo rằng các bản sao lưu đó thực sự hoạt động!).


0

Trong trường hợp của tôi, có một vấn đề với /etc/mysql/my.cnf hiện có. Kiểm tra nhật ký lỗi trong /var/log/mysql/error.log đã tiết lộ:

150112  5:45:47 [ERROR] Can't start server: Bind on TCP/IP port: Cannot assign requested address
150112  5:45:47 [ERROR] Do you already have another mysqld server running on port: 3306 ?
150112  5:45:47 [ERROR] Aborting

150112  5:45:47  InnoDB: Starting shutdown...
150112  5:45:52  InnoDB: Shutdown completed; log sequence number 0 1883376705
150112  5:45:52 [Note] /usr/sbin/mysqld: Shutdown complete

Rõ ràng có thể có một vấn đề khác với my.cnf, nhưng trong trường hợp của tôi, đó là chúng tôi đã cố gắng liên kết với một địa chỉ IP cũ. Đổi thành:

bind 127.0.0.1

Đã sửa nó và nó khởi động không có vấn đề.

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.