Làm cách nào tôi có thể tự động chạy các bản cập nhật trên Arch Linux?


15

Tôi là một người mới chơi Arch Linux và vẫn đang quen với một số mô hình của nó. Tôi đến với rất nhiều thói quen từ một bản phân phối khác có cấu trúc khá hơn một chút và theo một số cách có thể dự đoán được.

Một điều tôi muốn làm với một vài hệ thống - là cho phép một công việc định kỳ thực hiện cập nhật tự động tất cả các gói hệ thống. Điều này có vẻ như sẽ khá dễ dàng ngoại trừ tôi cũng muốn một số phản hồi có ý nghĩa từ hệ thống cho tôi biết mọi thứ đã diễn ra như thế nào mà cuối cùng tôi bỏ qua nó cho đến khi tôi phát hiện ra hệ thống đang hoạt động.

  • Đầu ra đầy đủ pacmanlà không cần thiết. Tôi không quan tâm việc tải xuống mất bao lâu hoặc đó là bản cập nhật 46 trên 53.
  • Đối với hầu hết các phần tôi không quan tâm đến thành công.
  • Tôi quan tâm đến lỗi. Nếu một lần chạy cập nhật thất bại, tôi muốn biết về nó và bất kỳ thông báo lỗi cụ thể nào cũng cần được vá.
  • Tôi quan tâm đến các "thông báo" được đưa ra trong quá trình cài đặt. Ví dụ cập nhật systemd ngày hôm nay cho biết:

    :: coredumps are no longer sent to the journal by default. To re-enable:  
    echo >/etc/sysctl.d/50-coredump.conf \  
        "kernel.core_pattern=|/usr/lib/systemd/systemd-coredump %p %u %g %s %t %e"
    

    Hoặc hệ thống tập tin sản xuất này:

    warning: /etc/group installed as /etc/group.pacnew  
    warning: /etc/passwd installed as /etc/passwd.pacnew  
    warning: /etc/shadow installed as /etc/shadow.pacnew
    

    Danh mục cuối cùng này thực sự là điều khiến tôi phải đặt câu hỏi này vì dường như những điều này rất không nhất quán trong toàn bộ gói. Một số trong số này dường như được tạo ra bởi post_upgrade(), một số khác bởi install(), v.v. Đôi khi chúng được viết thành thiết bị xuất chuẩn, đôi khi để stderr. Định dạng của các thông báo rất khác nhau: đôi khi toàn bộ một khối được đặt trước bằng cách thụt lề theo một cách nào đó, những lần khác chỉ có một chuỗi lặp lại trống.

Tôi muốn biết về những điều có thể cần sự can thiệp của tôi vào một hệ thống nhưng không bị làm phiền bằng cách khác. Có một công cụ nào đó quản lý dữ liệu này một cách thông minh và đơn giản hóa việc quản trị hệ thống không? Có cách nào để có được đầu ra được tạo bởi các gói riêng biệt với quy trình pacman cài đặt chúng không? Hoặc tôi có thể tự mình viết một số trình phân tích cú pháp lọc các nội dung lành tính khỏi nhật ký cài đặt không?

Trước khi bạn hiểu tất cả những điều này thật ngu ngốc, xin lưu ý rằng tôi đủ thông minh để không làm điều này trên các máy chủ sản xuất và không phải không có ảnh chụp sao lưu toàn bộ dựa trên hệ thống sẽ giúp phục hồi dễ dàng trong trường hợp thảm họa.


Điều đầu tiên tôi sẽ làm là xóa yaourtthẻ, cả từ câu hỏi và mô hình khái niệm của bạn: cố gắng làm điều này với các repos chính thức sẽ đủ khó, thêm các gói ngẫu nhiên từ AUR vào hỗn hợp sẽ khiến nó trở nên kỳ quặc ...
jasonwryan

Ồ, và đây không phải là một ý tưởng ngu ngốc; nhưng nó thúc đẩy rất nhiều so với cách Arch hoạt động. Sử dụng checkupdates-Syuing mỗi ngày một lần là một nhiệm vụ khá nhỏ; Tôi không thấy bất kỳ lợi ích thực tế nào cho tất cả các công việc mà đề xuất của bạn sẽ đòi hỏi.
jasonwryan

@jasonwryan Ý tôi là mở rộng về điều đó, nhưng tôi thực sự có một số gói AUR tôi muốn phù hợp với quy trình làm việc tương tự. Tôi hiện đang sử dụng rộng rãi yaourt và vô cùng bỏ lỡ thực tế là không có hỗ trợ chạy khô cho các hoạt động quản lý gói! : /
Caleb

2
DNA của Arch đang làm bẩn tay bạn: đây không phải là cách nó được dự định để chạy; bạn có thể đến đó, nhưng đó sẽ là một chiến thắng của Pyrros và, nếu được ghi lại ở đây, sẽ chỉ dẫn rất nhiều người mới đến rìa của một vách đá mà họ hoàn toàn không chuẩn bị cho ...
jasonwryan

2
Tôi đã dành một chút thời gian để thử vào năm ngoái và đi đến kết luận rằng cách duy nhất để đạt được nâng cấp mà không thường xuyên giết chết hệ thống là xây dựng hình ảnh mới (dường như là điểm thử nghiệm cơ bản và đáng tin cậy hơn trong Arch) sau đó ghép dịch vụ với cấu hình công cụ quản lý. Có thể các bản cập nhật đã ổn định một chút nhưng có 3-4 trong khoảng thời gian 6 tháng sẽ làm hỏng hệ thống mà không cần can thiệp thủ công.
Matt

Câu trả lời:


11

Tôi muốn rõ ràng cho cả bạn và bất kỳ người nào khác có thể xảy ra với chủ đề này. Những gì bạn muốn làm là không thể. Arch không giấu giếm sự thật rằng nó mong đợi bạn quản trị hệ thống của mình. Một phần trách nhiệm đó đang được trình bày cho chu kỳ cập nhật.

Bây giờ, có các bước của quy trình cập nhật mà bạn có thể tự động hóa một cách có trách nhiệm, nhưng nó sẽ không bao giờ lên tới số tự động -Syu. Bạn chỉ cần có mặt để nâng cấp.

Những gì bạn có thể làm, ví dụ, là thiết lập một croncông việc tải xuống bất kỳ gói nào cần được cài đặt (nhưng không cài đặt chúng). Sau đây là một đoạn trích từ pacmantài liệu:

SYNC OPTIONS
...
-w  --downloadonly
    Retrieve all packages from the server, but do not install/upgrade anything.

Bạn có thể sau đó, thiết lập một croncông việc để chạy sudo pacman -Syuw. Tôi không quen thuộc lắm với cronkhả năng lập kế hoạch. Tuy nhiên, nếu nó chỉ có khả năng chạy một công việc sau khi một điều kiện cụ thể được đáp ứng (ví dụ: lệnh trả về một giá trị cụ thể), thì việc kích hoạt tải xuống các gói mới khi cần thiết là khá đơn giản.

Tôi sẽ tưởng tượng việc chạy một kiểm tra chống lại checkupdates | wc -l, ví dụ. Nếu nó trả về bất kỳ số nào trên 0, bạn có thể kích hoạt tải xuống. Tuy nhiên, một lần nữa, điều này sẽ không thay thế việc chạy -Syukhi bạn có mặt và sẵn sàng đối phó với việc nâng cấp.

Đối với phần cuối cùng của câu hỏi của bạn, nơi nhận được kết quả của những gì đã xảy ra trong quá trình nâng cấp, bạn đang tìm kiếm /var/log/pacman.log. Nó bao gồm tất cả các thông tin lỗi có thể bạn quan tâm.


một công cụ có nghĩa là làm cho pacmanthân thiện hơn một chút đối với người dùng không quen. Nếu tôi không nhầm, nó cũng cung cấp thông báo về các mục tin tức nếu có bản cập nhật yêu cầu can thiệp thủ công.

Công cụ này có thể làm cho cuộc sống của bạn đơn giản hơn một chút trong thời gian ngắn, nhưng nó sẽ không bao giờ thay thế cho việc theo dõi Danh sách gửi thư một cách hợp lý và siêng năng.


2
Trên thực tế, đối với các thông báo về các gói chính thức sẽ yêu cầu can thiệp thủ công, tôi khuyên bạn nên theo dõi arch-dev-publicarch-arch .
HalosGhost

Ngoài ra, @jasonwryan là hoàn toàn chính xác. Làm điều này với pacmancó thể có thể. Làm điều đó với yaourtlà không khả thi.
HalosGhost

yaourtTrên thực tế, công việc này tốt hơn một chút so với pacman, theo tôi nghĩ, cấu hình mặc định của nó ít hơn một người trợ giúp cực kỳ chắc chắn sẽ phá hỏng mọi thứ trong thời gian dài. Tuy nhiên, nó cực kỳ cấu hình và có thể được thực hiện để duy trì cây nguồn rất hiệu quả. Cả hai yaourtpacmanchỉ bọc alpmdù thế nào.
mikeerv

Hoặc, tôi đoán nó là đúng hơn để nói, yaourtkết thúc tốt đẹp pacmanvà một số alpmchức năng và pacmankết thúc bổ sung alpm. Trong mọi trường hợp mặc dù, yaourtkéo dài pacman.
mikeerv

Như đã lưu ý ở đây , -Syuwcó khả năng khá nguy hiểm. Nó có khả năng tạo ra các bản cập nhật một phần nếu các bản cập nhật không được áp dụng và phần mềm được cài đặt sau đó -S.
Sparhawk

1

Có một kịch bản cũ làm một công việc thực sự tốt; nó được gọi là safepac .

EDIT: Kịch bản này vẫn có sẵn trên github tại đây: https://github.com/bencahill/binfiles/blob/master/safepac

Nó làm gì và nó hoạt động như thế nào?

Cách tôi thường cập nhật Arch là đọc tin tức và sau đó làm pacman -Syu, hoặc chỉ làm pacman -Syuvà nếu có gì sai, hãy đọc tin tức. Bây giờ kịch bản này không làm gì khác: Nó nhận được các mục tin tức mới nhất từ ​​nguồn cấp RSS, thực hiện một số sedphép thuật và so sánh tên của tất cả các gói có bản cập nhật có sẵn cho tin tức. Nó khớp với "tên gói" và "tên gói-" trong tin tức và nếu tên gói xuất hiện ở đâu đó trong tin tức, nó sẽ bỏ qua gói và chỉ cập nhật tất cả các gói khác. Bằng cách này, bất cứ điều gì có thể sai sẽ bị hoãn cho đến khi một người có thời gian để kiểm tra vấn đề bằng tay, trong khi các cập nhật không quan trọng sẽ chỉ được thực hiện tự động!

Thông thường, một khi bạn đã quan tâm đến một bản cập nhật có thể không mượt mà, bạn sẽ không muốn safepacbỏ qua một gói nhất định vì nó vẫn còn trong tin tức. Đó là những gì người dốt nát dành cho. Vì vậy, mỗi khi bạn cập nhật thủ công, bạn có thể thêm mục tin tức tương ứng vào danh sách bỏ qua , số lượng mục tin tức ở đâu. Bạn cũng có thể chỉ định số lượng tin tức mới nhất bạn muốn đưa vào phân tích cú pháp với công tắc. Kịch bản cũng đủ thông minh để bỏ qua các mục không tồn tại. Nếu bạn gặp sự cố với các gói có tên rất ngắn có thể xuất hiện tùy ý trong tin tức (như "có"), bạn có thể thêm chúng vào danh sách trắng để chúng luôn được cài đặt ngay cả khi chúng xuất hiện trên tin tức.safepac -Ia xxxxxx-nsafepac -Wa

Xin lưu ý rằng bạn cần thiết lập thư hoạt động vì tập lệnh này cũng gửi cho bạn một thư thông báo (có nhật ký đầy đủ?) Và với các phần chính của bản cập nhật:

phân tích cú pháp pacmanđầu ra để tìm những từ này và thêm nó vào thông báo:
"lưu ý" "pacnew" "lỗi" "quan trọng" "cảnh báo" "tồn tại".

Kịch bản cũ, nhưng ý tưởng là tốt và có thể vẫn hoạt động với bản cập nhật nhỏ, nếu có.


một vấn đề có thể là cập nhật lớn (hoặc phá vỡ) không được thông báo trong tin tức, nhưng bạn phải tự mình theo dõi. Trường hợp tại điểm, cập nhật từ python2 để python3
Lesto

Tuy nhiên, bạn có thể sử dụng checkupdates (pacman-utils) và lấy danh sách các gói, sau đó liệt kê từ xa chúng, tốt nếu bạn có một pool, nhưng có lẽ tốt hơn là thiết lập một cái gì đó như repo cục bộ
Lesto

-2

Tôi sử dụng của riêng tôi untility chạy yaourtbởi cron.


1
Yaourt thực sự đã chết : đây là một ý tưởng tồi tệ ngoạn mục.
jasonwryan

Tôi đã sử dụng yaourttrong nhiều năm. Đó là một công cụ tốt, nhưng những thứ nó được xây dựng để "bọc" đã thay đổi hình dạng và hiện tại nó có một số điều khá sai. Tại thời điểm này, nó có vấn đề đến nỗi các tác giả của công cụ đã nói thậm chí họ không sử dụng nó nữa. Nếu bạn muốn một người trợ giúp AUR, tôi khuyên bạn nên thử một trong những người được duy trì tích cực. Tôi chuyển sang yaybản thân mình và tôi khá hạnh phúc.
Caleb

Tiện ích đó làm việc với yaytôi là tốt.
vadzim
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.