Sự khác biệt giữa cập nhật yum và cài đặt yum


20

Trong khi làm việc với rpmlệnh tôi nhận thấy rằng nếu tôi cài đặt some-package-1.0và sau đó thực hiện một rpm -ivh some-package-1.1gói khác thì cả hai gói sẽ được liệt kê khi tôi thực hiện rpm -qa | grep some-packagenhư sau:

some-package-1.0
some-package-1.1

Tuy nhiên, thay vì cài đặt 1.1, nếu tôi nâng cấp thông qua, rpm -Uvh some-package-1.1tôi sẽ nhận được kết quả mong muốn của một gói duy nhất (1.1) khi tôi thực hiện rpm -qa | grep some-package.

Bây giờ hành vi tương tự áp dụng với yum installyum update?

Tôi hỏi bởi vì với lệnh rpm -U(nâng cấp), một gói không tồn tại để nâng cấp / cài đặt nhưng với yum update(nếu tôi không nhầm) thì một gói phải tồn tại.

Tôi đặc biệt quan tâm để biết kết quả của việc chỉ định các gói với các phiên bản của chúng như some-package-1.0. Vì vậy, tóm lại, điều tôi muốn biết là nếu tôi có hai phiên bản cụ thể như some-package-1.0some-package-1.1:

  1. Sẽ thực hiện một yum installngày 1.1 sau khi 1.0 đã được cài đặt, liệt kê 2 gói?
  2. Sẽ chạy yum update some-package-1.1thay thế thành công some-package-1.0?

Câu trả lời:


31

Sự khác biệt chính giữa YUM và RPM là yumbiết cách giải quyết các phụ thuộc và có thể cung cấp các gói bổ sung này khi thực hiện công việc của mình. Mặc dù rpmcó thể cảnh báo bạn về những phụ thuộc này, nhưng không thể tìm nguồn bổ sung.

Như để cài đặt so với nâng cấp. Cả hai công cụ đều có thể thực hiện cài đặt và RPM thậm chí sẽ cho phép bạn cài đặt nhiều phiên bản cùng một lúc, nhưng YUM sẽ cho bạn biết rằng gói đó đã được cài đặt. Vì vậy, không YUM sẽ không cho phép bạn cài đặt nhiều phiên bản.

Như yum update, điều này sẽ phản ứng theo một trong hai cách. Nếu bạn nói với nó một gói mà bạn muốn cập nhật, nó sẽ cố gắng làm như vậy, tải xuống tất cả các phụ thuộc cần thiết và cài đặt chúng. Nếu bạn chạy nó mà không có bất kỳ tên gói nào, yum updatesẽ cố gắng cập nhật mọi gói được cài đặt trên hệ thống của bạn.

Nếu bạn sử dụng yum upgradenó sẽ làm như vậy yum update, ngoại trừ nó sẽ cố gắng loại bỏ bất kỳ gói nào đã được đánh dấu là "lỗi thời".

Thí dụ

Đây là một kịch bản không giống như của bạn. Một phiên bản mới vim-X11có sẵn.

$ yum check-update vim-X11 | expand
Loaded plugins: auto-update-debuginfo, changelog, langpacks, refresh-packagekit

vim-X11.x86_64                     2:7.4.417-1.fc19                      updates

Và tôi hiện đang ở phiên bản này:

$ rpm -q vim-X11 | expand
vim-X11-7.4.179-1.fc19.x86_64

Khi chúng tôi cố gắng cài đặt nó:

$ sudo yum install vim-X11
...   
=================================================================================================================================================================
 Package                                 Arch                              Version                                      Repository                          Size
=================================================================================================================================================================
Updating:
 vim-X11                                 x86_64                            2:7.4.417-1.fc19                             updates                            1.2 M
Updating for dependencies:
 vim-common                              x86_64                            2:7.4.417-1.fc19                             updates                            5.9 M
 vim-enhanced                            x86_64                            2:7.4.417-1.fc19                             updates                            1.0 M
....
Running transaction
  Updating   : 2:vim-common-7.4.417-1.fc19.x86_64                                                                                                            1/6 
  Updating   : 2:vim-enhanced-7.4.417-1.fc19.x86_64                                                                                                          2/6 
  Updating   : 2:vim-X11-7.4.417-1.fc19.x86_64                                                                                                               3/6 
  Cleanup    : 2:vim-X11-7.4.179-1.fc19.x86_64                                                                                                               4/6 
  Cleanup    : 2:vim-enhanced-7.4.179-1.fc19.x86_64                                                                                                          5/6 
  Cleanup    : 2:vim-common-7.4.179-1.fc19.x86_64                                                                                                            6/6 
  Verifying  : 2:vim-enhanced-7.4.417-1.fc19.x86_64                                                                                                          1/6 
  Verifying  : 2:vim-X11-7.4.417-1.fc19.x86_64                                                                                                               2/6 
  Verifying  : 2:vim-common-7.4.417-1.fc19.x86_64                                                                                                            3/6 
  Verifying  : 2:vim-enhanced-7.4.179-1.fc19.x86_64                                                                                                          4/6 
  Verifying  : 2:vim-X11-7.4.179-1.fc19.x86_64                                                                                                               5/6 
  Verifying  : 2:vim-common-7.4.179-1.fc19.x86_64                                                                                                            6/6 

Tóm lại

  1. Sẽ thực hiện một yum installngày 1.1 sau khi 1.0 đã được cài đặt, liệt kê 2 gói?

Không. YUM vẫn sẽ thực hiện cập nhật ngay cả khi bạn đã yêu cầu cài đặt nếu gói đã được cài đặt.

  1. Sẽ chạy yum update some-package-1.1thành công thay thế một số gói-1.0?

Vâng.


Cảm ơn câu trả lời chi tiết. Vì vậy, theo cách tôi nhìn thấy, tôi chỉ có thể tiếp tục sử dụng yum installkhi chỉ định tên gói với phiên bản và không quan tâm đến việc cài đặt nhiều phiên bản. Một tình huống mà tôi muốn sử dụng yum updatesẽ là khi tôi chỉ xác định tên gói, đúng không?
kaizenCoder

@aspiresCodeArtisan - điều đó đúng một phần. yum installsẽ phát hiện ra rằng một gói đã được cài đặt và sẽ chuyển sang cập nhật nó so với cài đặt nó, như ví dụ của tôi cho thấy.
slm

@slm - Để làm rõ, vòng / phút có thể tìm kiếm một kho lưu trữ tương tự như tìm kiếm zypper cho một gói cụ thể không?
động lực

1
@Motivated - không rpmgiống như vậy dpkg, nó chỉ liên quan đến chính nó w / quản lý các tệp trên đĩa cục bộ. Đối với kho "quản lý" b / w hệ thống của bạn + một repo bạn cần một cái gì đó như yumhoặc dnf.
slm

1
@Motivated - rpmkhi được sử dụng để cài đặt từ url không thực hiện bất kỳ gói dep nào để kéo chúng vào, nó chỉ tải xuống vòng / phút cục bộ và sau đó cài đặt nó.
slm
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.