2012-06-22 24 views
11

Khi cài đặt gói qua sudo pip-python (gói CentOS 6: python-pip-0.8-1.el6.noarch), đôi khi tôi gặp sự cố về quyền với các gói đã cài đặt chỉ có thể đọc được bằng gốc.pip: các vấn đề về quyền không nhất quán

Cài đặt lại một hoặc hai lần thường khắc phục sự cố. Có ai có kinh nghiệm này không? Hoặc bất cứ ai có thể đề xuất bất kỳ bước khắc phục sự cố nào để khắc phục nguyên nhân?

Trả lời

10

Khi bạn chạy lệnh sử dụng sudo, lệnh này sẽ giữ người dùng umask. pip chỉ cần cài đặt tệp, nó không thay đổi quyền truy cập, vì vậy bạn sẽ kết thúc với tệp có quyền truy cập phù hợp với umask của người dùng hiện tại, có thể chỉ đọc được chủ sở hữu (0077) và do đó chỉ có thể đọc được bằng root .

Điều đó có nghĩa là bạn có thể đặt umask thành thứ gì đó hợp lý như umask 0022 trước khi chạy sudo pip install. Hoặc sử dụng sudo su để mở vỏ gốc có cài đặt mặc định và sau đó pip install.

+0

Ban đầu, khi một nhân viên của chúng tôi báo cáo điều này, tôi cũng nghĩ như vậy. Tuy nhiên, nó đã xảy ra với tôi một vài lần mà nó đặt quyền hạn chế đầu tiên nhưng sau đó, khi tôi chạy nó một lần nữa mà không thay đổi bất cứ điều gì, nó hoạt động tốt. –

+0

Hm, điều đó thực sự có vẻ kỳ lạ, đặc biệt là phần 'không thay đổi bất cứ điều gì'. Tôi đã chỉ nhìn thấy vấn đề này khi chạy pip thông qua sudo, bây giờ tôi luôn luôn chạy pip từ vỏ gốc với một umask thích hợp, một nó đã không xảy ra với tôi kể từ đó. Không biết những gì đang xảy ra ở đây ... – mata

+0

Bạn cũng có thể chạy sudo bash, sau đó umask 0022, sau đó cài đặt pip – mabraham

0

Nếu thực hiện pip với sudo, bạn có thể muốn cờ -H sudo của

-H, --set-nhà thiết CHỦ biến để nhắm mục tiêu của người sử dụng nhà dir

ví dụ

sudo -H pip install virtualenv

Các vấn đề liên quan