Điểm:5

Máy chủ Centos 7 với Nginx báo lỗi khi cập nhật gói

lá cờ cn

Tôi đã cài đặt máy ảo CentOS 7 với Nginx. Tôi sử dụng Webmin để quản trị máy chủ.

Nó thường tự động cài đặt các bản cập nhật, nhưng bản cập nhật nginx không thành công nên tôi đã cố gắng cập nhật thủ công. Nó trả về cái này:

Cài đặt (các) gói bằng lệnh /bin/yum -y install nginx ..
Các plugin đã tải: fastmirror
Đang tải tốc độ nhân bản từ tệp máy chủ được lưu trong bộ nhớ cache
 * cơ sở: mirror.netsite.dk
 * epel: mirror.netsite.dk
 * bổ sung: mirror.netsite.dk
 * cập nhật: mirror.netsite.dk
Giải quyết phụ thuộc
-> Chạy kiểm tra giao dịch
---> Gói nginx.x86_64 1:1.20.1-9.el7 sẽ được cập nhật
-> Xử lý phụ thuộc: nginx(abi) = 1.20.1 cho gói: 1:nginx-mod-mail-1.20.1-9.el7.x86_64
-> Xử lý phụ thuộc: nginx(abi) = 1.20.1 cho gói: 1:nginx-mod-stream-1.20.1-9.el7.x86_64
-> Xử lý phụ thuộc: nginx(abi) = 1.20.1 cho gói: 1:nginx-mod-http-perl-1.20.1-9.el7.x86_64
-> Xử lý phụ thuộc: nginx(abi) = 1.20.1 cho gói: 1:nginx-mod-http-image-filter-1.20.1-9.el7.x86_64
-> Xử lý phụ thuộc: nginx(abi) = 1.20.1 cho gói: 1:nginx-mod-http-xslt-filter-1.20.1-9.el7.x86_64
---> Gói nginx.x86_64 1:1.20.2-1.el7.ngx sẽ là một bản cập nhật
-> Đã hoàn thành giải pháp phụ thuộc
Lỗi: Gói: 1:nginx-mod-http-perl-1.20.1-9.el7.x86_64 (@epel)
           Yêu cầu: nginx(abi) = 1.20.1
           Đang xóa: 1:nginx-1.20.1-9.el7.x86_64 (@epel)
               nginx(abi) = 1.20.1
           Cập nhật bởi: 1:nginx-1.20.2-1.el7.ngx.x86_64 (nginx)
               Không tìm thấy
Lỗi: Gói: 1:nginx-mod-stream-1.20.1-9.el7.x86_64 (@epel)
           Yêu cầu: nginx(abi) = 1.20.1
           Đang xóa: 1:nginx-1.20.1-9.el7.x86_64 (@epel)
               nginx(abi) = 1.20.1
           Cập nhật bởi: 1:nginx-1.20.2-1.el7.ngx.x86_64 (nginx)
               Không tìm thấy
Lỗi: Gói: 1:nginx-mod-mail-1.20.1-9.el7.x86_64 (@epel)
           Yêu cầu: nginx(abi) = 1.20.1
           Đang xóa: 1:nginx-1.20.1-9.el7.x86_64 (@epel)
               nginx(abi) = 1.20.1
           Cập nhật bởi: 1:nginx-1.20.2-1.el7.ngx.x86_64 (nginx)
               Không tìm thấy
Lỗi: Gói: 1:nginx-mod-http-image-filter-1.20.1-9.el7.x86_64 (@epel)
           Yêu cầu: nginx(abi) = 1.20.1
           Đang xóa: 1:nginx-1.20.1-9.el7.x86_64 (@epel)
               nginx(abi) = 1.20.1
           Cập nhật bởi: 1:nginx-1.20.2-1.el7.ngx.x86_64 (nginx)
               Không tìm thấy
Lỗi: Gói: 1:nginx-mod-http-xslt-filter-1.20.1-9.el7.x86_64 (@epel)
           Yêu cầu: nginx(abi) = 1.20.1
           Đang xóa: 1:nginx-1.20.1-9.el7.x86_64 (@epel)
               nginx(abi) = 1.20.1
           Cập nhật bởi: 1:nginx-1.20.2-1.el7.ngx.x86_64 (nginx)
               Không tìm thấy
 Bạn có thể thử sử dụng --skip-broken để khắc phục sự cố
 Bạn có thể thử chạy: rpm -Va --nofiles --nodigest
.. Cài đặt không thành công!

Tôi đã thử chạy lệnh rpm được đề xuất - rồi thực hiện lại cập nhật gói. Nhưng điều đó không có gì khác biệt.

Tôi cũng đã thử cài đặt 19 gói khác - tất cả chúng đều được cài đặt đúng cách. Sau đó, tôi đã thử lại Nginx - nhưng nó vẫn không thành công với cùng một lỗi ...Tôi cũng đã cố gắng lần lượt vô hiệu hóa repo nginx và repo epel (trong trường hợp đó là xung đột giữa hai repo) - nhưng nó không có gì khác biệt.

Có ai biết nguyên nhân gây ra sự cố này không - và cách khắc phục sự cố?

Cảm ơn trước!

/John

lá cờ cn
Đối với tôi, có vẻ như không thể tìm thấy các gói mới trên máy chủ kho lưu trữ. Bạn đã kiểm tra xem gương có còn hiệu lực không?
lá cờ cn
Tôi đang gặp sự cố tương tự và có vẻ như kịch bản tương tự (repo CentOS 7, EPEL, Nginx, các gói tương tự là 'Không tìm thấy').
lá cờ it
Tôi đang gặp vấn đề tương tự, với cùng một thiết lập (CentOS 7, EPEL, nginx repo). lỗi của tôi là giống hệt nhau. Các máy chủ C7 của chúng tôi đã ngừng nâng cấp vào ngày 16 tháng 11, tức là [khi nginx repo thêm 1.20.2](http://nginx.org/packages/centos/7/x86_64/RPMS/). Các lỗi gợi ý (ít nhất là với tôi) rằng `yum update` đang cố cập nhật nginx lên 1.20.2, nhưng các gói nginx do EPEL cung cấp (ví dụ: [nginx-mod-mail](https://centos.pkgs. org/7/epel-x86_64/nginx-mod-mail-1.20.1-9.el7.x86_64.rpm.html)) có yêu cầu nginx là 1.20.1 (xem "Yêu cầu") và do đó, các phần phụ thuộc có thể' không được giải quyết.
Điểm:5
lá cờ it

Tôi đã giải quyết vấn đề này cho hệ thống của mình, mặc dù giải pháp của tôi có thể không áp dụng được cho tất cả mọi người, tùy thuộc vào việc bạn có sử dụng hay không nginx-* các mô-đun đang gây ra sự cố phụ thuộc.


giải pháp của tôi là gỡ bỏ nginx-mod-http-perl, nginx-mod-stream, nginx-mod-mail, nginx-mod-http-hình ảnh-bộ lọc, và nginx-mod-http-xslt-bộ lọc, và sau đó tôi đã có thể nâng cấp yum để có được phiên bản nginx mới nhất.

Đã chỉnh sửa để thêm: Ngoài việc gỡ bỏ các gói đó, tôi đã cập nhật /etc/yum.repos.d/epel.repoloại trừ=nginx*, để ngăn chặn @epel-cung cấp các gói nginx khỏi bị cài đặt lại.

Điều này hiệu quả với tôi vì tôi không thực sự sử dụng chức năng do các gói đó cung cấp; Tôi có linh cảm rằng chúng được cài đặt bởi Webmin (giống như OP, tôi cũng đang sử dụng) để hỗ trợ một số tính năng mà nó có thể cung cấp.

Nếu bạn đang sử dụng chức năng mà các mô-đun này cung cấp, thì tôi nghĩ giải pháp, ít nhất là vào lúc này, là vô hiệu hóa repo nginxvà bật lại nếu/khi @epel phát hành các mô-đun tương thích. Nếu bạn làm điều này, bạn sẽ không có bất kỳ bản nâng cấp nginx nào, vì không có sẵn 1.20.2 trên @epel.


Vấn đề cốt lõi dường như là bạn (và tôi) có nginx-1.20.1-9.el7.x86_64 (@epel) đã cài đặt, nhưng cả hai @epelnginx kích hoạt repos.

Vào/khoảng ngày 16 tháng 11, nginx phát hành repo nginx-1.20.2, và vì vậy yum hiện đang cố cập nhật lên phiên bản đó. Tuy nhiên, không có tương ứng 1.20.2 cập nhật cho các loại khác nhau nginx-* các mô-đun được cài đặt (hoặc trên @epel hoặc trên nginx) và vì vậy chúng không thể được cập nhật. Những mô-đun đó cũng yêu cầu nginx(abi) = 1.20.1, đó là cái mà @epel cung cấp (nhưng điều đó nginx làm không phải xuất hiện để cung cấp) và do đó kiểm tra phụ thuộc không thành công.

phụ lục: trong trường hợp của chúng tôi, chúng tôi đã làmnginx-gói cốt lõi được cung cấp được cài đặt tại một thời điểm và nó đã được thay thế tại một số điểm bằng @epel phiên bản - đây là từ nhật ký yum:

# zgrep -h nginx.x86 /var/log/yum.log-202* /var/log/yum.log
Ngày 22 tháng 4 03:55:37 Đã cập nhật: nginx.x86_64 1:1.18.0-1.el7.ngx
Ngày 30 tháng 10 09:27:11 Đã cập nhật: nginx.x86_64 1:1.18.0-2.el7.ngx
Ngày 21 tháng 4 08:48:33 Đã cập nhật: nginx.x86_64 1:1.20.0-1.el7.ngx
26 tháng 5 04:20:28 Đã cập nhật: nginx.x86_64 1:1.20.1-1.el7.ngx
Ngày 18 tháng 6 06:46:31 Đã cài đặt: nginx.x86_64 1:1.20.1-2.el7
27 tháng 10 04:51:03 Đã cập nhật: nginx.x86_64 1:1.20.1-9.el7

Vào ngày 18 tháng 6, .ngx gói đã được thay thế bằng gói được cung cấp bởi @epel. Điều này có thể hoặc có thể không liên quan đến vấn đề hiện tại.

John Dalsgaard avatar
lá cờ cn
Xin chào @joel - cảm ơn bạn đã cập nhật.Tôi cũng đã cố gỡ cài đặt các mô-đun đó (phải bỏ qua các phần phụ thuộc) - và sau đó cập nhật thành công.
red_shift avatar
lá cờ cn
Tôi vừa trải qua quá trình tương tự được nêu ở đây. Cảm ơn! Tôi đã thêm "exclude=nginx*" vào repo EPEL của mình và xóa nginx. Sau đó, tôi đã xóa nginx bằng cách sử dụng 'yum remove nginx', thao tác này cũng xóa các mô-đun của tôi. Tôi có thể tìm thấy một số mô-đun mà tôi đang sử dụng trong repo nginx chính (https://centos.pkgs.org/7/nginx-x86_64/) nhưng một số mô-đun không có ở đó. Bây giờ tôi đang thiếu "nginx-mod-mail" và "nginx-mod-stream". Nhân tiện, định dạng mới là "nginx-module-{module name}". Ngoài ra, hãy nhớ cấu hình nginx cũ của bạn được lưu dưới dạng /etc/nginx/nginx.conf.rpmsave

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.