Homebrew izinleri ve güncelleme yapmak isteyen birden fazla kullanıcı


79

Paket kurulumlarını Lion'da yönetmek için Homebrew kullanıyorum (Lion Server aslında ama bunun önemi yok) .

Homebrew bir kullanıcı altında kuruldu. Şimdi farklı bir kullanıcı bir paket eklemek istiyor ve Homebrew memnun değil:

$ brew update
fatal: Unable to create '/usr/local/.git/index.lock': Permission denied
Error: Failure while executing: git checkout -q master

Bu kötü mü? /usr/local/Kurulumlarınız için kullanmanın avantajlarından birinin ihtiyacınız olmadığını düşündüm sudo. Ama açıkça yapıyoruz.

Homebrew'i değiştirmesi gereken tüm kullanıcılar yönetici grubunun üyeleridir . Böylece, bunun bir chmod -R g+w /usr/local/şeylere neden olacağı veya güvenlik sorunları yaratacağından korktum.

Tavsiye?

$ ls -al /usr/local/.git/
total 432
drwxr-xr-x  14 ladmin  admin     476 Feb 24 11:48 .
drwxrwxr-x  14 root    admin     476 Feb  9 15:27 ..
-rw-r--r--   1 ladmin  admin      94 Feb 24 11:48 FETCH_HEAD
-rw-r--r--   1 ladmin  admin      23 Feb 24 11:48 HEAD
-rw-r--r--   1 ladmin  admin      41 Feb  9 15:28 ORIG_HEAD
drwxr-xr-x   2 ladmin  admin      68 Feb  9 15:27 branches
-rw-r--r--   1 ladmin  admin     218 Feb  9 15:27 config
-rw-r--r--   1 ladmin  admin      73 Feb  9 15:27 description
drwxr-xr-x  12 ladmin  admin     408 Feb  9 15:27 hooks
-rw-r--r--   1 ladmin  admin  200272 Feb 24 11:48 index
drwxr-xr-x   3 ladmin  admin     102 Feb  9 15:27 info
drwxr-xr-x   4 ladmin  admin     136 Feb  9 15:27 logs
drwxr-xr-x   4 ladmin  admin     136 Feb  9 15:27 objects
drwxr-xr-x   5 ladmin  admin     170 Feb  9 15:27 refs

Yanıtlar:


100

Bu kötü mü? Kurulumlarınız için / usr / local / kullanmanın avantajlarından birinin sudo'ya ihtiyacınız olmadığını düşündüm. Ama açıkça yapıyoruz.

Homebrew, varsayılan olarak, tek kullanıcılı erişim için kendini ayarlar /usr/local. Bu nedenle, dizin ağacındaki izinleri birden fazla kişi tarafından yönetilmesi için açmanız gerekir.

İnsanların homebrew yönetmek için burada sudo çalıştırmak zorunda değilsiniz. Sadece bazı izinleri değiştirmeniz gerekiyor. Zaten sahip olduğunuzdan beri:

Homebrew'i değiştirmesi gereken tüm kullanıcılar yönetici grubunun üyeleridir.

İki şey daha yapman gerekiyor:

  1. Altındaki her şeyin /usr/localgruba ait olduğundan emin olun admin; ve
  2. Gruptan birinin adminherhangi birşeye yazabildiğinden emin olun /usr/local.

Bu durumda yapılacak değişiklikler:

chgrp -R admin /usr/local
chmod -R g+w /usr/local
chgrp -R admin /Library/Caches/Homebrew
chmod -R g+w /Library/Caches/Homebrew

Ve admingruptaki herhangi bir kullanıcı , makinedeki homebrew kurulumunu yönetebilmelidir. Yönetici grubuna bir kullanıcı eklemeniz gerekirse, bu şekilde yapılabilir:

 dseditgroup -o edit -a <username> -t user admin

(bu kullanıcının yetkileri almak için tekrar giriş yapması gerekir).

Makinede akıl sağlığı için, kendi Homebrew çatalınızı yaratmayı düşünebilirsiniz ve yerel homebrew'nün depoya gitmesini isteyin . Bu, Homebrew'i ortamınız için özelleştirmenize ve insanların brewkomutla yükleyebilecekleri paket sürümlerini kontrol etmenize olanak sağlar . Yükleme yapan birden fazla kişiyle sürüm sorunlarına veya bağımlılık sorunlarına rastlayabilirsiniz.


1
Aynı sorunu yaşıyorum ve önerildiği gibi grup sahipliğini ve grup izinlerini değiştirdim. brew doctorYine de, örneğin /usr/local/includeburada bir dosyaya yazabildiğimi doğrulayabilsem de (örn. kullanarak echo "hello" > /usr/local/include/testfile) yazılabilir olmadığından şikayetçi . Yönetici grubunun üyesiyim. Hata ayıklama için herhangi bir fikir?
mgd

2
Bu çözüm benim için çalıştı, ancak Homebrew'in yerel önbelleğini ele almıyor. Ayrıca kaçmayı öneriyorum:chmod -R g+w /Library/Caches/Homebrew
Drew Dara-Abrams


2
Görünüşe göre, Homebrew önbelleği geçerli kullanıcının dizinine geçirmiştir. Sadece gördüm: ==> Demlemek güncelleme yaparken /Users/bluechain.admin/Library/Caches/Homebrew ... / Library / Caches / Homebrew'e geçiş. Bunu doğru yorumluyorsam, bu artık Homebrew için küresel olarak yazılabilir bir önbellek dizinine sahip olmaktan endişelenmemize gerek olmadığı anlamına geliyor.
17'de Endareth

Bu sorunu sudo chown -R $(whoami) $(brew --prefix)/*yaşayan Yüksek Sierra kullanıcıları için şimdi bunu kullanmanız gerekir: yukarıdaki komutların yerine. Buradan
Jeff Kranenburg

7

Yönetici grubu veya herhangi bir başka kullanıcı grubu aracılığıyla birden fazla kullanıcı için ana sayfa izinlerini etkinleştirebilirsiniz. Bunu yapılandırmak için biraz genişletilmiş bir tarif:

Grubun yerel homebrew kurulum dizinini yönetmesi gerekiyor. Yani atamak / usr / local için yönetici grubuna (veya tercih grubunun) ve grup yazma izinlerini etkinleştirin:

chgrp -R admin /usr/local
chmod -R g+w /usr/local

Grubun ayrıca homebrew'un yerel formülü önbelleği ve / Library / Caches / Homebrew'deki kaynak dosyalarına izin vermesi gerekiyor :

chgrp -R admin /Library/Caches/Homebrew
chmod -R g+w /Library/Caches/Homebrew

Birden fazla hesaptan gelen homebrew kullanırken benzer izinlerle ilgili daha fazla sorun yaşarsanız, rahatsız edici yolu not alın ve aynı yaklaşımı denemeyi düşünün.

Leif Hanack bir blog sitesinde benzer bir çözüm diye oluşturur ve özel bir kullanıcı grubu yapılandırır, demlemek amacıyla.

- Güncelleme 2015-08-20

Kısa süre önce bu cevabı, homebrew erişimine sahip bir konuk hesabı oluşturmak için tekrar kullandım. Cask'ı ikinci yönetici hesabından kullanmak için aşağıdaki komutları da çalıştırmam gerekti:

chgrp -R admin /opt/homebrew-cask
chmod -R g+w /opt/homebrew-cask

4

Sadece kabul edilen cevap hakkında yorum yapacaktım (ancak bunun için itibarı yok.)

Caskroom.io kullanıcısı olarak şunu da eklemenizi tavsiye ederim:

sudo chown -R admin /opt/homebrew-cask
sudo chmod -R g+w /opt/homebrew-cask
sudo chmod -R g+w  /Library/Caches/Homebrew/

homebrew için son derece yararlı bir uzantısı olan fıçı, tüm dosyaları koyar /opt/homebrew-cask


1
By /optdemek sanırım /usr/local? /optSon OS X kurulumlarında olmadığı gibi , bir homebrew kurulumundan sonra bile.
kare

2016 yılının haziran ayında, Homebrew-Cask (demleme eklentisi), Caskroom klasörü için varsayılan konumu şuraya taşıdı /usr/local(ya da daha doğru $(brew --prefix)) /opt/homebrew-cask. Bkz. Varsayılan fıçı odasının yerini taşıma # 21603
zen

1

Yola izin vermelisin. Bunu komut satırında çalıştırın ve gitmeniz iyi olur. Benim için çalıştı:

sudo chown -R $ USER / usr / yerel


0

Grubun iznini belirlemek için oy kullanırdım - ve bana öyle geliyor ki, bunun için orada ve güvenlik sorunu yaratmamalı.

  • Sudo kullanmayın.

tl; dr Sudo tehlikelidir ve TextMate.app'yi yine de sudo olmadan yüklediniz.

Homebrew sudo kullanmadan çalışmak üzere tasarlanmıştır. Kullanmaya karar verebilirsiniz, ancak kullanmamanızı şiddetle tavsiye ederiz. Eğer sudo kullandıysanız ve bir hata ile karşılaştıysanız, bunun nedeni bu olabilir. Homebrew'u sudo kullanmadan sıfırdan yeniden yükledikten sonra çoğaltamazsanız, lütfen bir hata raporu vermeyin.


Demek tavsiyen sudo chmod -R g+w /usr/local/?
Meltemi

Evet, ancak bunlardan birini kullanarak ikinci bir görüş isteyebilirsiniz: IRC (irc: //irc.freenode.net/#machomebrew); Posta Listesi (homebrew@librelist.com); Twitter ( twitter.com/machomebrew )
iolsmit
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.