Vấn đề
Có khả năng bạn đang cố gắng chạy một công cụ lập trình tiêu chuẩn như git, npm, hoặc gcc thì bỗng nhiên terminal chặn bạn bằng thông báo lỗi này:
Agreeing to the Xcode/iOS license requires admin privileges, please re-run as root via sudo.
Thông thường, lỗi này xảy ra sau khi cập nhật hệ thống macOS hoặc khi Xcode được cập nhật qua App Store. Apple yêu cầu bạn phải chấp nhận lại các Điều khoản và Điều kiện trước khi bất kỳ tệp thực thi (binaries) dành cho nhà phát triển nào có thể chạy. Ngay cả khi bạn không bao giờ chạm vào Xcode IDE và chỉ sử dụng Command Line Tools (CLT), hệ thống vẫn khóa các công cụ này cho đến khi cờ bản quyền được cập nhật trong một thư mục được bảo vệ.
Sửa lỗi nhanh: Lệnh một dòng
Chạy lệnh này là cách nhanh nhất để quay lại làm việc. Nó giúp bỏ qua vài phút cuộn văn bản pháp lý thủ công:
sudo xcodebuild -license accept
Nhập mật khẩu máy Mac khi được hỏi. Lưu ý rằng terminal sẽ không hiển thị bất kỳ ký tự hay dấu sao nào khi bạn nhập—đây là hành vi bảo mật bình thường. Chỉ cần nhập "mù" và nhấn Enter. Lệnh này sẽ ngay lập tức đánh dấu bản quyền đã được chấp nhận cho mọi người dùng trên hệ thống.
Tại sao lỗi này xảy ra
Về cơ bản, macOS sử dụng xcodebuild để quản lý các thành phần lập trình dùng chung. Mỗi khi Apple nâng cấp số phiên bản (ví dụ: từ Xcode 15.3 lên 15.4), họ sẽ đặt lại khóa LicenseAccepted. Quyền hệ thống là trở ngại chính ở đây. Vì trạng thái bản quyền được lưu trữ trong /Library/Preferences/, tài khoản người dùng tiêu chuẩn không thể ghi đè cập nhật. Đó là lý do tại sao lỗi yêu cầu rõ ràng quyền sudo.
Các cách khắc phục
Cách 1: Chế độ tương tác
Nếu cờ 'accept' thất bại hoặc nếu bạn thực sự muốn đọc những gì đã thay đổi trong thỏa thuận, hãy sử dụng chế độ tương tác:
sudo xcodebuild -license
- Nhấn Space để cuộn qua các trang tài liệu.
- Ở cuối cùng, gõ
agreevà nhấn Enter.
Cách 2: Sửa lỗi nhầm lẫn đường dẫn
Đôi khi hệ thống của bạn bị mất dấu vị trí của các công cụ lập trình. Điều này thường xảy ra nếu bạn cài đặt cả ứng dụng Xcode nặng hơn 12GB và bộ Command Line Tools độc lập nhỏ hơn. Nếu các lệnh trên trả về lỗi "requires Xcode", hãy đặt lại đường dẫn của bạn:
sudo xcode-select --reset
Hoặc, nếu bạn muốn trỏ chính xác vào ứng dụng Xcode đầy đủ trong thư mục Applications, hãy sử dụng lệnh này:
sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
Cách 3: Phương án dự phòng cho máy Mac được quản lý (Managed Macs)
Các máy tính xách tay công ty được quản lý với cấu hình MDM nghiêm ngặt đôi khi chặn sudo ghi vào tệp hệ thống. Nếu terminal vẫn không hoạt động, hãy thử mở chính ứng dụng Xcode từ thư mục Applications. Thông thường, một thông báo giao diện đồ họa sẽ xuất hiện yêu cầu "Install additional required components." Hoàn thành thông báo này thường sẽ xóa bỏ việc chặn bản quyền khi các lệnh CLI thất bại.
Xác minh: Kiểm tra kết quả
Kiểm tra xem các công cụ của bạn đã được bỏ chặn chưa bằng cách chạy lệnh kiểm tra phiên bản đơn giản mà không cần sudo:
git --version
xcode-select -p
Nếu bạn thấy một chuỗi phiên bản hợp lệ (như git version 2.45.2) thay vì lỗi bản quyền, bạn đã sẵn sàng để lập trình trở lại.
Tài liệu tham khảo thêm
- Chạy
man xcodebuildđể xem tất cả các cờ build và bản quyền có sẵn. - Xem lại Technical Note TN2339 của Apple liên quan đến Command Line Tools.
- Nếu bạn sử dụng Homebrew, bạn nên chạy
brew doctorsau mỗi lần cập nhật bản quyền lớn để tránh sai lệch môi trường.

