To chyba głupie pytanie, ale ostatnio zdałem sobie sprawę, że nie mam pojęcia, dlaczego w apt-get nie ma funkcji dla jednego użytkownika.
Odpowiedzi, których nie szukam:
- „To dlatego, że apt zapisuje do katalogów na poziomie systemu”. To dlaczego na poziomie powierzchni, ale szukam poziomu głębszego. Czy istnieje coś, co zasadniczo blokuje środowisko dla jednego użytkownika (la pip + virtualenv)?
- „Możesz po prostu budować ze źródła”. Jest to obejście, ale nie odnosi się do mojego pytania. Nie chcę naprawiać problemu krótkoterminowego, a mimo to mam dostęp do roota na wszystkich moich komputerach.
Odpowiedzi:
Nie zawsze. Możesz doskonale używać
apt-get
bezsudo
. Są sytuacje, w których wcale nie potrzebujesz,sudo
na przykład użycie tego,apt-get download
który pobiera pakiet do bieżącego katalogu ,apt-get source
który pobiera pliki źródłowe debiana do bieżącego katalogu,changelog
który pobiera i drukuje dziennik zmian danego pakietu oraz dowolne polecenie, które ma--simulate
/--dry-run
/--no-act
(w przypadkuinstall
Należy również--no-download
).Wynika to z faktu, że te akcje / polecenia nie wymagają zapisywania katalogów systemowych.
Dlaczego teraz
apt-get
potrzebujesudo
? W rzeczywistości tak nie jest. Możesz porzucić apt-get, pobrać pakietwget
i użyć godpkg --extract
i rozpakować w dowolnym katalogu. Są też takie,--instdir
które powinny działać dla pakietu tylko binarnego.Dlaczego to nie jest domyślne? Ponieważ to ból. Aby zrobić to, co chcesz, musielibyśmy ponownie zapakować każdą paczkę dwa razy, jeden we właściwy sposób, a drugi, aby zrobić to, co chcesz. Podczas kompilacji pliki binarne zwykle muszą wiedzieć, gdzie są potrzebne pliki i biblioteki (w niektórych przypadkach jest to zakodowane podczas kompilacji).
Co możesz zamiast tego zrobić? Po prostu chroot jakieś środowisko a la virtualenv, w którym możesz instalować pakiety bez rootowania.
Podsumowując, nie jest to sposób, w jaki apt-get miał być używany, i nie znam innego menedżera pakietów podobnego do apt-get, który pozwala ci to zrobić. Na koniec dnia
apt-get
jest tylko front-endem dla dpkg, który mógłby zrobić część tego.źródło
Informacje w samym pakiecie określają, gdzie pliki zostaną zainstalowane, więc musisz
sudo
zarówno pisać do, jak/
i zmieniać bazę danych pakietu.Podczas instalowania pakietów instalowane są wstępnie skompilowane pliki binarne oraz powiązane pliki konfiguracyjne i meta oraz skrypty, które są niezbędnymi częściami pakietu. Te skrypty i pliki konfiguracyjne są ściśle powiązane z zależnościami i resztą systemu. Nie chciałbyś ich lekko zmieniać, chyba że dokładnie wiesz, co robisz.
Jeśli jesteś w systemie, powiedzmy w pracy, gdzie nie masz
sudo
dostępu, możesz skompilować ze źródła i ustawić katalog instalacyjny na dom. Zatem nie ma takiej potrzebysudo
. Podczas instalacji ze źródła zazwyczaj nie zmieniasz bazy danych pakietów.źródło
To nie jest głupie pytanie.
Poziomy uprawnień w systemie operacyjnym
Ubuntu - a właściwie każdy nowoczesny system operacyjny - ma koncepcję różnych poziomów uprawnień dla różnych programów. Oprogramowanie inicjowane przez użytkowników zwykle działa na poziomie uprawnień użytkownika, który ze względów bezpieczeństwa nie ma wymaganego dostępu do modyfikacji systemu - może jedynie modyfikować pliki należące do tego użytkownika.
W celu wprowadzenia jakichkolwiek modyfikacji w systemie operacyjnym, które mogłyby mieć wpływ na system jako całość, a nie tylko na pliki użytkownika, wymagany jest wyższy poziom uprawnień, który w Linuksie jest nazywany uprawnieniami „superużytkownika” (lub często o nazwie „root”). Ten poziom uprawnień ma nieograniczony dostęp do całego systemu operacyjnego, umożliwiając mu modyfikację - lub zniszczenie - wszystkich plików dla wszystkich użytkowników.
Rola apt-get
Podczas instalowania oprogramowania przez apt-get instalujesz oprogramowanie, które będzie dostępne w całym systemie . Oznacza to, że oprogramowanie nie tylko zostanie umieszczone w katalogu osobistym użytkownika, aby mogło być uruchomione tylko przez tego użytkownika, ale zostanie zainstalowane w ogólnosystemowym katalogu aplikacji (takim jak / usr, / etc, / var i tak dalej) ) do uruchomienia przez wszystkich użytkowników. Aby zmodyfikować te katalogi, potrzebujesz uprawnień administratora. Żaden nieuprzywilejowany użytkownik nie może modyfikować tych katalogów, ponieważ w przeciwnym razie nieuprzywilejowane oprogramowanie może zepsuć się z systemem.
Jeśli spróbujesz zainstalować coś przy użyciu apt-get bez nadawania uprawnień superużytkownikowi apt-get, pierwszą przeszkodą, której nie uda się pokonać, jest uzyskanie blokady zapisu do własnego katalogu oprogramowania. Będąc narzędziem ogólnosystemowym, apt-get prowadzi katalog zainstalowanego oprogramowania, które oczywiście wymaga uprawnień administratora do edycji, aby nieuprzywilejowane oprogramowanie nie mogło z nim zadzierać. Ale nawet jeśli uda ci się jakoś pokonać tę przeszkodę (na przykład zmieniając uprawnienia do plików), wiele dalszych kroków podczas instalacji oprogramowania nadal nie powiedzie się, ponieważ procedura instalacji będzie zależeć od zapisu w kilku katalogach systemowych.
Korzystając z Linuksa można instalować oprogramowanie bez uprawnień administratora, ale musisz napisać je samodzielnie (np. Skrypty powłoki) lub samodzielnie skompilować i uruchomić bezpośrednio skompilowane pliki wykonywalne. Łatwiej jest go zainstalować w całym systemie za pomocą apt-get (i innych narzędzi opartych na APT, takich jak aptitude, synaptic lub centrum oprogramowania Ubuntu), jeśli masz do tego dostęp.
źródło
Dlaczego apt-get domyślnie instaluje się w katalogach / (lub podobnych)?
Prostym powodem jest to, że
apt-get
nie decyduje, gdzie zainstalować oprogramowanie. Decyzja jest ustalana przez programistów i zakodowana w samej aplikacji.Czy mogę zainstalować w innych katalogach?
Tak, możesz zainstalować w innych katalogach. W przypadku oprogramowania typu open source pobierz źródło, zmień katalog instalacyjny, skompiluj, skompiluj i zainstaluj. Zazwyczaj w dołączonym
configure
skrypcie jest opcja umożliwiająca określenie miejsca instalacji. Zazwyczaj tak jest--prefix
.Ale nalegam na użycie apt-get. Co zrobić teraz?
OK. Nadal istnieje sposób, aby to zrobić za pomocą apt-get, choć byłoby to zbyt wiele dla użytkownika końcowego. Wykonaj kroki.
$HOME
.sudo apt-get update
.apt-get install package
.To było zbyt łatwe / trudne. Czy można wybrać katalog podczas instalacji?
Tak i nie.
Tak, ponieważ jest to możliwe, niektóre programy używają tej metody, jedyne, które znam to
Qt5
. Ma plik .run , który po uruchomieniu pyta o katalog instalacyjny wśród wielu innych danych wejściowych.Nie, ponieważ ta metoda nie używa
apt-get
.Czy mógłbym to zrobić kiedyś z łatwością
apt-get
?Nie sądzę, aby programiści
apt-get
i / lub twórcy oprogramowania byliby zainteresowani tym, ale można opracować pewne oprogramowanie, które wykona kroki w zakresie źródła, zmiany, kompilacji, kompilacji, instalacji automatycznie, prosząc tylko o katalog instalacyjny.Mój szósty zmysł mówi mi, że będzie to polecenie
źródło
apt-get
programistów przed zrobieniem tego. Ponadto wiele istniejących programów zależy od innych programów i przeszukują je w katalogu / usr. Wdrożenie takiej funkcjonalności wymagałoby zmiany we wszystkich istniejących programach, które są zależne (nie jest to tysiące)./opt/package
zamiast tego katalogu i chmod.$HOME/opt/
jeśli nie mają wymaganych uprawnień do instalowania pakietów w/opt/
..Ponieważ edytuje pliki chmodded, więc nie możesz ich użyć. Być może uda ci się je chmod, więc nie mogę tego polecić
źródło