Ba lỗi khác nhau mang cùng một thông báo lỗi của cask, và mỗi lỗi có con đường phục hồi riêng. Trình gỡ của nhà cung cấp có thể thiếu trong phiên bản đã cài, một tiến trình phụ trợ có thể vẫn đang chạy và giữ các tệp của nó, hoặc biên lai gói có thể không khớp với những gì có trên đĩa. Cách xử lý cũ trên diễn đàn từng cứu một trong những trường hợp đó không cho bạn biết bạn đang gặp trường hợp nào. Đọc bản ghi của chính cask là cách để tìm ra.

Ba lỗi trông giống nhau

Trình gỡ bị thiếu xuất hiện dưới dạng một đường dẫn không tồn tại khi cask cố chạy nó. Tiến trình phụ trợ còn sống xuất hiện dưới dạng một lần gỡ bắt đầu rồi khựng lại, hoặc dưới dạng một ứng dụng hiện lại sau khi bạn đóng nó. Biên lai cũ xuất hiện khi bản ghi của cask và cơ sở dữ liệu của trình cài đặt không thống nhất về việc sản phẩm có được cài hay không.

Hãy lưu văn bản lỗi đầu tiên trước khi thử lại bất cứ điều gì. Lần thử thứ hai ghi đè trạng thái đã tạo ra thông báo, và dòng gốc chính là thứ mà người bảo trì hoặc nhà cung cấp cần để phân biệt những trường hợp này. Sao chép nó vào nơi sẽ tồn tại qua lần thử lại.

Nếu VPN này đang mang kết nối bạn dùng để làm việc, hãy chuẩn bị một đường quản trị khác trước. Việc gỡ ứng dụng khách cung cấp quyền truy cập của bạn là quyết định về cửa sổ bảo trì, không phải về Homebrew. Chính thứ tự đó làm cho một lần gỡ thất bại có thể phục hồi thay vì kết thúc.

Đọc xem cask thực sự đã cài gì

Góc nhìn của chính Homebrew là bằng chứng rẻ nhất hiện có, và nó không thay đổi gì:

brew info --cask openvpn-connect
brew list --cask openvpn-connect

Lệnh đầu tiên in siêu dữ liệu của cask và các artefact mà nó quản lý; lệnh thứ hai liệt kê những gì được ghi là đã cài. Cả hai đều không chứng minh rằng mọi tiến trình phụ trợ trên máy khớp với công thức hiện tại, và chính vì thế một bản cài cũ có thể hỏng theo cách mà mã nguồn cask hiện tại không mô tả. Hãy coi hai kết quả đó là một khẳng định cần kiểm chứng, không phải lời cuối cùng về những gì tồn tại.

So sánh phiên bản đã ghi với phiên bản của chính ứng dụng trước khi chọn đường. Sự không khớp giải thích trình gỡ bị thiếu mà không có lỗi sâu hơn, và câu trả lời là nâng cấp lên phiên bản mà cask mong đợi, không phải dọn dẹp thủ công.

zap thêm gì, và giá bao nhiêu

Phần gỡ của một cask xử lý các artefact mà công thức khai báo: đóng ứng dụng, dỡ các tác vụ khởi động, xóa một mục đăng nhập, quên biên lai gói và xóa gói ứng dụng. Đó là con đường bình thường, và đó là con đường nên hoạt động.

--zap là một yêu cầu khác. Nó yêu cầu Homebrew xóa cả tùy chọn người dùng và tài nguyên chia sẻ, và tài liệu cảnh báo rằng điều này có thể ảnh hưởng đến phần mềm khác. Trong cask OpenVPN Connect, phần zap xóa openvpn.keychain-db và dọn sạch dữ liệu hỗ trợ ứng dụng của người dùng, nghĩa là thông tin đăng nhập và hồ sơ kết nối đã lưu cũng mất theo. Nếu hồ sơ đến từ một tổ chức, hãy xác nhận rằng bạn có thể đăng ký lại trước khi chọn con đường này.

ConditionPath that fitsPath to avoid
Uninstaller path missing after an OS upgradeUpgrade the cask to the version matching the appHand-writing a replacement script
Helper still running during removalQuit the app and its menu agent, then retryDeleting the bundle while the helper runs
Receipt exists but files are goneForget the receipt with the cask's own toolingRecursive deletion of the Caskroom entry
You need the machine clean and can re-enrollZap, after reading the stanzaZap on a machine whose profiles you cannot rebuild

Những con đường trông dứt khoát mà không phải

Viết một remove.sh giả kết thúc bằng mã thoát bằng không là lựa chọn tệ nhất trong danh sách. Nó khiến việc gỡ báo thành công trong khi các tác vụ khởi động, biên lai và dữ liệu ứng dụng vẫn còn nguyên, nên lần cài đặt tiếp theo thừa hưởng một sản phẩm bị gỡ một nửa và một bản ghi nói ngược lại.

Xóa thủ công thư mục Caskroom hoặc gói ứng dụng tạo ra trạng thái tương tự từ phía ngược lại. Các tệp biến mất trong khi biên lai vẫn còn. Mọi lệnh sau đó phải được cân nhắc với một cỗ máy không còn khớp với cơ sở dữ liệu của chính nó.

Một brew update-reset trên toàn bộ kho là can thiệp lớn hơn mức một cask thất bại biện minh. Nó thay đổi trạng thái tap của bạn để sửa một vấn đề chưa bao giờ liên quan đến trạng thái tap, và có thể để bạn gỡ lỗi một Homebrew khác với cái bạn bắt đầu.

Quyết định theo thứ tự

Hãy theo trình tự: đọc các artefact đã ghi của cask, so sánh phiên bản, đóng mọi thành phần đang chạy, thử lại lần gỡ thông thường, và chỉ sau đó mới cân nhắc zap. Nếu con đường thông thường vẫn hỏng, hãy lưu lỗi và mang nó đến người bảo trì cask hoặc nhà cung cấp kèm số phiên bản.

Cask Cookbook nói rõ rằng trình cài đặt gói cần kỹ thuật gỡ đặc thù cho từng sản phẩm và zap là tùy chọn và có thể xóa tài nguyên chia sẻ. Khuôn khổ đó là quy tắc quyết định: gỡ thông thường trước, zap khi bạn chấp nhận cái giá của thông tin đăng nhập, xóa thủ công thì không bao giờ.

Bài viết liên quan