วิธีการติดตั้งโปรแกรมในเครื่องโดยไม่มีสิทธิ์ sudo


73

สมมติว่าฉันมีสิทธิ์เข้าถึงเซิร์ฟเวอร์ Ubuntu บางตัวในฐานะผู้ใช้และฉันต้องการเครื่องมือบางอย่างที่ไม่ได้ติดตั้งเพื่อความสะดวก (mc, rtorrent, mcedit) ฉันไม่ต้องการรบกวนผู้ดูแลระบบสำหรับโปรแกรมขนาดเล็กเหล่านี้

มีวิธีในการติดตั้ง (ทำให้ทำงาน) โดยไม่ใช้อะไรเช่นนี้sudo apt-get installหรือไม่?



โปรดดูที่ควรวางตำแหน่งเรียกทำงานโลคัลไว้ที่ใด สำหรับการสนทนาที่เกี่ยวข้อง
George M



คำตอบ:


33
  1. รวบรวมและติดตั้งลงใน~/bin(และแก้ไขของคุณ.bashrcเพื่อตั้งค่าPATHให้รวมไว้) ห้องสมุดสามารถในทำนองเดียวกันจะรวบรวมและติดตั้งลงใน~/lib(ชุดLD_LIBRARY_PATHที่จะชี้ไป) ~/includesและส่วนหัวของการพัฒนาสามารถติดตั้งลงเช่น

  2. ขึ้นอยู่กับรายละเอียดเฉพาะของโปรแกรมที่คุณต้องการติดตั้งและไลบรารี่ที่ขึ้นอยู่กับคุณสามารถดาวน์โหลดไฟล์. deb และใช้ ' dpkg-deb -x' เพื่อแตกไฟล์เหล่านั้นไว้ใต้โฮมไดเร็กตอรี่ของคุณ จากนั้นคุณจะมีจำนวนมากของ "สนุก" การตั้งค่าPATH, และอื่น ๆLD_LIBRARY_PATH variablesยิ่งโปรแกรมหรือแอพซับซ้อนมากขึ้นเท่าไหร่คุณก็ยิ่งติดตั้งได้มากขึ้นเท่านั้น :)

    แน่นอนว่าคุณจะไม่สามารถติดตั้งsetuidไบนารีได้ด้วยวิธีนี้พวกเขาจะติดตั้ง แต่ (เนื่องจากคุณไม่ได้รับอนุญาตให้เจาะรูตหรือตั้งค่าsetuidบิต) พวกเขาจะเป็นไบนารีปกติที่คุณเป็นเจ้าของ .

    ในทำนองเดียวกันภูตและบริการระบบที่คาดว่าจะได้ทำงานตามที่บางUIDหรือมีความสามารถในการเปลี่ยน uid หรือคาดหวังว่าไฟล์ที่จะอยู่ใน/etcที่ค่อนข้าง~/etcและอื่น ๆ ไม่น่าจะทำงานได้ดีถ้าทุก

  3. ผู้ดูแลระบบส่วนใหญ่จะพิจารณาmcและmceditเป็น "โปรแกรมที่ไม่มีพิษภัยส่วนใหญ่" และไม่มีพิษภัย

    อย่างไรก็ตามมีน้อยมากที่จะพิจารณาการติดตั้งไคลเอนต์ฝนตกหนักเพื่อไม่เป็นอันตรายโดยเฉพาะอย่างยิ่งหากพวกเขาต้องจ่ายค่าแบนด์วิดธ์หรือท้ายที่สุดต้องรับผิดทางกฎหมาย sysadmins ส่วนใหญ่คงไม่ยินดีที่ผู้ใช้ปลายทางจะติดตั้งซอฟต์แวร์ดังกล่าวโดยไม่ได้รับอนุญาต พวกเขาอาจพูดว่า "แน่นอนไปข้างหน้าเคาะตัวเอง" หรือพวกเขาอาจไม่ ... แต่คุณควรถามเกี่ยวกับสิ่งที่อาจทำให้เกิดปัญหากับเจ้าของ / ผู้ดูแลระบบของเครื่อง


ผมเคยได้ยินว่าการตั้งค่าLD_LIBRARY_PATHเป็นสับชั่วร้าย สิ่งนี้ใช้ได้ที่นี่เช่นกันหรือฉันเข้าใจผิด?
Will Vousden

1
ปัญหาทั้งหมดเกี่ยวกับการตั้งค่า LD_LIBRARY_PATH จะมีผล ใช่มันเป็นหรืออาจเป็นแฮ็คที่ชั่วร้าย บางครั้งการแฮ็กที่ชั่วร้ายจำเป็นต่อการบรรลุเป้าหมายที่เฉพาะเจาะจง ... สิ่งสำคัญเมื่อทำลาย "กฎ" คือการรู้จักพวกเขาดีพอที่จะรู้ว่าสิ่งที่พวกเขาออกแบบมาเพื่อช่วยให้คุณประหยัดจากและทำไมคุณต้องทำลายพวกเขาในกรณีนี้ และสิ่งที่มีความเสี่ยงหรืออาจเป็น
cas

ฉันแค่ต้องติดตั้งโปรแกรมอิสระ (ซูม) ดังนั้นก่อนอื่นฉันลองตัวเลือกที่ 2 ( dpkg-deb -xไปที่ dir ท้องถิ่น) ทำงานเหมือนจับใจ ฉันไม่จำเป็นต้องทำLD_LIBRARY_PATHแฮ็กใด ๆ แม้ว่าฉันจะต้องทำฉันก็จะทำมันในบรรทัดคำสั่งเดียวกันเพื่อไม่ให้กระทบกับการตั้งค่าร่วม (ตัวอย่าง$ LD_LIBRARY_PATH=/home/usr1/zoom/opt/zoom:/home/usr1/zoom/opt/zoom/zoom ZoomLauncher)
แอนโทนี

คุณจะต้องตั้งค่า LD_LIBRARY_PATH หากแพ็คเกจที่คุณต้องการติดตั้งมีอย่างน้อยหนึ่งไลบรารีที่ใช้ร่วมกัน หากเป็นไฟล์ executables & data & docs & config ฯลฯ ก็สามารถใช้ไลบรารีระบบได้
cas

50

คุณต้องรวบรวมสิ่งเหล่านี้จากแหล่งที่มา มันควรจะเป็นเรื่องของ

apt-get source PACKAGE
./configure --prefix=$HOME/myapps
make
make install

ไบนารีจะอยู่ใน~/myapps/binนั้น ให้เพิ่มexport PATH="$HOME/myapps/bin:$PATH"ที่คุณ.bashrcไฟล์และโหลดไฟล์ที่มี.bashrc source ~/.bashrcแน่นอนว่าจะถือว่าติดตั้ง gcc ไว้ในระบบ


6
แล้วเรื่องการพึ่งพาล่ะ? มีวิธีจัดการโดยอัตโนมัติโดยไม่ใช้รหัสเดียวกันสำหรับแต่ละคนหรือไม่
yura

1
@yura ไม่ต้องทำเอง
Ulrich Dangel

ถ้าคุณไม่มีสิทธิ์ในการทำเช่นนี้ เป็นเรื่องปกติที่จะมีสิทธิ์ในการรวบรวมซอฟต์แวร์โดยไม่ต้องใช้ sudo / root
Freedo

5

คุณสามารถใช้JuNestซึ่งสร้างคอนเทนเนอร์ Linux ขนาดเล็กในไดเรกทอรีของผู้ใช้ซึ่งคุณสามารถติดตั้งแพ็คเกจใด ๆ


0

ฉันพบปัญหาเดียวกันนี่คือวิธีที่ฉันจะแก้ไขอย่างรวดเร็วโดยสมมติว่าคุณมีเซิร์ฟเวอร์ linux ของระบบปฏิบัติการและสถาปัตยกรรมเดียวกัน

  1. ติดตั้งซอฟต์แวร์บนระบบที่คุณควบคุม

  2. ค้นหาตัวอย่างที่ปฏิบัติการได้which pythonและคัดลอกไปที่~/

  3. คัดลอกไลบรารีด้วย:

    ldd "$(which python)"  | grep "=> /" | awk '{print $3}' | xargs -I '{}' cp -v '{}' ~/
    

ถ่ายโอนไฟล์ที่เรียกทำงานได้และไลบรารีไปยังระบบอื่นที่คุณมีสิทธิ์ใช้งานเฉพาะจากนั้นเรียกใช้สิ่งต่อไปนี้:

mkdir ~/lib
export PATH="$PATH:~/lib"
export LD_LIBRARY_PATH=~/lib:/lib:/usr/lib

สิ่งนี้จะสร้างโฟลเดอร์~/libเพื่อจัดเก็บไลบรารี่เพิ่มในพา ธ ของคุณและบอก LD เพื่อดูไลบรารี่ที่นั่นดังนั้นเพียงเพิ่มไฟล์ปฏิบัติการและไลบรารี่ของคุณที่นั่นตอนนี้คุณสามารถรันมันได้เหมือนที่อื่น

นี่อาจจะเป็นเรื่องแฮ็ค แต่มันพกพาได้อย่างรวดเร็วและฉันยังไม่พบสิ่งที่ฉันไม่สามารถเรียกใช้ด้วยวิธีนี้แน่นอนว่าซอฟต์แวร์ไม่สามารถพยายามทำสิ่งต่าง ๆ ที่ต้องใช้การเข้าถึงรูตเช่นผูกเข้ากับพอร์ตที่ต่ำกว่า มากกว่า 1024 ฯลฯ


-1

ฉันมีปัญหาเช่นเดียวกับคุณ ฉันยังไม่ได้ลองเลย แต่ดูเหมือนว่าLinuxbrewจะมีประโยชน์กับปัญหานี้

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