Kiedy instaluję prosty program, często z niego korzysta make && make install
i nie ma nawet celu dezinstalacji .
Jeśli chcę zaktualizować program, czy jest to standardowy protokół, aby założyć, że przepisuje on bezproblemowo stary program?
Jak śledzić te programy; czy większość ludzi po prostu „odpala i zapomina”, a jeśli nie podano celu dezinstalacji, czy muszę ręcznie usunąć wszystko?
Odpowiedzi:
Zainstaluj każdy program w dedykowanym drzewie katalogów i użyj Stow lub XStow, aby wszystkie programy pojawiały się we wspólnej hierarchii. Stow tworzy dowiązania symboliczne z katalogu specyficznego dla programu do wspólnego drzewa.
Bardziej szczegółowo wybierz na przykład katalog najwyższego poziomu
/usr/local/stow
. Zainstaluj każdy program pod/usr/local/stow/PROGRAM_NAME
. Na przykład: zainstaluj pliki wykonywalne/usr/local/stow/PROGRAM_NAME/bin
, strony podręcznika/usr/local/stow/man/man1
itd. Jeśli program używa autoconf, uruchom./configure --prefix /usr/local/stow/PROGRAM_NAME
. Po uruchomieniumake install
uruchomstow
:A teraz będziesz mieć takie symboliczne linki:
Możesz łatwo śledzić, jakie programy zainstalowałeś, wyświetlając zawartość
stow
katalogu i zawsze wiesz, do którego programu należy plik, ponieważ jest to symboliczne łącze do lokalizacji w katalogu tego programu. Odinstaluj program, uruchamiając,stow -D PROGRAM_NAME
a następnie usuwając katalog programu. Możesz sprawić, że program będzie tymczasowo niedostępny, uruchamiając gostow -D PROGRAM_NAME
(uruchom,stow PROGRAM_NAME
aby udostępnić go ponownie).Jeśli chcesz szybko przełączać się między różnymi wersjami tego samego programu, użyj
/usr/local/stow/PROGRAM_NAME-VERSION
jako katalogu programu. Aby zaktualizować wersję 3 do wersji 4, zainstaluj wersję 4, a następnie uruchomstow -D PROGRAM_NAME-3; stow PROGRAM_NAME-4
.Starsze wersje Stow nie wykraczają daleko poza podstawy, które opisałem w tej odpowiedzi. Nowsze wersje, a także XStow (który nie był ostatnio utrzymywany) mają bardziej zaawansowane funkcje, takie jak możliwość ignorowania niektórych plików, lepsze radzenie sobie z istniejącymi dowiązaniami symbolicznymi poza katalogiem stow (np.
man -> share/man
), Obsługa niektórych konfliktów automatycznie (gdy dwa programy dostarczają ten sam plik) itp.Jeśli nie masz dostępu do konta root lub nie chcesz go używać, możesz wybrać katalog w katalogu domowym, np
~/software/stow
. W takim przypadku dodaj~/software/bin
do swojegoPATH
. Jeśliman
nie znajdzie automatycznie stron podręcznika, dodaj~/software/man
do swojegoMANPATH
. Dodaj~/software/info
do swojegoINFOPATH
,~/software/lib/python
do swojegoPYTHONPATH
itd., W zależności od przypadku.źródło
Możesz użyć checkinstall, aby utworzyć pakiet (pakiety kompatybilne z RPM, Deb lub Slackware). W ten sposób możesz użyć menedżera pakietów distros, aby dodać / usunąć aplikację (ale nie aktualizować)
Używasz
checkinstall
zamiastmake install
polecenia (używając parametru -D dla Deb; -R to RPM, a -S to Slackware):checkinstall domyślnie skompiluje i zainstaluje pakiet, lub możesz go zbudować tylko bez instalacji.
checkinstall jest dostępny w większości repozytoriów dystrybucji.
źródło
checkinstall
wydaje się, że nie jest tak aktywnie utrzymywany (?) :-(W przeważającej części był to powód, dla którego paczki, porty i inne typy menedżerów zapobiegały tego typu zdarzeniom.
Powiedziałbym, że ręczne usuwanie jest jedynym sposobem na ręczną instalację, chyba że ktoś inny zna lepszą odpowiedź na ten temat, o której być może nie wiem.
źródło
Jeszcze jedna alternatywa pochodzi ze wskazówek Linux From Scratch :
Większa kontrola i zarządzanie pakietami za pomocą użytkowników pakietów
Po tej pierwszej prymitywnej sugestii znalazłem rozwinięty wariant:
crablfs - oparty na użytkownikach system zarządzania pakietami
To
crablfs
najnowszy przykład zarządzania pakietami przy użyciu unikatowych identyfikatorów UID i GID do zarządzania pakietami, ale na sourceforge ponownie ewoluuje w ulfs:uLFS: Twój zarządzalny i wielokrotnego użytku Linux od zera
Dla przyczynowych użytkowników zainstalowanych pakietów myślę, że rozwiązanie LFS dla „użytkowników pakietów” jest lekkie, mniej inwazyjne i eleganckie. W skrócie, zainstalować pakiety w
/usr/local
lub/home/user/local
i zapisuje pliki przy użyciu unikalnych identyfikatorów UID i GID dla każdego pakietu, ale umieścić wszystkie pliki w tradycyjnych miejscach, wspólnych katalogów/usr/local/bin
,/usr/local/lib
jak to jest we wszystkich dystrybucjach Linuksa nurtu ... niedrożność plik i niechciany plik nadpisywania lub usuwanie unika go zgrabna sztuczka na Linuksa wyjaśniona przez Matthiasa S. Benkmanna w more_control_and_pkg_man.txt, która wymaga tylko normalnej manipulacji uprawnieniami do plików i katalogów, na przykład lepkich uprawnień do katalogów, aby uniknąć niechcianych nadpisań plików:Dla mnie wygląda to na proste i sprytne rozwiązanie! Użyłem tego schematu w mojej kompilacji LFS i jest to działające rozwiązanie ...
źródło
tar
plików z instalacji w/usr/src/non-rpms
celu przypomnienia (tak zwykle robię).źródło