Danh sách khác nhau của các gói cài đặt được báo cáo bởi vòng / phút so với yum


8

Tôi muốn có Máy chủ B để có cùng thiết lập với Máy chủ A. Máy chủ A và B có cùng Arch và cùng phần cứng.

Kế hoạch của tôi là có một danh sách tất cả những thứ đã cài đặt trên Máy chủ A và cài đặt nó bằng cách sử dụng danh sách trên Máy chủ B một cái gì đó như:

yum -y install $(cat installed.txt)

Trong máy chủ A, tôi nên sử dụng:

rpm -qa > installed.txt

hoặc là:

yum list installed > installed.txt  

Các danh sách dường như khác nhau và tôi không biết tại sao.

yum list installedcó 930 dòng trong khi rpm -qacó 895 dòng, sự khác biệt có thể là gì?


Bạn đã diffed đầu ra (có thể sau khi sắp xếp)?
Anthon

Tôi không biết tại sao có sự khác biệt giữa đầu ra yum và vòng / phút. Có thể bạn nên thử đề xuất của Anthon và cho chúng tôi biết đầu ra là gì. Ngoài ra, đối với tôi cả hai lệnh liệt kê cùng một số dòng và theo kế hoạch của bạn, tôi sẽ đi theo rpmdanh sách vì nó có danh sách có thể được sử dụng trong yumlệnh b của máy chủ của bạn .
Ramesh

Đặt cược của tôi: cũng vì các gói được cài đặt bởi "rpm --install gói.rpm"
Massimo

Câu trả lời:


4

sự khác biệt có thể là gì?

Lý do chính cho số lượng dòng khác nhau là đầu ra được tạo bởi yumđược định dạng sao cho mỗi trường xếp hàng theo chiều dọc (bất kể độ dài của tên gói và / hoặc số phiên bản). Nó thực hiện điều này bằng cách sử dụng hai dòng để liệt kê các gói như vậy và đệm dòng thứ hai với các ký tự khoảng trắng để sắp xếp các trường chính xác. Đầu ra sau (từ hộp CentOS 6) cho thấy hai dòng được sử dụng để liệt kê device-mapper-persistent-data.x86_64gói:

device-mapper-libs.x86_64         1.02.95-3.el6_7.4    @clearos-verified-updates
device-mapper-persistent-data.x86_64
                                  0.3.2-1.el6          @clearos
dhclient.x86_64                   12:4.1.1-49.P1.v6    @clearos-verified-updates

Tuy nhiên, đây không phải là lý do duy nhất và có thể được nhìn thấy bằng cách xoa bóp đầu ra của hai lệnh trước khi so sánh chúng:

Đối với đầu ra của rpmlệnh:

  1. Sắp xếp nó sao cho các gói bắt đầu bằng chữ in hoa xuất hiện trước các gói có chữ thường:

    rpm -qa | LC_ALL=C sort
    
  2. Sử dụng sedlệnh để xóa số phiên bản gói:

    rpm -qa | LC_ALL=C sort r | sed 's/-[^-]*-[^-]*$//' >| installed.rpm
    

Đối với đầu ra của yumlệnh:

  1. Xóa hai dòng tiêu đề đầu tiên ( Loaded pluginsInstalled Packages):

    Loaded plugins: etckeeper, fastestmirror
    Installed Packages
    

    Chúng ta có thể sử dụng sedcho việc này:

     yum list installed | sed '1,2d;'
    
  2. Chúng tôi cũng có thể sử dụng sedđể xóa tất cả các dòng là phần tiếp theo của danh sách gói (các dòng này bắt đầu bằng một số khoảng trắng để tất cả các phiên bản gói xếp thành hàng).

    yum list installed | sed '1,2d;/^ /d;s/\..*//' >| installed.yum
    

Bây giờ, chúng ta có thể sử dụng difflệnh để so sánh đầu ra của hai tệp. Đây là kết quả từ hộp CentOS 6:

# diff installed.{rpm,yum}
239,243d238
< gpg-pubkey
< gpg-pubkey
< gpg-pubkey
< gpg-pubkey
< gpg-pubkey

Phần kết luận

Điều này cho thấy rpm -qacũng bao gồm các danh sách gói cho các khóa công khai được tin cậy để ký các gói trong khi yumlệnh bỏ qua các gói này.


một thời gian trước nhưng không bao giờ quá muộn cho nhiều lời cảm ơn cho phân tích và kết luận hữu ích của bạn !!
John Smith

@johnSmith Muộn còn hơn không! :) Tôi nhớ dành một chút thời gian cho việc này nhưng tôi nghĩ đó là một câu hỏi thú vị. Trả lời các câu hỏi như vậy có thể là một cách học tốt trong chính nó.
Anthony Geoghegan

6

danh sách yum được cài đặt có 930 dòng trong khi vòng / phút có 895 dòng, sự khác biệt có thể là gì?

Đây có thể chỉ là định dạng khác biệt. danh sách yum sẽ thực hiện một loạt các gói thông minh đến kích thước thiết bị đầu cuối của bạn.

Những gì bạn có thể muốn làm là sử dụng:

# Run this on the master server
yum-debug-dump

# Run this on the new server, with the input from the above.
yum-debug-restore

cảm ơn đã trả lời, sau khi cài đặt yum-utils trên máy chủ mới và chạy "yum-debug-restore masterDef.gz", nó nói với mọi gói không có sẵn, tôi có thiếu gì không?
John Smith

Nếu chúng không phải là các máy chủ giống hệt nhau (Ví dụ: vòm khác nhau hoặc máy chủ mới có các gói cũ hơn), bạn có thể sử dụng các tùy chọn --ignore-arch và / hoặc --install-mới nhất để khôi phục.
James Antill

Tôi sẽ đề nghị sao chép nội dung của master /etc/yum.repos.d/* sang máy chủ mới trước khi chạy yum-debug-restore
Sergey Vlasov

1

Tôi không hoàn toàn chắc chắn tại sao các danh sách lại khác nhau, nhưng tôi biết đó rpm -qa > installed.txtlà cách chính xác để tìm tất cả các gói đã cài đặt. Nó sẽ tìm kiếm yum installedcũng như rpm installed.

Ngoài ra, định dạng rpm -qađầu ra sẽ hoạt động tốt hơn với yum installlệnh mà bạn muốn thực thi.


0

yum list installed cho tôi đầu ra như dưới đây.

pam_krb5.i386                        2.2.14-22.el5                     installed

Bây giờ, rpm -qacó những điều dưới đây để nói.

pam_krb5-2.2.14-22.el5

Cả hai lệnh đều cho tôi số dòng giống như đầu ra. Tôi sẽ đi với rpm -qadanh sách.

Ngoài ra, từ câu trả lời này , tôi thấy phần thông tin dưới đây.

có chương trình, "vòng / phút", thao tác cụ thể các gói được yêu cầu thao tác và có "yum", đây là một hệ thống quản lý thông minh hơn có thể tìm thấy các phụ thuộc và tải xuống các tệp .rpm ngay cả khi chúng không ở trong hệ thống.

Vì vậy, sự khác biệt có thể là yumgiải quyết các phụ thuộc nhưng rpmđã cài đặt tất cả các phụ thuộc và do đó nó cung cấp một danh sách đầy đủ hơn.

Tôi thấy sự khác biệt thực tế giữa yumrpmnhư dưới đây.

Vấn đề nổi bật nhất rpmlà một tiểu bang thường được hầu hết mọi người gọi là địa ngục phụ thuộc . Vấn đề này xảy ra với các gói phụ thuộc vào rất nhiều gói khác, một số gói đó cũng phụ thuộc vào rất nhiều gói khác. Một kiến ​​thức phổ biến là bạn phải cài đặt tất cả các phụ thuộc để chương trình hoạt động chính xác. rpmkhông thể tự động làm điều này cho bạn. Nó chỉ có thể kiểm tra xem tất cả các gói cần thiết đã được cài đặt trước khi cài đặt gói cần thiết chưa. Theo dõi thủ công và cài đặt từng phụ thuộc là một việc vặt đối với hầu hết những người chỉ muốn cài đặt một gói ban đầu.

yumcó khả năng theo dõi các phụ thuộc của gói và cài đặt chúng trước khi cài đặt gói mà người dùng muốn cài đặt. Điều này đơn giản hóa toàn bộ quá trình vì bạn chỉ cần biết tên của gói mà bạn muốn cài đặt và không lo lắng liệu các gói yêu cầu đã được cài đặt hay chưa. Các gói không thể tìm thấy trên hệ thống được tìm kiếm trong kho lưu trữ có sẵn cho hệ thống.

Người giới thiệu

http: //www.differenceb between.net/tĩ/difference-b between-yum-and-rpm /


cảm ơn đã trả lời, đối với tôi, danh sách yum được cài đặt có 940 dòng trong khi vòng / phút có 895 dòng, có ý kiến ​​gì khác biệt không?
John Smith

@johnSmith, Yumxử lý các phụ thuộc và tìm nạp các gói để điền vào chúng. Yumchạy hiệu quả cùng một lệnh như rpmnhưng cũng bao gồm tất cả các gói cần thiết để khớp với các phụ thuộc.
Ramesh

yumlà một ơn trời để quản lý các phụ thuộc gói nhưng điều đó không liên quan khi nó chỉ liệt kê các gói được cài đặt trên một hệ thống. Xem James và câu trả lời của tôi cho lý do cho sự khác biệt.
Anthony Geoghegan

0

yum list installed có thể tạo đầu ra hai dòng, nếu tên gói và phiên bản gói dài.


Câu trả lời này có thể ngắn nhưng nó là chính xác (vì vậy nâng cao).
Anthony Geoghegan
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.