yum cài đặt gói mà không cập nhật các gói khác hoặc thất bại?


10

Có cách nào để nói yumđể cài đặt một gói, chọn một phiên bản của gói đó sẽ được thỏa mãn bởi các phụ thuộc hiện được cài đặt không?

Ví dụ: nếu tôi đang cài đặt gói pecl và hiện tại tôi đã cài đặt php-5.4.11nhưng phiên bản mới hơn php-5.4.14có sẵn. Thay vì cài đặt gói mới (và cập nhật tất cả các gói php lên 5.4,14) Tôi chỉ muốn nó chọn phiên bản cũ hơn của gói mà tôi yêu cầu được cài đặt mà không cập nhật tất cả các gói khác (hoặc thất bại nếu điều này không thể thực hiện được).

Đây là trường hợp cụ thể mà tôi biết tôi có thể loại trừ hoặc sửa gói php nhưng tôi đang tìm một tùy chọn chung sẽ áp dụng cho mọi cài đặt.

Cái gì đó như:

yum install php-pecl-xxxx --no-updates

Câu trả lời:


10

Giải pháp tạm thời:

Sử dụng -Ccờ:

sudo yum install foobar -C

Giải pháp lâu dài:

Sử dụng metadata_expirecờ trong yum.conf của bạn để kiểm soát điều này.

Chỉnh sửa /etc/yum.confvà thiết lập

metadata_expire=15d

Bạn có thể sử dụng d, h hoặc m để định cấu hình thời gian theo ngày, giờ hoặc phút .

Tiền thưởng: đây là tài liệu:

metadata_Exire là Thời gian (tính bằng giây) sau đó siêu dữ liệu sẽ hết hạn. Vì vậy, nếu siêu dữ liệu hiện tại được tải xuống ít hơn số giây này thì yum sẽ không cập nhật siêu dữ liệu đối với kho lưu trữ. Nếu bạn thấy rằng yum không tải thông tin về các bản cập nhật thường xuyên như bạn muốn hạ thấp giá trị của tùy chọn này. Bạn cũng có thể thay đổi từ mặc định sử dụng giây sang sử dụng ngày, giờ hoặc phút bằng cách nối thêm quảng cáo, h hoặc m tương ứng. Mặc định là 6 giờ, để khen yum-Updatesd chạy mỗi giờ một lần. Cũng có thể sử dụng từ "không bao giờ", nghĩa là siêu dữ liệu sẽ không bao giờ hết hạn. Lưu ý rằng khi sử dụng tệp metalink, metalink phải luôn mới hơn siêu dữ liệu cho kho lưu trữ, do xác nhận, vì vậy thời gian chờ này cũng áp dụng cho tệp metalink. Cũng lưu ý rằng "không bao giờ" không ghi đè "yum clean expire-cache"


0

Không đi qua bất kỳ tùy chọn như bây giờ. Tuy nhiên nếu bạn muốn cài đặt gói mà không cần nâng cấp, tôi khuyên bạn nên tải xuống một vòng / phút cùng phiên bản và sau đó cài đặt nó.


0

Trong yum-utilsgói có một công cụ gọi là yumdownloader. Bạn có thể sử dụng nó để tải xuống từ repos mà không cần cài đặt. Tất cả các công tắc tiêu chuẩn như --disablerepoáp dụng. Xem trang người đàn ông để biết thêm về nó.

Tôi nghĩ bạn có thể tải xuống RPM và sau đó làm những gì bạn muốn bằng cách sử dụng RPM trực tiếp.


1
Đây là một phần của hệ thống cài đặt gói tự động, vấn đề là chúng tôi không muốn yum 'cài đặt mới nhất' và 'cập nhật mọi thứ cần thiết'. Chúng tôi thực sự chỉ muốn nó cài đặt phiên bản của gói tương thích với những gì đã cài đặt. Về cơ bản là một tùy chọn cài đặt hoặc cài đặt xxx -no-Updates.
Linh mục Clint

0

Nếu phiên bản cũ hơn của gói vẫn còn trong kho yum của bạn, thì bạn chỉ có thể chạy yum install packagename-version-release.archvà nó sẽ cài đặt phiên bản cũ hơn mà không cố nâng cấp lên bản phát hành mới nhất. Bạn sẽ cần sử dụng tên đầy đủ, phiên bản, bản phát hành và vòm nếu có nhiều phiên bản và kiến ​​trúc trong repo yum của bạn. Bạn có thể nhận được tất cả thông tin đó bằng cách chạy yum list available 'packagename*'để tìm kiếm tất cả các gói bắt đầu bằng 'packagename'. Nếu bạn đã quản lý để nâng cấp các gói của mình và muốn hạ cấp xuống bản phát hành cũ hơn, bạn có thể chạy yum downgrade packagename1 packagename2. Bạn sẽ cần bao gồm danh sách tất cả các gói bạn muốn hạ cấp, vì nó có thể sẽ liên quan đến rất nhiều phụ thuộc.

Nếu bản phát hành cũ hơn không có trong kho yum của bạn, thì bạn chỉ cần tải xuống từ bất cứ nơi nào bạn tìm thấy gói cũ và cài đặt nó yum install /path/to/package.rpm, mặc dù tôi sẽ thận trọng với việc cài đặt các gói từ các nguồn không đáng tin cậy.


Nhưng nó sẽ hữu ích hơn nhiều nếu yumchỉ có thể chọn phiên bản tương thích mới nhất có sẵn.
Forcefsck

Nó có thể, nhưng tùy thuộc vào trình đóng gói để xác định các yêu cầu phù hợp.
jsbillings

Đôi khi các yêu cầu được bao phủ với một gói cũ hơn, nhưng yum khăng khăng chỉ chọn gói mới nhất. Ví dụ. trong trường hợp được mô tả ở trên, yum có thể tự động chọn php-pecl-5.4.11 nếu hệ thống bị khóa phiên bản php-5.4.11. Nó có thể là một vấn đề cho tự động hóa.
Forcefsck

Yum sẽ chỉ cập nhật lên phiên bản mới nhất nếu không có phụ thuộc vào phiên bản cũ. Trong trường hợp trên, yêu cầu phiên bản không bao giờ được yêu cầu bởi gói pecl. Bạn không thể đọc được suy nghĩ của mình và chọn một phiên bản tùy ý trừ khi bạn chỉ ra phiên bản nào trong một yêu cầu hoặc bởi phiên bản khóa trong các gói pecl và php.
jsbillings

Đối với ví dụ này cụ thể, với điều kiện php không thể nâng cấp (bị khóa phiên bản hoặc không có gói mới hơn trên repos), yum có thể chọn phiên bản pecl mới nhất không yêu cầu nâng cấp php. Đó không phải là chính xác tâm trí đọc, tôi tin rằng apt-get đã làm điều này rồi. Một lần nữa, đây là vấn đề tự động hóa khi bạn cần cài đặt gói bổ sung mà không nâng cấp một nửa hệ thống của mình và bạn cần đủ thông minh để xử lý yêu cầu, nghĩa là, nếu có nhiều phiên bản, hãy chọn tương thích mới nhất với các gói đã cài đặt rằng vì lý do gì không thể được nâng cấp.
Forcefsck
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.