Załóżmy, że mam dostęp ssh do niektórych serwerów Ubuntu jako użytkownik i potrzebuję niektórych nie systemowych narzędzi do zainstalowania dla wygody (mc, rtorrent, mcedit). Nie chcę niepokoić administratorów tymi małymi programami.
Czy istnieje sposób ich zainstalowania (uruchomienia) bez użycia czegoś takiego sudo apt-get install
?
Odpowiedzi:
Skompilować i zainstalować na
~/bin
(i edytować.bashrc
, aby ustawićPATH
włączenie go). biblioteki można podobnie kompilować i instalować w~/lib
(ustawiać,LD_LIBRARY_PATH
aby wskazywały na to), a nagłówki programistyczne można instalować np~/includes
. w.W zależności od szczegółowych informacji o programach, które chcesz zainstalować i bibliotekach, od których są zależne, możesz pobrać pliki .deb i użyć „
dpkg-deb -x
”, aby wyodrębnić je pod katalogiem domowym. Następnie będzie dużo „zabawy” ustawieniePATH
,LD_LIBRARY_PATH
i innevariables
. Im bardziej złożony program lub aplikacja instalujesz, tym więcej zabawy będziesz gotowy :)Oczywiście nie będziesz w stanie instalować
setuid
plików binarnych w ten sposób - zostaną one zainstalowane, ale (ponieważ nie masz uprawnień, aby chown je rootować lub ustawićsetuid
na nich bit), będą to zwykłe pliki binarne, których właścicielem jesteś .Podobnie demony i usługi systemowe, które spodziewają się działać jako pewne
UID
lub mają możliwość zmiany identyfikatora użytkownika lub oczekują, że pliki będą się/etc
pojawiać~/etc
itd., Prawdopodobnie nie będą działać dobrze, jeśli w ogóle.Większość sysadminów uważa
mc
imcedit
jest „w większości nieszkodliwymi”, nieszkodliwymi programami.Jednak niewielu uważa, że zainstalowanie klienta torrent jest nieszkodliwe, zwłaszcza jeśli będą musieli zapłacić za przepustowość lub ostatecznie ponosić prawną odpowiedzialność. Większość sysadminów prawdopodobnie nie byłaby zadowolona, gdyby użytkownicy końcowi instalowali takie oprogramowanie bez pozwolenia. Mogą powiedzieć „pewnie, śmiało, powalić się” lub mogą nie… ale powinieneś zapytać o wszystko, co może powodować problemy dla właścicieli / administratorów maszyny.
źródło
LD_LIBRARY_PATH
to zły hack . Czy dotyczy to również tutaj, czy też źle zrozumiałem?dpkg-deb -x
do lokalnego katalogu ). Działa jak urok. Nie musiałem robić żadnychLD_LIBRARY_PATH
hacków. Nawet gdybym musiał, zrobiłbym to w tym samym wierszu poleceń, aby nie wpływać na ustawienia globalne (na przykład$ LD_LIBRARY_PATH=/home/usr1/zoom/opt/zoom:/home/usr1/zoom/opt/zoom/zoom ZoomLauncher
).Musisz je skompilować ze źródła. To po prostu kwestia
Plik binarny byłby wówczas zlokalizowany w
~/myapps/bin
. Tak, dodajexport PATH="$HOME/myapps/bin:$PATH"
do.bashrc
pliku i załaduj.bashrc
pliksource ~/.bashrc
. Oczywiście zakłada to, że gcc jest zainstalowany w systemie.źródło
Możesz użyć JuNest , który tworzy mały kontener Linux w katalogu użytkownika, w którym możesz zainstalować dowolne pakiety.
źródło
Napotkałem ten sam problem, oto jak szybko go naprawiłem, zakładając, że masz serwer Linux z tym samym systemem operacyjnym i architekturą.
Zainstaluj oprogramowanie w kontrolowanym systemie
Znajdź przykładowy plik wykonywalny
which python
i skopiuj go~/
Skopiuj biblioteki za pomocą:
Przenieś plik wykonywalny i biblioteki do innego systemu, w którym masz tylko lokalne uprawnienia, a następnie uruchom następujące czynności:
Spowoduje to utworzenie folderu
~/lib
do przechowywania bibliotek, dodanie go do ścieżki i powiedzenie LD, aby przejrzał tam biblioteki, więc po prostu dodaj pliki wykonywalne i biblioteki, teraz możesz uruchomić go tak, jak gdzie indziejMoże to być bardzo hackerskie, ale jest bardzo przenośne, szybkie i jeszcze nie znalazłem czegoś, czego nie mogę uruchomić w ten sposób, oczywiście, oprogramowanie nie może próbować robić rzeczy, które wymagają dostępu do roota, takich jak powiązanie z dolnym portem niż 1024 itd.
źródło
Mam taki sam problem jak ty. Jeszcze tego nie próbowałem, ale wydaje się, że Linuxbrew może być przydatny w tej kwestii.
źródło