Z moich badań wynika, że wszyscy menedżerowie pakietów nalegają na to, aby być wykorzystywanym jako użytkownik uprzywilejowany i muszą być instalowani /
.
Zwykle to, co lubię robić, to utworzyć konto typu out-out, skompilować oprogramowanie i zainstalować $HOME
dla tego konta. Mogę wypróbować różne konfiguracje, a kiedy skończę, po prostu zniszcz konto.
Jednak kompilowanie oprogramowania staje się nużące.
Moje doświadczenie jest tak naprawdę ograniczone yum
, ale nie rozumiem, dlaczego nie byłbym w stanie upuścić pliku repo ~/etc/yum.repos.d
i kazać zainstalować wszystko na koncie domowym.
Czy jest jakiś powód, dla którego menedżerowie pakietów muszą być używani jako uprzywilejowani użytkownicy do instalowania oprogramowania?
/bin
) lub może zakładać, że jest zainstalowany w miejscu określonym przez --prefix. Podczas gdy te drugie mogą być omijane przez te projekty, te pierwsze wymagają poprawek do kodu źródłowego./
Brzmi to jak wymóg, który może być uzasadniony może 30 lat temu, ale nie teraz. Czy na przykładenv
program nie ma na celu rozwiązania tego rodzaju problemów? Jeśli nie, łatwo jest wyjść ze schematem konfiguracji dowolnego pliku binarnego w celu wyszukiwania innych plików binarnych w określonych lokalizacjach./etc
lub (zgodnie z moją wiedzą)/usr/lib/<packagename>/
lub/usr/libexec/<packagename>/
./usr/share
mogą być zmienione przez zmienne XDG, które zostały wydane w tym stuleciu i niekoniecznie są przystosowane do starszych programów.Istnieje projekt menedżera pakietów - Nix - z ciekawym fundamentalnym pomysłem („ funkcjonalny ” menedżer pkg), który obsługuje również operacje dla poszczególnych użytkowników:
UWAGA, którą chcę
Nix
dodać : powinna być użyteczna w wybranym systemie uniksowym (np. Dystrybucja Linuksa).Istnieje również powiązana duża kolekcja pakietów, które można zainstalować za pomocą menedżera pakietów Nix - Nixpkgs - wbudowanego na wiele platform :
i powiązana dystrybucja - NixOS :
i związany z nim „ciągły” system budowy - Hydra .
źródło
nix
iguix
. Ponieważ teraz naprawdę używamnix
do swojej pracy, chcę wiedzieć, czy mogę rozważyćguix
inną implementację narzędzia, którego potrzebuję. Czy mogę gdzieś przeczytać podsumowanie różnic? Być może mógłbyś nawet napisać odpowiedź z takim streszczeniem tutaj, ogłaszając jeszcze jedno alternatywne rozwiązanie?Przede wszystkim wynika to z zależności. Niektóre pakiety mogą nie zostać zainstalowane przez użytkownika - jak PolicyKit. W związku z tym wymagałoby to dodatkowego obciążenia dla osoby pakującej, która poświęca swój wolny czas, a zwykle instalacja programu jest tak prosta, jak pisanie
sudo
(stacja dla jednego użytkownika) lub dokuczliwy administrator.Istnieją opcje instalacji w $ HOME
./configure --prefix=$HOME/sandbox --enable-cool-feature && make all install
(lub odmiany takie jak jhbuild).źródło
Używam JuJu, który zasadniczo pozwala mieć naprawdę małą dystrybucję linuksa (zawierającą tylko menedżera pakietów) w twoim katalogu $ HOME / .juju.
Pozwala mieć dostęp do twojego niestandardowego systemu w katalogu domowym przez proot, a zatem możesz instalować dowolne pakiety bez uprawnień roota. Będzie działał poprawnie dla wszystkich głównych dystrybucji Linuksa, jedynym ograniczeniem jest to, że JuJu może działać na jądrze Linuksa z minimalną zalecaną wersją 2.6.32.
źródło
Kolejny z raczej innym modelem to 0install . Opiera się na pomyśle, że tak naprawdę nie instalujesz pakietów, ale po prostu je uruchamiasz z globalnej przestrzeni nazw, która pobiera, kompiluje w razie potrzeby i buforuje oprogramowanie, którego chcesz użyć.
źródło
Jeśli nie masz nic przeciwko kompilacji ze źródła i samodzielnemu rozwiązywaniu zależności, a przede wszystkim chcesz, aby menedżer pakietów obsługiwał operacje wdrażania / cofania / aktualizacji, możesz rzucić okiem na GNU Stow lub nieco ulepszony XStow . Za ich pomocą instalujesz scenę instalacji w oddzielnym katalogu (zwykle poniżej
$PREFIX/stow
), a następnie stow tworzy dowiązania symboliczne do oprogramowania z Twojego prawdziwego prefiksu. Ułatwia to całkowite usunięcie oprogramowania. Z powodzeniem używam go do zarządzania niestandardowo zainstalowanym oprogramowaniem na mojej uczelni.źródło
Główni menedżerowie pakietów Linuksa postrzegają świat jako sysadmin ... gdzie maszyna jest pojedynczą jednostką. Pozwala to uzyskać odpowiedzi na pytania takie jak „jakie wybitne błędy dotyczą systemu X” i „czym różnią się system X i system Y”. Dzięki temu yum może mieć „historię”, która jest użyteczna, mieć wersje rpmdb i robić rzeczy takie jak „mniam - aktualizacja bezpieczeństwa” itp.
Istnieje kilka menedżerów pakietów, takich jak zero-install, którzy próbują postrzegać świat tak, jak użytkownik ... jakie aplikacje zrobić ja mam dostęp.
Możesz pomyśleć, że później jest lepszym modelem, ale IMNSHO istnieje powód, dla którego nie słyszałeś o instalacji zerowej, ale słyszałeś o mniam.
źródło
W bloku jest nowy dzieciak: „ JuNest ( Jailed User NEST) - Dystrybucja oparta na Arch Linux, która działa na dowolnej dystrybucji Linuksa bez dostępu roota”. @ https://github.com/fsquillace/junest Zaletą jest to, że nie wprowadza nowego rodzaju formatu pakietu, więc po bardzo łatwej instalacji (minimum: ok. 320 mln), kompletne repozytorium Arch Linux (ponad 13000 pakiety ATM) jest na wyciągnięcie ręki.
źródło
W szczególności narzędzia używane przez Slackware
installpkg
. Ze strony podręcznika:Nie znam jednak lepszych nakładek, które mogłyby to zrobić (np
slapt-get
. O ile wiem, nie mogę tego zrobić). Teoretycznie powinieneś mieć możliwość aliasuinstallpkg
doinstallpkg --root ~/Apps
- jednak myślę, że większość frontendów wymaga rootowania do uruchomienia, co przeczy temu.źródło
Sugerowałbym http://linuxbrew.sh/
Jest to w zasadzie rozwidlenie naparu dla systemu macOS i ma wstępnie skompilowane pliki binarne do użytku ...
Szczególnie nadaje się do obsługi starszych wersji gcc.
Jeśli naprawdę chcesz zainstalować ręcznie, przydatnym przewodnikiem jest http://www.linuxfromscratch.org/
źródło
Yum musi napisać do bazy danych, która jest własnością root. Z tego powodu nie można go używać jako zwykłego użytkownika.
Możesz spróbować zdekompresować pliki rpm (rpm2cpio package.rpm | cpio -idmv) w wybranym katalogu.
Ale kiedy uruchomisz swój program, musisz zadbać o zmodyfikowanie LD_LIBRARY_PATH w celu załadowania zależnych bibliotek. Również to nie rozwiąże żadnych zależności.
Przykład:
Powyższe nie ma żadnych zależnych bibliotek, w przeciwnym razie musiałbyś użyć czegoś takiego:
źródło