Sự khác biệt trong quản lý gói giữa Debian và Arch


9

Một cuộc thảo luận từ bài đăng này khiến tôi tò mò về sự khác biệt giữa quản lý gói Debian và Arch. Ngoài ra, mọi người có xu hướng nói rằng Arch rất nhẹ, vì vậy tôi tự hỏi điều đó có liên quan gì đến việc quản lý gói. Có lẽ bởi vì đối xử với Debian Khuyến nghị như phụ thuộc nặng nề bởi mặc định?

Bạn cũng có thể đề cập đến tính linh hoạt / sức mạnh giữa hai người quản lý gói: cái nào trong hai cái cho phép bạn làm nhiều hơn.

Tôi biết rằng một số tính năng khả dụng trên hệ thống quản lý gói Debian sẽ không liên quan trên hệ thống Arch, vì Arch có một Suite và Debian có nhiều (ví dụ như ghim APT và xử lý phụ thuộc nâng cao), vì vậy hãy so sánh các tính năng đó được áp dụng cho cả hai hệ thống (giả sử rằng đối với Debian, tôi chỉ sử dụng không ổn định ).


LƯU Ý : Bằng cách quản lý gói Debian tôi đang đề cập đến APT, aptitude và dpkg. Tôi không quen thuộc với các công cụ Arch, vì vậy tôi không biết có gì khác ngoài Pacman không.
tshepang

Câu trả lời:


7

Tôi chỉ sử dụng vòm thường xuyên trong một vài tuần và không có chuyên gia về chủ đề này nên câu trả lời này không có nghĩa là toàn diện, chỉ một vài điểm tôi đã lưu ý về "tính linh hoạt / sức mạnh":

  • Đây chỉ là một ấn tượng nhưng pacman có vẻ hiện đại và đơn giản hơn trong thiết kế / kiến ​​trúc của nó. Ít nhất là có rất ít công cụ để giải quyết. Trong khi tôi không biết về mã nguồn apt, tôi chỉ tình cờ xem mã libalpm (thư viện cơ bản cho pacman) để tạo ra một bản vá rất đơn giản, và nó có vẻ sạch sẽ và dễ hiểu.

  • Nó cũng rất nhanh (do tối ưu hóa và cũng có thể bằng cách quan tâm đến một vài điều (xem bên dưới)). Bản phát hành cuối cùng (pacman 3.5, vài ngày tuổi) đã cố gắng cải thiện hiệu suất bằng cách giảm số lượng tệp cơ sở dữ liệu liên quan.

  • Mặc dù arch được định hướng theo hướng sử dụng các gói nhị phân, nhưng nó cũng có lợi thế khi xây dựng các gói từ nguồn, với hệ thống xây dựng tương tự như các cổng của BSD (ABS).

  • Việc tạo các gói rất dễ dàng và nhanh chóng, chỉ cần một vài dòng trong tệp PKGBUILD và nó đã được thực hiện, không cần phải xử lý kiểm soát / quy tắc / bản quyền / thay đổi / bất cứ điều gì như với các gói Debian. Và trong một vài lần nhấp chuột trên web, gói của bạn được chia sẻ với mọi người trên AUR (Kho lưu trữ người dùng Arch).

Những thứ tôi nhận được trong Debian và không phải trong arch:

  • Triggers / hook (điều gì làm cho apt cập nhật bộ đệm biểu tượng, mandb hoặc bất cứ thứ gì chỉ bằng cách xem nơi gói cài đặt tệp, không cần trình đóng gói để làm bất cứ điều gì) (dường như có kế hoạch để thực hiện điều này).

  • gỡ lỗi (không có vấn đề gì lớn và bằng cách buộc tôi phải làm mọi thứ theo cách thủ công, nó buộc tôi phải biết chính xác những gì đã được thực hiện) và xử lý đúng cách các tệp cấu hình mới (ít nhất là tôi muốn pacman biết khi nào tệp cấu hình trong gói mới phiên bản khác với phiên bản đã cài đặt vì nó đã được thay đổi trong phiên bản mới hoặc do tôi đã sửa đổi cục bộ).

  • ký gói (có vẻ như nó đang được thực hiện ).

Đối với vòm là ánh sáng, lý do thực sự duy nhất là nó đi kèm với một vài gói được cài đặt theo mặc định và bạn được khuyến khích thêm những gì bạn cần, vì vậy có lẽ không cài đặt các phụ thuộc tùy chọn theo mặc định là kích thích người dùng cài đặt tránh phình to.


Tôi không thể phân tích điều này: nhưng tôi có thể làm mà không cần nó và nhân tiện biết tôi làm gì tốt hơn . Ngoài ra còn có một lỗi đánh máy trên câu cuối cùng.
tshepang

Ngôn ngữ nào là trình quản lý gói pacman được viết bằng? Liệu nó có chức năng quản lý gói cấp thấp và cấp cao tương tự như dpkg / apt, và nếu vậy, chúng được gọi là gì?
Faheem Mitha

@Tshepang: xin lỗi, người nói tiếng Anh không phải người bản xứ ở đây. Tôi có nghĩa là "đây không phải là vấn đề lớn đối với tôi khi không có chức năng này (debconf) và bằng cách buộc tôi làm mọi thứ bằng tay, nó buộc tôi phải biết chính xác những gì đã được thực hiện".
gentledevil

@Faheem Mitha: Pacman được viết bằng C, và là tiền đề của libepm, xử lý cả quản lý gói "cấp cao" và "cấp thấp".
gentledevil

@zanko: Tôi cũng không phải là người bản ngữ. Tất cả những gì tôi muốn bạn làm là làm cho câu rõ ràng hơn, và không phải trong một bình luận, mà trên chính bài đăng. BTW, lỗi đánh máy tôi đã đề cập là tùy chọn . Tôi có thể tự chỉnh sửa bài đăng, nhưng tôi nghĩ bạn cũng có thể sửa nó cùng với phần làm rõ.
tshepang

6

Tôi bắt đầu hành trình Linux của mình với Ubuntu lucid và hiện đang sử dụng Arch. Tôi đã viết một số gói Arch và tôi sẽ nói nó dễ hơn nhiều so với việc viết các gói Debian. Nhưng, tôi muốn chỉ ra cho @gentledevil rằng Arch có một hệ thống móc cho các gói, được gọi là một install file.

Về cơ bản, nó được đặt tên ${pkgname}.installvà chứa một vài chức năng để cài đặt / gỡ bỏ / nâng cấp trước / sau; chỉ cần đặt các bản cập nhật bộ đệm phông chữ của bạn vào đó và cứ thế và nó hoạt động tương tự như các móc Debian.

Ngoài ra, tôi nhận thấy bạn đã đề cập đến việc 'ghim' một ứng dụng bằng các công cụ quản lý gói debian; Archman pacman cũng tích hợp sẵn, /etc/pacman.confchấp nhận một số cài đặt, bao gồm IgnorePkg =, điều này sẽ ngăn nâng cấp lên bất kỳ gói nào được liệt kê sau bằng (phân cách bằng dấu cách)


1
Ngoài ra, mặc dù không phải là gói repo, bạn có thể sử dụng powerpilltrình bao bọc cho pacman để tải xuống song song nhiều gói, vì vậy thay vì pacman -S libfoo libbar libbaztải từng gói một, thay vào đó, nó sẽ tải xuống đồng thời cả ba, tăng tốc độ nâng cấp để kết nối tốt hơn.
hanetzer

-1

Trước khi tôi đi quá xa, hãy nghiên cứu Dòng thời gian của tượng hình Linux

Để hiểu sự khác biệt trong Trình quản lý gói, bạn phải hiểu các triết lý của HĐH được mô tả ở trên


Ba phụ huynh lớn

  1. Redhat, Now Fedora - Gói Manger - RPM, viết tắt của Redhat Gói Manager, dòng lệnh rpm
  2. Slackware - Trình quản lý gói - tgz, các tệp nén thông thường. Mặc dù đây chỉ là các tệp nén, tệp được Slackware xây dựng ngược dòng và được đặt trong kho lưu trữ, đôi khi được gọi là cổng
  3. Debian - DEB, viết tắt của Debian, công cụ dòng lệnh của nó là Aptitude or Apt

Những phụ huynh này là những người mẹ và người cha của hầu hết các bản phân phối mà chúng ta biết ngày nay. Ý tưởng / khái niệm về Hệ thống quản lý gói được bắt nguồn hoặc chia sẻ dưới một hình thức hoặc thời trang nào đó. Bất kể, tất cả các bậc cha mẹ này đều là nhà phân phối nhị phân, nghĩa là chương trình được đóng gói và quyết định bởi bên thứ 3, sau đó được lưu trữ trong kho lưu trữ và được sử dụng hoặc cài đặt bởi cơ sở người dùng.

3 cha mẹ nhỏ

  1. Linux From Scratch - Dựa trên nguồn, không có trình quản lý gói.
  2. Gentoo - Bắt nguồn từ Linux từ Scratch . Bản phân phối này thực chất là Linux từ Scratch cộng với trình quản lý gói, được gọi là Portage / emerge
  3. SourceMage - Gói quản lý phù thủy

Những phụ huynh này là trẻ vị thành niên vì cơ sở người dùng của họ giao dịch tốc độ và dễ cài đặt với sức mạnh và dễ cấu hình. Mỗi gói được tải xuống và biên dịch từ đầu, sử dụng các biến và tệp cấu hình.

Cây cầu

Arch được tạo ra như một cầu nối giữa một phân phối nhị phân, giống như một trong 3 Cha mẹ chính và phân phối dựa trên nguồn giống như một trong 3 Cha mẹ nhỏ. Như vậy, nó nhận được trạng thái là cha mẹ trong dòng thời gian, bởi vì không có cha mẹ nào khác cung cấp chức năng này. Pacman có thể linh hoạt cho phép người dùng cài đặt gói nhị phân từ kho lưu trữ chính thức hoặc gói được xây dựng tùy chỉnh bằng Arch Build System. Khái niệm này cung cấp một sự cân bằng giữa sức mạnh mà cha mẹ nhỏ cung cấp với sự dễ dàng cài đặt mà cha mẹ chính cung cấp.


Theo tôi, đó không phải là trình quản lý gói thể hiện sức mạnh của một hệ thống, vì tất cả các trình quản lý gói đều thực hiện cùng một nhiệm vụ, đó là quản lý và duy trì một hệ thống lành mạnh. Do đó, hệ thống bạn sử dụng phải được xác định bởi các yếu tố như:

  • Cấp độ người dùng: Một người mới sử dụng linux nên bắt đầu với Major Parent, trong khi một người thành thạo về mặt kỹ thuật sẽ tìm thấy sự cân bằng.
  • Những gì bạn muốn làm với hệ thống của mình: Chạy máy chủ LAMP với người dùng được đính kèm hoàn toàn khác với chạy máy tính để bàn để duyệt web và đọc e-mail.
  • Mức độ thoải mái: Cấp độ người dùng không chịu được, nếu bạn thành thạo về mặt kỹ thuật, nhưng không muốn dành một ngày cuối tuần để biên dịch một hệ thống, bạn sẽ chọn một phụ huynh chính, bất kể mọi người bạn biết có chọn cái gì khác không.

Đây là tập trung nhiều hơn vào geneaology của phân phối, chứ không phải là một sự so sánh của pacman và các công cụ quản lý gói Debian ...
jasonwryan

@jasonwryan Đó là điểm, vì tất cả các nhà quản lý gói đều hoàn thành cùng một nhiệm vụ, nghĩa emerge packagenamelà giống như sudo apt-get install packagename.
Eyoung100

Ở cấp độ đó, có; nhưng điều đó hoàn toàn bỏ lỡ điểm của câu hỏi, nghĩa là, điều gì phân biệt pacman với {apt, aptitude}.
jasonwryan

@jasonwryan Tôi đã trả lời rằng trong phần Cầu. Khác hơn thế, không có sự khác biệt. Sự khác biệt duy nhất là ngữ nghĩa, tức là một lệnh so với lệnh khác. Nếu OP đang tìm kiếm sự khác biệt về ngữ nghĩa, có một hướng dẫn cho điều đó.
Eyoung100

-3

Đây không phải là một câu trả lời đầy đủ hay toàn diện - những áp phích trước tôi đã đưa ra một số điểm rất tốt, tôi chỉ muốn thêm 2 xu của mình. Một điều nữa - tôi chưa bao giờ thực sự quen với apt / dpkg. Nó luôn có vẻ quá phức tạp đối với tôi, tôi thực sự thoải mái nhất với yum / vòng / phút.

pacman rất dễ sử dụng, đó là một pro và một con - bạn có thể học cách sử dụng nó (xây dựng gói sang một bên) trong một buổi chiều - nó sử dụng các tính năng quản lý gói hoàn toàn trực quan và hoàn chỉnh, nhưng - và đây là một nhưng lớn - nó là vô cùng không linh hoạt.

Nếu các nhà thiết kế không nghĩ đến một tính năng trước đó, bạn sẽ bị lừa.

Một vài ví dụ: không có phiên bản gốc trong pacman. Nếu bạn muốn hạ cấp phiên bản gói - bạn phải tải xuống phiên bản gói cụ thể đó và sử dụng tùy chọn -U (nâng cấp) để cài đặt từ tệp. Nó rất hướng đến việc luôn luôn sử dụng các gói tiên tiến trên hệ thống của bạn.

Không có dọn dẹp bộ đệm nội bộ thực sự / xây dựng lại hoàn chỉnh. Nếu (do sự cố mạng), quá trình tải xuống gói bị hỏng, ví dụ như trong -Syu, thông báo lỗi, trong khi chính xác, sẽ không được sử dụng nhiều - nó sẽ không xác định chính xác gói bị hỏng ngay cả khi đã xác minh và gỡ lỗi "đầy đủ" và không có số lượng -Syyc sẽ thực sự xóa bộ nhớ cache và tải lại các gói. Tin vui là -Sc sẽ cho bạn biết các gói đã tải xuống ở đâu để bạn có thể chỉ cần loại bỏ gói vi phạm (nếu bạn có thể tìm ra gói nào) hoặc tất cả chúng và khởi động lại -Syu.

Tích hợp pacman với dkms cũng có chút vấn đề - trong khi cài đặt kernel mới tôi vẫn gặp lỗi từ dkms. Sử dụng dkms build && dkms cài đặt vào kernel mới hoạt động mà không gặp trở ngại nào, tuy nhiên pacman sẽ không cung cấp thông tin nào tại sao dkms thất bại trong quá trình nâng cấp kernel (tôi nghi ngờ nó không bao giờ vượt qua đường dẫn chính xác của kernel mới và chỉ để dkms sử dụng mặc định (hiện đang chạy) kernel nhưng với phiên bản sai).

Một giai thoại khác về tính không linh hoạt của nó - như đã nêu, tôi đã quen với vòng / phút. Nếu tôi có một tệp trên hệ thống của mình và tôi muốn biết gói nào sở hữu nó, tôi có thể chạy yum cung cấp / path / to / file và nhận TẤT CẢ các gói có thể đặt nó ở đó - ngay cả khi không có gói nào được cài đặt. Nếu tệp được đặt thủ công và bây giờ tôi muốn cài đặt một gói - nó sẽ đổi tên mới (thêm phần mở rộng .rpmnew) và để tôi chọn sử dụng cái gì.

pacman chỉ đơn giản là lỗi một tệp đã tồn tại, nhưng với thông báo lỗi hoàn toàn không liên quan - nó phàn nàn về xung đột giữa chủ sở hữu tệp "đúng" và gói "hệ thống tệp" hiện được cài đặt, như thể nó cũng là chủ sở hữu của cùng một tệp. Ngoài ra, nó chủ yếu hướng đến thông tin được cài đặt cục bộ - cố gắng lấy thông tin (như danh sách tệp và quyền sở hữu) của các gói chưa được cài đặt là ít trực quan hơn.

Nói một cách đơn giản - nó không chín chắn như yum, và có lẽ là dpkg, điều này cho phép nó dễ sử dụng cũng như tính không linh hoạt tương đối.


1
Không có câu trả lời toàn diện, có một số điểm bạn nêu ra thực sự là một sản phẩm không quen thuộc với pacman. Ví dụ pacman -Qo $filesẽ cho bạn biết gói nào sở hữu tập tin $. Ngoài ra, toàn bộ câu trả lời của bạn là một người rơm khi OP hỏi rõ ràng về sự khác biệt giữa Arch và Debian - yumkhông liên quan gì đến nó ...
jasonwryan

đó là lý do tại sao tôi tiết lộ rõ ​​ràng thực tế đó khi bắt đầu câu trả lời của tôi. đối với tệp -Qo $ - bạn đã bao giờ thử điều đó đối với gói chưa được cài đặt chưa?
Dani_l

Không có điểm nào thử nó cho một gói không được cài đặt; Có những công cụ khác cho điều đó. Và tiết lộ không làm giảm bớt sự thật rằng bạn chưa trả lời câu hỏi: "so sánh" giữa yum và pacman không giống như sự khác biệt giữa các trình quản lý gói của Debian và Arch.
jasonwryan

@jasonwryan Tất nhiên có một điểm. Chỉ vì bạn không thấy cần phải tìm ra gói nào có thể sở hữu một tệp ngay cả khi nó chưa được cài đặt, điều đó không có nghĩa là nhu cầu đó không tồn tại. Đó là điểm. Đối với các công cụ khác - họ có cần phải biết cơ sở không? pacman là người quản lý gói. Về điểm chính của bạn - Tôi có thể đã đọc sai hoàn toàn câu hỏi, nhưng tôi cho rằng đó là về một PM nhẹ so với một PM phức tạp hơn. Tôi giả sử apt / dpkg ít nhất là phức tạp như yum / vòng / phút, tính năng khôn ngoan.
Dani_l

Quan điểm của tôi là bạn đang trả lời một câu hỏi về việc so sánh táo với cam bằng cách so sánh sự hiểu biết hạn chế của bạn về táo với lê. Và vâng, bạn đã hoàn toàn đọc sai câu hỏi ...
jasonwryan
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.