RHEL5: Cấm cài đặt các gói i386 trên hệ thống 64 bit?


13

Mỗi khi tôi cài đặt một cái gì đó với yum, nó sẽ cố gắng cài đặt cả hai phiên bản x86_64 và i386 của gói nếu cả hai đều có sẵn. Có cách nào tôi có thể cấm mà không chỉ định vòm của gói không?

Câu trả lời:


16

Thêm multilib_policy = tốt nhất vào /etc/yum.conf của bạn

Bây giờ Yum sẽ cố gắng cài đặt gói "tốt nhất" cho hệ thống của bạn và nó sẽ chỉ cài đặt gói đó (miễn là có sẵn).

Giả sử bạn đang sử dụng hệ thống 64 bit, trước tiên, yum sẽ thử cài đặt gói.x86_64, nếu điều đó không tồn tại, nó sẽ quay trở lại i386 và noarch.

Cài đặt mặc định là multilib_policy = all , có nghĩa là cài đặt tất cả các vòm có thể.


1
+1 Có, đó là câu trả lời tốt nhất. Thật không may, hầu hết mọi người bây giờ không có tùy chọn này.
knweiss

3

Tôi đã sử dụng tùy chọn chính xác = 1 in /etc/yum.conf một thời gian và nó đã hoạt động với tôi.

Nó vẫn cho phép bạn chỉ định thủ công vòm, nhưng nếu bạn không, nó chỉ cài đặt x86_64, không phải cả hai.

Theo hướng dẫn sử dụng el6 , yum.conf (5) :

          exactarch  Either  ‘1’  or ‘0’. Set to ‘1’ to make yum update only update the architectures of
          packages that you have installed. ie: with this enabled yum will not install an  i686  package
          to update an i386 package. Default is ‘1’.

...

          multilib_policy  Can  be set to ’all’ or ’best’. All means install all possible arches for any
          package you want to install. Therefore yum install foo will install foo.i386 and foo.x86_64 on
          x86_64, if it is available. Best means install the best arch for this platform, only.

BTW, cả multilib_policy = bestprecisionarch = 1 dường như là mặc định cho đến bây giờ.


2

Sử dụng hàm loại trừ trong yum.conf:

exclude=*.i386 *.i686

Hoặc exclude=*.i?86(/etc/yum.conf). Theo cách đó, tìm kiếm yum thậm chí sẽ không liệt kê các gói 32 bit.
basic6

1

Nó sẽ cố gắng cài đặt phiên bản i386 nếu bạn đã cài đặt phiên bản x86_64.

Hãy chú ý rằng nếu bạn sử dụng loại trừ trong yum.conf, bạn có thể loại trừ các gói chỉ có sẵn trong i386 arch

Một cách an toàn hơn có thể là yêu cầu rõ ràng vòm khi cài đặt :

yum install package.x86_64

0

-x, --exclude = gói Loại trừ một gói cụ thể theo tên hoặc toàn cầu khỏi các bản cập nhật trên tất cả các kho lưu trữ. Tùy chọn cấu hình: loại trừ

--disableexcludes = [all | main | repoid] Vô hiệu hóa các loại trừ được xác định trong tệp cấu hình của bạn. Có một trong ba tùy chọn: all == vô hiệu hóa tất cả loại trừ main == vô hiệu hóa loại trừ được xác định trong [main] trong yum.conf repoid == vô hiệu hóa loại trừ được xác định cho repo đó

ở trên từ người đàn ông bạn có thể sử dụng hoặc bạn có thể cài đặt yumex, cho phép bạn có thể chọn vòng / phút mà bạn cần cài đặt.

http://www.yum-extender.org/blog/


Tôi biết về loại trừ, tôi chỉ không muốn gõ chúng mỗi lần, tôi cũng không muốn tạo bí danh. Tôi chỉ không nghĩ rằng cài đặt i386 trên hệ thống 64 bit theo mặc định là một điều tốt.
Nikolai Prokoschenko

trong trường hợp đó bạn chọn từ gui những lựa chọn tốt hơn
Rajat

0

Những gì làm việc cho tôi là loại bỏ tất cả các gói ix86 khỏi máy. Bây giờ nó không bao giờ yêu cầu tôi cài đặt bất kỳ thứ gì 32 bit.

Đầu tiên hãy thiết lập .rpmmacros của bạn như thế này:

cat ~/.rpmmacros
%_query_all_fmt %%{name}-%%{version}-%%{release}.%%{arch}

Sau đó chạy cái này (tôi giả sử bash):

rpm -qa | egrep "i.86$"

Điều đó sẽ cung cấp cho bạn một danh sách không x86_64 rpms hiện được cài đặt. Bạn có thể loại bỏ tất cả chúng bằng cái này:

rpm -e $(rpm -qa | egrep "i.x86$")

Bây giờ bạn có một hệ thống 64 bit thuần túy.

-Dave


-3

Danh sách i386

yum list installed | grep i386

Và bây giờ bạn có thể xóa nó hoặc cập nhật lên x86_64


1
Điều này không trả lời câu hỏi.
Sven

Mặc dù điều đó có thể hữu ích để sửa chữa tình huống, nhưng đó không phải là câu trả lời cho câu hỏi làm thế nào để ngăn chặn chúng được cài đặt ngay từ đầu ...
HBruijn
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.