ฉันสามารถติดตั้ง Homebrew โดยไม่มีสิทธิ์ sudo ได้หรือไม่


26

Homebrew ช่วยให้การติดตั้งแพคเกจโดยไม่มีสิทธิ์ sudo แต่ดูเหมือนว่าฉันต้องการสิทธิ์ผู้ดูแลระบบเพื่อติดตั้ง Homebrew เอง

ฉันต้องการติดตั้ง Homebrew ในสภาพแวดล้อม Mac ที่ฉันไม่มีสิทธิ์ sudo หรือผู้ดูแลระบบ เป็นไปได้ไหม

คำตอบ:


12

ไม่ .. เว้นแต่คุณจะทำศัลยกรรมที่สำคัญ

เหตุผลก็คือว่า Homebrew /usr/localขอยืนยันในแพคเกจติดตั้งลงใน ในความเป็นจริงแม้ว่าคุณจะบังคับให้ติดตั้งที่อื่นคุณก็มีแนวโน้มที่จะทำลายการพึ่งพาเมื่อคุณใช้brew installในการติดตั้งแพ็คเกจ ส่วนใหญ่ถ้าไม่ทั้งหมดของแพคเกจเหล่านี้จะถูก /usr/localpre-รวบรวมและเชื่อมโยงในการคาดหวังว่าจะมีชีวิตอยู่

เหตุผลของการยืนยันนี้ก็คือเหตุผล/usr/localที่ POSIX แนะนำสิ่งที่ได้รับการติดตั้ง ในการสร้าง/usr/localHomebrew จำเป็นต้องมีข้อมูลประจำตัวของผู้ดูแลระบบชั่วคราวเพื่อสร้างไดเรกทอรีและกำหนดความเป็นเจ้าของ

ในทางกลับกันนี่คือสิ่งที่ช่วยให้คุณสามารถติดตั้งสิ่งอื่นได้โดยไม่ต้องยกระดับข้อมูลรับรอง


ขอบคุณ แต่ฉันคิดว่าคุณพลาดคำถามของฉัน ฉันรู้ว่าติดตั้งแพคเกจอย่างไรและที่ไหน แต่ฉันต้องการติดตั้งHomebrewโดยไม่มีผู้ดูแลระบบหรือ sudo
BenjaminGolder

ฉันไม่คิดถึงคำถามของคุณ คำตอบคือ "ไม่" .. ฉันเพิ่งพูดว่า "ใช่" โดยไม่ตั้งใจ คุณไม่สามารถทำสิ่งที่คุณขอได้อย่างง่ายดายและแม้ว่าคุณจะบังคับให้แก้ไขตัวติดตั้ง Homebrew เพื่อวางสิ่งต่าง ๆ ลงในสารบบสาขาจากโฮมไดเร็กตอรี่ของคุณ
David Hoelzer

โอเคขอบคุณ. ฉันสับสนโดย "ใช่" ก่อนหน้า
BenjaminGolder

3
นี่เป็นสิ่งที่ผิดหรืออย่างน้อยคุณนิยามของ "การผ่าตัดที่สำคัญ" นั้นแตกต่างจากของฉันมาก ฉันใช้งานbrewโดยมีคำนำหน้าตั้งค่าไว้ที่ไดเรกทอรีบ้านของฉันเป็นเวลา 5 ปีและฉันพบแพ็คเกจที่เสียหาย 1 หรือ 2 ครั้งในเวลานั้น
James McMahon

อย่างไรก็ตามยังมีสิ่งนี้ซึ่งเป็นเรื่องยากที่จะหลีกเลี่ยง: ข้อผิดพลาด: คุณยังไม่ได้ตกลงใบอนุญาต Xcode โปรดแก้ไขปัญหานี้ด้วยการเรียกใช้: sudo xcodebuild -license accept
Albert

17

ใช่.

ฉันแก้ไขสคริปต์การติดตั้งเพื่อไม่ให้ใช้sudoและใช้ไดเรกทอรีที่คุณเลือก https://gist.github.com/skyl/36563a5be809e54dc139

ดาวน์โหลดนั้นตั้งค่าYOUR_HOMEในสคริปต์ไปยังเส้นทางที่แน่นอน chmod +xบท. สร้างYOUR_HOME/usr/localไดเรกทอรี จากนั้นดำเนินการสคริปต์

./install.rb

ใน.bash_profileฉันตั้งค่า (ฉันไม่แน่ใจว่าสิ่งนี้เป็นสิ่งสำคัญและค่อนข้างแน่ใจ):

export HOMEBREW_PREFIX=/The/path/to/YOUR_HOME/usr/local

ตอนนี้ฉันสามารถ:

brew install wget

ตรวจสอบให้แน่ใจbinไดเรกทอรีYOUR_HOME+ เป็นตัวคุณ/usr/local/bin$PATH

which wget

1
ในสคริปต์การติดตั้งฉันต้องเพิ่ม#{YOUR_HOME}คำนำหน้าให้กับHOMEBREW_CACHEตัวแปรเช่นกัน นั้นและเพราะผู้ดูแลระบบแล้วได้ homebrew ติดตั้งผมต้องเพิ่มexport PATH=/path/to/home/usr/local/bin:$PATHไป.bash_profileเช่นกัน แต่ดูเหมือนว่ามันจะใช้งานได้ดี
golmschenk

3
เพิ่งผ่านกระบวนการอีกครั้งและฉันแค่อยากจะพูดถึงว่าคุณต้องสร้างusrไดเรกทอรีในโฮมไดเร็กตอรี่ของคุณก่อนที่สคริปต์จะทำงาน นอกจากนี้เมื่อคุณเพิ่ม#{YOUR_HOME}ไปยังHOMEBREW_CACHEตัวแปรดูเหมือนว่าคุณจะต้องเปลี่ยนคำพูดเดียวที่ราคาคู่ให้มันทำงาน ดังนั้นจึงมีไม่กี่ขั้นตอน แต่ก็คุ้มค่าที่จะรับพลังของ Homebrew
golmschenk

@olmschenk อัญประกาศเป็นสิ่งจำเป็นสำหรับการจัดรูปแบบสตริงของ ruby ​​ที่จะเตะฉันเชื่อว่า
Skylar Saveland

1
นั่นเป็นการปรับที่ดี คุณควรส่งคำขอดึงไปยังโครงการผลิตเบียร์ที่บ้าน
David Hoelzer

1
ฉันลองสิ่งนี้จากบัญชีที่ไม่ใช่ผู้ดูแลระบบบน macOS Sierra (10.12.3) และมันไม่ทำงานเพราะมันจำเป็นต้องทำchgrp admin /usr/localและบัญชีที่ไม่ใช่ผู้ดูแลระบบไม่ใช่สมาชิกของกลุ่มผู้ดูแลระบบดังนั้นจึงสามารถ ' ไม่เปลี่ยนอะไรเป็นกลุ่มนั้น มันจะดีมากถ้าสิ่งนี้สามารถใช้กับบัญชีที่ไม่ใช่ผู้ดูแลระบบปกติได้ (ไม่ใช่สำหรับบัญชีผู้ดูแลระบบที่มีเหตุผลแปลก ๆ บางอย่างที่ถูกปิดกั้นจาก sudo)
Spiff

0

ใช่.

ระบบการชงปรากฏ bootstrappable

#!/bin/bash
set -ex

export HOMEBREW_PREFIX=~/homebrew
# export HOMEBREW_NO_ANALYTICS=1
mkdir -p "${HOMEBREW_PREFIX}"
curl -fsSLk https://github.com/Homebrew/brew/tarball/master | tar xz --strip 1 -C "${HOMEBREW_PREFIX}"

ls -laR "${HOMEBREW_PREFIX}"

export PATH="${HOMEBREW_PREFIX}/bin:${PATH}"
type -a brew

type -a openssl || :
openssl version -a || :

type -a curl || :
curl -V || :

# Fails to lock a .git/config file.
##brew analytics off

# No "brew update" until installing the proper openssl and a curl that uses it.
# brew update

# brew remove openssl || :
brew install openssl
brew link --force openssl

# brew remove curl || :
brew install --with-openssl curl
brew link --force curl || :
curl -V

ls -la "${HOMEBREW_PREFIX}/opt"
ls -la "${HOMEBREW_PREFIX}/bin"
ls -laLR "${HOMEBREW_PREFIX}/opt/curl/"

0

การติดตั้งhomebrew โดยไม่ต้อง sudo

git clone https://github.com/mxcl/homebrew.git
echo 'export PATH="/path/to/cloned_folder/homebrew/bin:$PATH"' >> ~/.bash_profile

รีสตาร์ท terminalและเรียกใช้

brew --version

0

Brew ย้าย repo คอมไพล์ของพวกเขาซึ่งเป็นสาเหตุที่ด้านบนไม่ทำงานอีกต่อไป

git clone git@github.com:Homebrew/brew.git
echo 'export PATH="/path/to/cloned_folder/homebrew/bin:$PATH"' >> ~/.bash_profile

1
คุณหมายถึงคำตอบของ Astik Anandโดย 'ข้างต้น' หรือไม่ คำตอบของคุณจะไม่ 'เหนือ' เสมอไป หากควรเปลี่ยนบางสิ่งในคำตอบให้แก้ไขด้วยตนเอง
nekomatic
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.