Homebrew yüklendikten sonra OS X Lion'daki izin hataları nasıl giderilir


9

Snow Leopard'dan Lion'a geçtim ve Homebrew'u kurmaya çalışıyorum. Ancak yüklemeden sonra, yükleme brew doctoryönergelerine göre çalışıyorum ve / usr / local dizinlerinin yazılabilir olmadığını belirten bir dizi hata görüyorum. Örneğin:

Error: /usr/local/share isn't writable.
This can happen if you "sudo make install" software that isn't managed
by Homebrew.

If a brew tries to write a file to this directory, the install will
fail during the link step.

You should probably `chown` /usr/local/share

Bunları bir sürü dizin için alıyorum:

You should probably `chown` /usr/local/include

You should probably `chown` /usr/local/share

You should probably `chown` /usr/local/share/man

Bu dizinlere yazma izinleri olan Unix grubunun bir parçası olduğum için bu hatanın neden ortaya çıktığını anlayamıyorum:

Mini:~ felciano$ ls -ld /usr/local/share
drwxrwxr-x  4 root  admin  136 May 13 15:53 /usr/local/share
Mini:~ felciano$ whoami
felciano
Mini:~ felciano$ dscl . -read /Groups/admin GroupMembership
GroupMembership: root felciano
Mini:~ felciano$

Neyi kaçırıyorum?


Bu dizinleri neden önerildiği gibi kullanıcı adınıza "seçmiyorsunuz?" Zaten "köke" ait olmamalıdırlar. Birden fazla kullanıcı için grup izinlerini de değiştirebilirsiniz: apple.stackexchange.com/q/42127/14994
iolsmit

@iolsmit: Aynı problemim var. Ancak, bu makinede birden fazla yönetici kullanıcı olduğunda neden bana/usr/local ait olması gerektiğini anlamıyorum . Ayrıca şikayet ettiğim yerlere yazmam da mümkün . Başka fikir var mı? brew doctor
mgd

Yanıtlar:


7

EDIT: Sorun şimdi Homebrew düzeltildi:

Hala sorun yaşıyorsanız, Homebrew'u şu şekilde güncelleyin:

brew update

Sorunun ne olduğunu bilmek istiyorsanız, orijinal cevabımı aşağıda sakladım.


Şimdilik izin sorununu yoksay

Aynı sorunu yaşıyorum ve bence sorun brew doctorsizin ve kurulumumdan ziyade.

Bence sahipliğini değiştirmek yerine sorunu görmezden gelmelisiniz /usr/local. Alternatif olarak, brew doctorbir düzeltme yayımlanana kadar yerel komut dosyanızı düzeltebilirsiniz. Aşağıya bakınız.

/usr/localBelirli bir kullanıcının sahipliğini doğru görmüyorum . Bu makinede birden fazla yönetici kullanıcı var. Sahip ve grup olarak /usr/localsahipliğinizi terk etmelisiniz root:admin.

Araştırmam

Sizin için olduğu gibi ben de grubun /usr/localbir üyesi olan benim kullanıcı tarafından mükemmel yazılabilir bir var admin:

$ ls -ld /usr/local/
drwxrwxr-x  14 root  admin  476 22 Jun 23:33 /usr/local/
$ whoami
mgd
$ dscl . -read /Groups/admin GroupMembership
GroupMembership: root mgd rgd

Dir'in gerçekten yazılabilir olduğunu test edelim :

$ ls -l /usr/local/newfile
ls: /usr/local/newfile: No such file or directory
$ touch /usr/local/newfile
$ ls -l /usr/local/newfile
-rw-r--r--  1 mgd  admin  0 23 Jun 14:52 /usr/local/newfile

brew doctorKod üzerinde daha fazla araştırma yapılması, yakut fonksiyonunun Pathname.writable?kullanımının soruna neden olduğu sonucuna varmamı sağladı . Bu etkileşimli Ruby oturumunu düşünün:

$ irb
>> require 'pathname'
=> true
>> Pathname('/usr/local').writable?
=> false

İşlev Pathname.writable?, /usr/localbildiğimiz halde yazılabilir olmadığını söylüyor .

Pathname.writable_real?Bunun yerine kullanmak doğru sonucu verir - dir yazılabilir:

>> Pathname('/usr/local').writable_real?
=> true

Bu düzeltilmelidir /usr/local/Library/Homebrew/cmd/doctor.rb. Bir düzeltme beklerken kendi kurulumunuzda düzeltebilirsiniz.

İki işlev arasındaki fark ( buradaki ve buradaki Ruby belgelerine göre ):

writable? (dosya_adı) → true veya false: Belirtilen dosya bu işlemin etkin kullanıcı kimliği tarafından yazılabilirse true değerini döndürür.

writable_real? (dosya_adı) → true veya false: Belirtilen dosya bu işlemin gerçek kullanıcı kimliği tarafından yazılabilirse true değerini döndürür.


MGD'nin soruşturması ve netleştirilmesi için beğenmedim ... Görünüşe göre benzer bir sorun github.com'da yaklaşık bir yıl önce ortaya çıktı, ama hiç (düzgün?) Çözülmedi, en azından kullanarak değil writable_real?... belki bir çekme isteği zamanı geldi?!? :-)
pvandenberk


0

Sadece buna ihtiyacın olduğuna inanıyorum:

brew update

Sonra brew doctortekrar deneyin .

Hala kullanmadığınız bağımlılıklarla ilgili hatalar alabilirsiniz (benim durumumda Java). Xcode'un tam yüklemesi yerine Xcode için Komut Satırı Araçları yüklüyse, geçersiz bir yolunuz olduğunu belirten bir hata iletisi alırsınız, ancak iletinin sağında geçerli bir yol olmadığını da okuyacaksınız. sadece Xcode için Komut Satırı Araçlarını kullanarak, bu da iyi.

Başkalarının yararına: Bunu yapabilmek için yönetici olarak oturum açmanız gerektiğini unutmayın.


0

İolsmit ve Phil M'in önerilerinin bir kombinasyonunu izledim: Bu dizinleri kullanıcı adımı seçtim, sonra brew updatetekrar koştum brew doctor. Bu, tüm hata mesajlarından kurtuldu ve demlemek kurulumları güzel çalışıyor. İkinize de teşekkürler!


0

@ Mgd'nin soruşturması ve açıklaması için beğenmedim ...

Görünüşe göre benzer bir sorun github.com'da yaklaşık bir yıl önce ortaya çıktı, ama hiç (düzgün?) Çözülmedi, en azından kullanarak değil writable_real?... belki bir çekme isteği zamanı geldi?!? :-)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.