Homebrew'u root olarak nasıl çalıştırırım?


11

Yıllar önce, brewsadece kök için chown brewyaparak kök olarak koşarak kaçabilirdiniz , ancak bu özelliği kaldırdılar. Homebrew 1.1.6'da, /usr/local/Homebrew/Library/Homebrew/brew.shkök denetimini ("son derece tehlikeli" olduğunu söyleyen) kaldırmak için düzenlerdim , böylece brewkök olarak çalışabilirdim .

Homebrew'un daha yeni sürümü hala bununla çalışıyor, ancak brew.shçalıştırdığımda brewbile, her seferinde dosyayı geri almaya devam ediyor chmod 500. Değiştirmek için bir komut dosyası yazabilir ve sonra brewotomatik olarak çalışabilirim , ancak bunun her zaman işe yarayacağından ve şans almak istemediğinden emin değilim. Herkes Homebrew'u root olarak çalıştırmak için farklı bir yöntem buldu mu?


3
Meraktan, neden brewkök olarak çalıştırmak istiyorsun ? Ayrıca, sudoamaçlarınız için yeterli değil mi?
Allan

2
@Allan sudobunu root olarak çalıştırıyor ve bana aynı "son derece tehlikeli" hatayı veriyor. Kök olarak çalıştırmak istiyorum çünkü aksi takdirde özellikle bir şey Homebrew (örneğin aracılığıyla pip) yüklenmemişse, belirli paketleri yükleme sorunları var . Birçok kez o rotadan indim. Ayrıca, her şeyi kök olarak yüklemediğim sürece, garip geçici çözümleri olmayan birden fazla kullanıcı için düzgün çalışmıyor.
sudo

$ su -> $ demlemek ne olursa olsun?
StrawHara

1
rootRiskli bir yazılım paketi oluşturmak . Paket yöneticisi olmadan bir paket oluştursanız bile, paketi ayrıcalıksız bir kullanıcı olarak (kendiniz) oluşturabilir ve ardından paketi olduğu gibi rootkurabilirsiniz sudo. Fink ve MacPorts gibi paket yöneticilerinin her ikisi de kendi ayrıcalıksız kullanıcılarıyla derlenir ve sonra yüklenir root. Homebrew'un böyle bir mekanizması yoktur.
fd0

1
Hmm, sonunda brew.shdeğiştirdikten ve bir brewkomut çalıştırdıktan sonra dosyanın geri döndürüldüğü sorunu görmüyorum . Böylece koşabilir sudo brew whateverve brew whatevertandemde gayet iyi. Benim brew --versionçıktı böylece: Homebrew 1.2.1-98-g803f9cbf7b-dirty Homebrew/homebrew-core (git revision d3d6; last commit 2017-05-28) FYI, ben fonksiyonumdaki brew.shtüm satırları yorumlamak için benim dosya değiştirildi check-run-command-as-rootve returnyerine fonksiyonun üstüne tek bir ifade yerleştirdi .
GSYİH2

Yanıtlar:


2

Komut dosyasında değişiklik yaptıktan sonra, brew.sh üzerinde değişmez bayrağı ayarlamayı deneyin.

chflags uchg /usr/local/Homebrew/Library/Homebrew/brew.sh

Test etmedim. Genel bir kural olarak, geliştiricileri bana değil yalvarıyor uygulamalara kök vermiyorum.


Jason'a da katılıyorum. Demlemek için kök dememek için bir neden var. Çoğunlukla devs oldukları için ve yazılımlarıyla onlara güveneceğim. Ayrıca, son kontrol ettiğim macports'tan farklı olarak, demlemek gereken şey, demlemek gerek yok ya da kök izinleri istemiyorsanız, eğer bir şeyleri vidalarsanız büyük olasılıkla tüm sisteminizi bork etmeyeceksiniz. Her şey kullanıcı hesabınızda bulunur ve sudo ile uğraşmanıza gerek yoktur.
user9950573

1
Onaylanmış çalışma, teşekkürler. İlk kez güncelleme girişiminde bulunmak biraz zaman alıyor, ancak daha sonra sudo brew installnormal şekilde çalışıyor.
sudo

1
Mac'e yükleyeceğim paketlerle sistemi karıştırmak ve kullanılamaz hale getirmek için fazla bir şey yok. Her neyse, 30 dakika içinde sistemimi geri yükleyebilirim. Kullanıcımı temizlemek çok daha zor ve yukarıdaki yorumlarda açıkladığım gibi, sistem çapında kurulmadıkça düz bir şekilde pek çok şey çalışmıyor.
sudo

1

Tipik kullanıcılar bunu yapmamalı, ama siz tipik değil misiniz?

İki konu:

  1. Kökü durduramazsın. Kök kullanmakta ısrar ederseniz, brew.shne olursa olsun kök üzerine yazabilir .

  2. brewSonuçta duramazsın , koşmaktan bahsediyorsun brew.

Yani bununla çalışacağız. Kopyalamak için bir takma ad ayarlayalım ve brew.shçalıştırın brew.

alias brew='cp /<modified>/brew.sh /<actuall>/brew.sh; /usr/local/bin/brew'

(Yolları sisteminize uyacak şekilde düzeltin).

Şimdi tek yapmanız gereken:

sudo brew <arguments>

(Kök haline gelecek, kopyalanacak brew.sh, sonra brewargümanlarla kök olarak çalışacak , daha sonra brewüzerine yazacak brew.shve her şeyi tekrar yapmaya hazır olacaksınız)

Not: Diğer sudoadı da girebilirsiniz, ancak bu şekilde daha iyi hissedersiniz, çünkü her seferinde bir parola istenir.

Genellikle güvenlik için kabuk komut dosyalarını köklendirmek için setuid( chmod u+s) yöntemini kullanamazsınız . Perl, suidperlkurulabilen ve kullanıcı ayrıcalığını artırabilecek ayrı bir programa sahiptir, ancak bu tür çözümler hızlı bir cevap için biraz derindir.

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.