Sửa lỗi keyring khi update Omarchy
Gặp lỗi invalid hoặc corrupted package PGP signature khi update Omarchy? Refresh archlinux-keyring trước, rồi sửa thủ công keyring của pacman nếu vẫn lỗi.
Vì sao update Omarchy thất bại với lỗi keyring
Một lần update Omarchy dừng với invalid or corrupted package (PGP signature) là lỗi keyring, không phải do tải xuống bị lỗi. Bản archlinux-keyring trên máy bạn cũ hơn các signing key mà Arch đang sử dụng, nên pacman từ chối package vì không thể truy nguyên package đó về một key được tin cậy. Hãy refresh keyring, sau đó chạy update lại.
Lỗi này không riêng gì Omarchy. Đây là một lỗi thường gặp của Arch, và Omarchy khiến nhiều người gặp lỗi này ngay từ lần đầu sử dụng một máy Arch.
Trước khi chạy các command, cần xác định phạm vi. Omarchy là desktop Hyprland dựa trên Arch, nên toàn bộ nội dung dưới đây áp dụng cho máy tính bạn đang sử dụng trực tiếp. Đây không phải hướng dẫn cài Omarchy trên VPS. Server của bạn chạy một hệ điều hành khác, và section cuối sẽ dẫn đến các trang phù hợp với server đó.
Bản sửa tối thiểu
Hai lệnh, sau đó chạy update:
sudo pacman -Sy
sudo pacman -S archlinux-keyring
omarchy updatesudo pacman -S archlinux-keyring in ra ==> Appending keys from archlinux.gpg..., sau đó chạy một lượt ==> Locally signing trusted keys in keyring... chậm hơn. Những dòng đó cho biết các developer key mới đã được thêm vào keyring của bạn. Lệnh update bị lỗi một phút trước giờ đã chạy đến cuối.
Đây là chuỗi thao tác mà người dùng đã báo cáo trong issue 4608 của Omarchy. Báo cáo này cũng dẫn đến việc thêm thao tác refresh keyring trực tiếp vào updater.
Không nên chạy riêng pacman -Sy. Lệnh này tải package database mới nhưng không upgrade các package hiện có. Cài phần mềm tùy ý từ trạng thái đó sẽ tạo ra partial upgrade. Partial upgrade có thể làm hỏng máy Arch, vì package vừa build sẽ yêu cầu các phiên bản library được ghi trong database mới, trong khi hệ thống của bạn vẫn đang dùng các phiên bản cũ. archlinux-keyring là ngoại lệ được chấp nhận: lệnh này cung cấp key material thay vì binary đã liên kết, và bạn chạy full upgrade ngay sau đó.
omarchy update là command dành cho Omarchy 4. Omarchy 4, có tên là Quattro, được phát hành vào tháng 8 năm 2026 và là series hiện tại tính đến tháng 9 năm 2026. Script phía sau command này là omarchy-update, bạn cũng có thể chạy trực tiếp script đó. Nên dùng một trong hai cách này thay vì chỉ chạy pacman -Syu, vì Omarchy updater sẽ tạo filesystem snapshot trước và chạy các migration để giữ cấu hình đồng bộ với release mới. Chạy pacman -Syu thủ công sẽ bỏ qua cả hai bước đó.
omarchy update keyring có tác dụng gì
Omarchy 4 tự xử lý bước keyring:
omarchy update keyringNó xử lý 2 keyring riêng biệt. Script luôn chạy sudo pacman -Sy --noconfirm archlinux-keyring. Lý do script cài lại thay vì so sánh version trước được nêu ngay trong script: nội dung của keyring đó có thể thay đổi dù version của package không đổi. Script cũng fetch và local sign Omarchy signing key khi key đó chưa tồn tại:
sudo pacman-key --recv-keys 40DFB630FF42BCFFB047046CF0134EE680CAC571 --keyserver keys.openpgp.org
sudo pacman-key --lsign-key 40DFB630FF42BCFFB047046CF0134EE680CAC571Có 2 keyring vì máy của bạn cài package từ 2 nguồn. archlinux-keyring là package riêng của Arch trong repository core, chứa key của các developer và trusted user của Arch. omarchy-keyring là bên thứ ba. Nó đến từ repository [omarchy] mà Omarchy thêm vào /etc/pacman.conf. Trên stable channel, repository này là Server = https://pkgs.omarchy.org/stable/$arch và chứa key dùng để sign mọi package omarchy-*. Omarchy 4 ship SigLevel = Required DatabaseOptional, vì vậy package có signature không khớp với trusted key sẽ bị từ chối, bất kể package đó đến từ repository nào.
Vì sao trust không xác định là vấn đề về key, không phải vấn đề tải xuống
Lỗi thường có dạng như sau. Tên package và signer thay đổi tùy từng máy. 2 dòng cuối thì không thay đổi.
error: archlinux-keyring: signature from "Christian Hesse <eworm@archlinux.org>" is unknown trust
:: File /var/cache/pacman/pkg/archlinux-keyring-20230704-1-any.pkg.tar.zst is corrupted (invalid or corrupted package (PGP signature)).
error: failed to commit transaction (invalid or corrupted package (PGP signature))Hãy đọc unknown trust theo nghĩa đen. gpg đã phân tích signature và xác định signature có cấu trúc hợp lệ. Vấn đề là nó không thể liên kết key đứng sau signature đó với một key mà máy của bạn trust. Sau đó pacman đánh dấu package là corrupt, vì đối với pacman, package không thể verify và package bị hỏng cho cùng một kết quả.
Các key được trust nằm trong /etc/pacman.d/gnupg. Đây là bản sao cục bộ và không bao giờ được fetch trực tiếp trong lúc update. Nó được seed từ các file key mà package archlinux-keyring cài vào /usr/share/pacman/keyrings. Arch tự quản lý lịch thêm và revoke developer key. Vì vậy, một máy không được sử dụng trong vài tháng có thể chứa danh sách key cũ hơn developer đã ký package vào sáng nay. Message liên quan signature from ... is marginal trust có cùng nguyên nhân: các key đã có mặt, nhưng thiếu các local signature dùng để xác lập trust cho chúng trong keyring của bạn.
Sửa chữa toàn bộ khi chính keyring bị hỏng
Đôi khi sudo pacman -S archlinux-keyring cũng thất bại với đúng lỗi bạn đang cố sửa, hoặc sudo pacman-key --list-keys không trả về thông tin hữu ích. Khi đó keyring đã bị hỏng chứ không chỉ cũ, nên phải tạo lại.
sudo mv /etc/pacman.d/gnupg /etc/pacman.d/gnupg.broken
sudo pacman-key --init
sudo pacman-key --populate archlinux
sudo pacman -Sy archlinux-keyring
sudo pacman-key --populate archlinuxHãy di chuyển thư mục cũ thay vì xóa nó. Nếu quá trình tạo lại gặp lỗi, bạn có thể khôi phục thư mục này. Một keyring có thể khôi phục đáng giá hơn vài kilobyte dung lượng mà nó sử dụng.
Thứ tự thực hiện rất quan trọng. --init tạo một keyring trống cùng signing key local mới. Keyring trống không tin cậy gì, nên mọi lượt download tại thời điểm đó đều sẽ fail verification. --populate archlinux nạp key từ /usr/share/pacman/keyrings/archlinux.gpg, là file đã có trên disk từ package bạn cài vài tháng trước. Các key này có thể đã cũ, nhưng vẫn đủ để verify lượt download package keyring hiện tại. Đây là việc dòng thứ tư thực hiện. Dòng cuối cùng nạp các file key mới mà lượt download vừa tạo ra.
Bây giờ hãy khôi phục Omarchy key. Việc xóa /etc/pacman.d/gnupg đã loại bỏ local signature khiến key này được tin cậy, nên mọi package omarchy-* đều fail với unknown trust cho đến khi key quay lại:
sudo pacman-key --recv-keys 40DFB630FF42BCFFB047046CF0134EE680CAC571 --keyserver keys.openpgp.org
sudo pacman-key --lsign-key 40DFB630FF42BCFFB047046CF0134EE680CAC571
sudo pacman-key --list-keys 40DFB630FF42BCFFB047046CF0134EE680CAC571Command cuối cùng phải in ra một dòng pub cho fingerprint đó. Nếu thay vào đó là dòng keyserver receive failed, mạng của bạn không kết nối được đến keys.openpgp.org qua port 443. Hãy sửa lỗi đó trước khi thử lại. Trên Omarchy 4, bạn có thể chạy omarchy update keyring thay cho 2 command đầu tiên vì command này thực hiện đúng cả 2 bước đó. Kết thúc bằng omarchy update.
Khi keyring hiện tại nhưng update vẫn thất bại
Clock bị sai. Key và chữ ký có timestamp, còn gpg sẽ so sánh chúng với clock của system. Nếu clock bị đặt lệch về quá khứ, một chữ ký hợp lệ có thể trông như được tạo trước khi key tồn tại, nên package bị từ chối. Chạy timedatectl và tìm System clock synchronized: yes. Lỗi này thường xảy ra trên laptop có pin CMOS đã hỏng. Trên server, nguyên nhân khác và được trình bày trong vì sao clock của VPS bị trôi và cách giữ đồng bộ.
Một file trong cache bị hỏng. File tải xuống bị mirror không ổn định cắt ngắn sẽ tạo ra cùng dòng invalid or corrupted package. Không cách xử lý keyring nào sửa được lỗi này. Hãy phân biệt hai trường hợp dựa vào package được nêu tên. Nếu lần nào cũng là cùng một package, hãy xóa file đó khỏi /var/cache/pacman/pkg/ rồi chạy update lại. sudo pacman -Sc sẽ xóa các phiên bản đã cache mà bạn không còn cài đặt.
Lỗi nằm trong yay, không phải pacman. Một bản build từ AUR sẽ xác minh archive source upstream bằng makepkg. Công cụ này đọc keyring của chính user tại ~/.gnupg. Nó không bao giờ đọc keyring của pacman. Thông báo lỗi là ==> ERROR: One or more PGP signatures could not be verified!, thường xuất hiện cạnh gpg: Can't check signature: No public key. Import key bằng user bình thường với gpg --recv-keys <key-id> và không dùng sudo. sudo pacman-key --recv-keys không giúp được, vì lệnh này ghi vào /etc/pacman.d/gnupg, trong khi makepkg không tìm key ở đó.
Bỏ qua pacman-key --refresh-keys. Lệnh này hỏi keyserver về mọi key bạn đã có, nên chạy chậm và sẽ thất bại hoàn toàn khi keyserver bận. Nó cũng không thể thêm key mà keyring của bạn chưa có, trong khi đó mới là vấn đề thực tế ở đây. Cập nhật archlinux-keyring là cách được hỗ trợ.
Nếu quá trình cập nhật đã dừng giữa chừng
Đọc /tmp/omarchy-update.log. Đây là nơi omarchy-update ghi output, và lỗi thực sự đầu tiên thường đã bị các thanh tiến trình đẩy lên khỏi màn hình khi bạn kiểm tra terminal.
Nếu hệ thống ở trạng thái tệ hơn lúc bắt đầu, hãy dùng snapshot. Omarchy tạo một snapshot trước khi cập nhật trên các hệ thống có snapper, vì vậy bạn có thể reboot và chọn snapshot trước khi cập nhật trong boot menu. Sửa keyring từ trạng thái đã biết là tốt đó, rồi cập nhật lại.
Máy chủ không phải máy desktop của bạn
Omarchy là một desktop, còn máy chủ bạn SSH vào là một bài toán khác với các cách xử lý khác. Máy chủ cần một distribution có thời gian hỗ trợ dài và không cài desktop stack bên trên. Đây là nội dung của chọn OS phù hợp cho VPS. Việc đầu tiên trên máy chủ đó là khóa SSH bằng key và harden cấu hình sshd. Việc thứ hai là duy trì quy trình bảo trì để package không bị stale như keyring này. Nếu điều bạn thích ở Omarchy là các shortcut cho coding agent tích hợp sẵn, những agent đó cũng chạy được trên server: chạy coding agent trên VPS hướng dẫn phần setup, còn duy trì Claude Code trong một tmux session hướng dẫn cách để tiến trình tiếp tục chạy khi bạn đóng laptop và rời đi.
FAQ
Chạy sudo pacman -Sy trước khi cài archlinux-keyring có an toàn không?
An toàn trong trường hợp này, nhưng chỉ khi bạn chạy ngay lệnh cài keyring, rồi full upgrade. -Sy làm mới package database trong khi các package đã cài vẫn ở phiên bản cũ. Cài software thông thường trong trạng thái đó là partial upgrade, có thể khiến một binary được link với phiên bản library không có trên máy. archlinux-keyring là data chứ không phải code được link, nên đây là ngoại lệ tiêu chuẩn. Không được dừng sau pacman -Sy rồi bỏ đó.
Tại sao tôi vẫn gặp lỗi keyring nếu Omarchy đã tự làm mới keyring?
Updater làm mới archlinux-keyring trước khi upgrade package. Vì vậy, lỗi này thường có nghĩa là bạn không chạy qua updater. Chạy pacman -Syu hoặc yay thủ công sẽ bỏ qua bước đó. Các trường hợp khác gồm keyring local bị hỏng chứ không chỉ cũ, khiến chính package keyring không thể được verify, hoặc bạn đang dùng một bản Omarchy cũ hơn, từ trước khi bước này tồn tại. Việc rebuild đầy đủ bằng pacman-key --init và pacman-key --populate archlinux xử lý được trường hợp keyring bị hỏng.
omarchy-keyring là gì, và nó có giống archlinux-keyring không?
Đây là 2 package khác nhau từ 2 nguồn khác nhau. archlinux-keyring là package của Arch, từ repository core, chứa các key của developer Arch và trusted user. omarchy-keyring là package bên thứ ba. Nó đến từ repository [omarchy] tại pkgs.omarchy.org, được Omarchy thêm vào cấu hình pacman, và chứa key có fingerprint 40DFB630FF42BCFFB047046CF0134EE680CAC571 để ký các package omarchy-*. Omarchy yêu cầu chữ ký hợp lệ từ cả 2 bộ key, nên mất một trong 2 bộ sẽ chặn update.
Tôi có nên chạy pacman-key --refresh-keys để sửa lỗi chữ ký không?
Không. Lệnh này truy vấn keyserver về mọi key trong keyring của bạn. Nó chạy chậm và sẽ fail khi không thể truy cập keyserver. Nó cũng không thể import một key chưa từng có trong keyring. Key bị thiếu được cung cấp cùng package archlinux-keyring, nên chạy sudo pacman -Sy rồi sudo pacman -S archlinux-keyring vừa nhanh hơn vừa là cách được hỗ trợ.
Tôi có thể cài Omarchy trên VPS để 2 máy có cùng cấu hình không?
Omarchy là desktop Hyprland dành cho máy có màn hình, GPU và keyboard ở phía trước. Trên VPS, bạn không có gì để hiển thị, nhưng vẫn phải duy trì một bộ desktop package lớn. Hãy chạy một server distribution trên VPS, giữ Omarchy trên laptop, và chấp nhận rằng 2 máy sẽ có các bộ package khác nhau cùng các lệnh update khác nhau.