Jak powiedzieć Ubuntu, gdzie ma zainstalować program i jak powiedzieć, gdzie został zainstalowany istniejący program?

10

Jestem zupełnie nowy w Ubuntu / Linux, w tej chwili korzystam z Ubuntu Server. Próbuję tylko znaleźć coś podstawowego.

Jak rozpoznać, gdzie instalujesz program. Na przykład właśnie zainstalowałem wyszukiwarkę Sphinx, umieszczając plik tarball, który pobrałem z jego strony do mojego:

/home/sphinx

informator. Utworzyłem katalog sfinksa, aby umieścić go w archiwum. Następnie uruchomiłem następujące polecenia:

tar xvzf sphinx-0.9.8.1.tar.gz
cd sphinx-0.9.8.1/
./configure --with-mysql-includes=/usr/include/mysql --with-mysql-libs=/usr/lib/mysql

a następnie te:

make
sudo make install

Teraz mam dużo plików w katalogu, w którym uruchomiłem te polecenia. Czy to moja instalacja Spynx, czy zainstalowano ją gdzie indziej?

W systemie Windows, jeśli uruchomisz instalator (plik .exe) w dowolnym miejscu, program nadal będzie instalował się w katalogu C: \ Program Files. Czy coś podobnego dotyczy Linuksa, w którym wszystkie programy są zainstalowane w centralnym miejscu, czy możesz instalować programy w dowolnym miejscu w systemie.

pytania

  1. Wolałbym trzymać wszystkie zainstalowane programy w jednym miejscu, więc jakie jest to właściwe miejsce pod względem najlepszych praktyk. Innymi słowy, jaki jest odpowiednik C: \ Program Files w systemie Linux?

  2. A jak zawsze instaluje się w tym miejscu, czy to tylko kwestia umieszczenia tarballa i uruchomienia poleceń instalacyjnych z tego miejsca?

  3. Co jeśli użyję sudo apt-get, aby zainstalować pakiet. Jak mogę wskazać tę lokalizację, aby poinformować apt-get, aby zawsze tam instalował?

JakeRow123
źródło

Odpowiedzi:

15

Czy coś podobnego dotyczy Linuksa, w którym wszystkie programy są zainstalowane w centralnym miejscu

Przybliżone odpowiedniki katalogów instalacyjnych systemu Windows w systemie Linux

  • \Windows = /bin
  • \Windows\System32= /libi/sbin
  • \Program Files= /usr/bini/usr/lib

Wolałbym trzymać wszystkie zainstalowane programy w jednym miejscu, więc jakie jest to właściwe miejsce pod względem najlepszych praktyk. Innymi słowy, jaki jest odpowiednik C: \ Program Files w systemie Linux?

To byłyby katalogi w /usr, konkretnie /usr/bini /usr/lib.

A jak zawsze instaluje się w tym miejscu, czy to tylko kwestia umieszczenia tarballa i uruchomienia poleceń instalacyjnych z tego miejsca?

  • Nie. Gdzie jesteś, kiedy uruchomisz komendy instalacyjne, prawie nigdy nie ma znaczenia.

  • Programy instalowane przez apt-get(lub aptitude) prawie zawsze kończą się odpowiednio /usr. ALE programy, które kompilujesz ze źródła i make installczęściej kończą się w /usr/local/bin, /usr/local/libitp., I możesz mieć z tym problemy, ponieważ ścieżka zainstalowana przez użytkownika w Debian / Ubuntu jest /usri nie /usr/local.

  • Podczas kompilacji ze źródeł, dodać do tego przełącznika, aby skonfigurować: ./configure --prefix=/usr. W ten sposób, gdy make installpliki znajdą się w odpowiednim katalogu

  • Zajrzyj także do checkinstallprogramu, który śledzi pliki, które pakiet skompilowany z instalacji źródłowych tworzy plik deb i umożliwia łatwe odinstalowanie / ponowne zainstalowanie.

Co jeśli użyję sudo apt-get, aby zainstalować pakiet. Jak mogę wskazać tę lokalizację, aby poinformować apt-get, aby zawsze tam instalował?

apt-get/ dpkgzajmij się tym automatycznie. Możesz użyć, dpkg -L name-of-packageaby zobaczyć wszystkie pliki zainstalowane przez pakiet i gdzie zostały zainstalowane.

ish
źródło
dzięki za szczegółową odpowiedź, tylko jedno pytanie. Ponieważ powiedziałeś „Nie. Gdzie jesteś, kiedy uruchamiasz polecenia instalacji, prawie nigdy nie ma to znaczenia”. Czy to oznacza, że ​​teraz, kiedy zainstalowałem program, mogę bezpiecznie usunąć folder Sphinx w katalogu / home / sphinx /, który wyodrębniłem z tarballa i uruchomiłeś instalację i wydałeś polecenia w? Czy jest to teraz odpowiednik instalatora, który już uruchomiłem, aby zainstalować program i teraz nie ma sensu?
JakeRow123
1
Tak, możesz usunąć folder wyodrębniony z tarballa - jest to w zasadzie folder „temp”, do którego został wyodrębniony instalator i jest teraz bezużyteczny. To było świetne pytanie, zredaguję odpowiedź, aby uwzględnić tę informację.
ish
Możesz, ale wtedy będziesz mieć problemy z odinstalowaniem ich za pomocą polecenia „make uninstall”. W Debian / Ubuntu nie powinieneś nigdy instalować oprogramowania w prefiksie / lub / usr, powinieneś używać / usr / local. Dlaczego, ponieważ / usr / local jest tworzony dla lokalnych administratorów, to ty JakeRow123, aby zainstalować własne programy. / i / usr dotyczy tylko pakietów Debiana. Jeśli tam zainstalujesz, kanały są duże, że będziesz mieć problemy. Więc użyj przełącznika „--prefix = / usr / local” na komendę configure podczas kompilacji własnej. Potem czyń; sudo make install 'zainstaluje tam twój program.
Anders
@Anders, make uninstallNIE jest standardową funkcją i nie występuje w wielu źródłach programów. Ponadto /usr/localczęsto nie znajduje się na ścieżce w systemie Ubuntu i może powodować problemy podczas próby uruchamiania programów lub próby kompilacji (z powodu włączenia w /usr/local).
is
NIE powinieneś instalować oprogramowania w niewłaściwym miejscu, na przykład pod / usr, a nie we właściwym miejscu, takim jak / usr / local. Powinieneś naprawić usterkę PATH, jeśli środowisko komputera / użytkownika nie jest poprawnie skonfigurowane. Instalacja pod / lub / usr spowoduje problemy. Uwierz mi w to. Byłem tam i zrobiłem to. To NIE była żadna zabawa. W ogóle. Niektóre programy, wszystkie z funkcją autoconfig, w przypadku skonfigurowania za pomocą komendy config, zostały odinstalowane. Inni, którzy tego nie mają, nie są pomocni i powinni zgłosić błąd ...
Anders
4

Zwykle programy są instalowane w kilku katalogach w jednym głównym katalogu, zwanym prefiksem . Wybór najlepszego katalogu zależy od tego, kto instaluje, w jakim celu i kto będzie zarządzał oprogramowaniem.

Prefiks /usrto używane oprogramowanie spakowane przez twoją dystrybucję. Należy nie instalować żadnego innego oprogramowania tam, bo to będzie mylić dystrybucji podczas instalacji i aktualizacji oprogramowania zapakowane przez dystrybucję. Więc proszę nie instalować tam swoją skompilowany program. To nie jest dobry pomysł, chyba że naprawdę wiesz, co robisz. I chyba, że ​​jesteś programistą Debian lub Ubunut, zwykle nie. I tak bym tego nie zrobił.

W przypadku oprogramowania komercyjnego /optużywany jest prefiks . Jest zarezerwowane dla nich, aby najmniej zakłócały dystrybucje i lokalnego administratora systemu.

W przypadku oprogramowania, które administrator systemu instaluje dla wszystkich użytkowników, /usr/localużywany jest prefiks . Tam jest z dala od instalacji komercyjnej lub dystrybucyjnej i nie będzie im przeszkadzać. Jako administrator systemu korzystasz z niego (jeśli masz uprawnienia administratora, jesteś administratorem systemu).

Jeśli jesteś zwykłym użytkownikiem instalującym oprogramowanie dla siebie, możesz użyć swojego katalogu domowego jako prefiksu, używając --prefixopcji configurez katalogiem prefiksów „ ~/” lub $HOME/. Dużo tego używałem, kiedy byłem studentem. :-)

Zwykle oprogramowanie robi właściwą rzecz, gdy wykonujesz configurez opcją --prefixo właściwej wartości, a następnie make; make install.

Pod dowolnym z tych prefiksów zwykle znajdują się te katalogi w standardowej instalacji.

  • bin - programy wykonywalne, pliki binarne.
  • sbin - binaria systemowe, które zwykle nie powinny być wykonywane przez zwykłych użytkowników.
  • man - strony podręcznika dla programów, bibliotek i plików konfiguracyjnych itp.
  • etc - pliki konfiguracyjne z wartościami domyślnymi dla oprogramowania.
  • lib - biblioteki programów i pliki danych zależne od architektury (np. procesora) na twoim komputerze.
  • share - pliki danych, które nie różnią się w zależności od architektury i mogą być współużytkowane przez różne komputery.
  • var- katalogi z danymi, które zmieniają się podczas wykonywania programu. Jak rejestrowanie plików itp.

Większość tych katalogów może być używana z systemami plików chronionymi przed zapisem w celu zwiększenia bezpieczeństwa. Jedyny, do którego użytkownicy muszą pisać, to var/katalog. Kiedy oprogramowanie jest aktualizowane, te katalogi oczywiście (?) Muszą mieć uprawnienia do zapisu. Można to zrobić przy ponownym zamontowaniu z uprawnieniami do zapisu podczas instalacji, a następnie ponownie zamontowanym przy użyciu odczytu tylko po instalacji. Jest to jednak zaawansowane i podaję to tylko jako przykład zaawansowanego zarządzania pakietami.

Istnieją również pewne katalogi bezpośrednio poniżej /(katalogu głównego), który nie występuje w żadnym innym prefiksem, jak /dev, /tmp, /proci /srv(dla danych katalogów serwera, ale zwykle są one pod /var/liblub /var/wwwi katalogów tak, więc trzeba do zmiany konfiguracji skorzystaj z tego katalogu. Polecam to zrobić, gdy korzystasz z serwera. Używaj tylko /var/do testowania standardowej instalacji).

  1. Linux nie jest MS Windows. Istnieje wiele miejsc, w których można instalować zainstalowane programy. Zależy, kto i dla kogo. Przeczytaj to w moim poście. Ogłoszenie. RedHat używa /usrjako Debian / Ubuntu /usr/local. Poznaj swoją dystrybucję.
  2. Różne programy mają różne metody instalacji. --prefixsą przydatne dla programów używających configure. Najlepszym sposobem, aby się dowiedzieć, jest prawdopodobnie odczytanie README.txtpliku lub czegoś takiego, co zapewne zapewniono w archiwum tar. Archiwum tar można rozpakować w dowolnym miejscu, np. W katalogu domowym. Po zakończeniu instalacji możesz usunąć wyodrębnione archiwum tar, jeśli brakuje miejsca. Ale nie rób tego zbyt wcześnie, chyba że poprawnie przetestowałeś instalację.
  3. Programy instalowane z apt-getlub aptitudezawsze są instalowane w odpowiednim miejscu do dystrybucji. Nie możesz zmienić tego miejsca.
Anders
źródło
2

Podczas instalowania programów z repozytorium przy użyciu zwykłej instalacji zostanie ono zainstalowane we właściwym miejscu, utworzy pliki konfiguracyjne we właściwym miejscu (funkcjonalnie podobne do rejestru systemu Windows) i automatycznie utworzy pozycje menu.

Kiedy pobierasz plik (nie preferowany, ale często konieczny, gdy aplikacja nie znajduje się w repozytorium), pierwszą rzeczą, którą zrobiłeś, było uruchomienie tar, równoważne rozpakowaniu w systemie Windows. Tworzy to pliki, które najprawdopodobniej widzisz.

Następnie, po uruchomieniu make install, zwykle umieści wyniki we właściwym miejscu, być może utworzy menu, ale nie usunie niepoliczonych plików. Najprawdopodobniej możesz to zrobić, ale na wszelki wypadek możesz je tymczasowo zapisać.

Oto interesujący artykuł na temat struktury katalogów Debiana .

Marty Fried
źródło
Fajny artykuł, z tym wyjątkiem, że nie miał odniesienia do / usr / local, gdzie instalujesz własne oprogramowanie, aby nie kolidować z oprogramowaniem zainstalowanym przez system i twoimi pakietami dystrybucyjnymi (takimi jak Ubuntu). Zainstalowanie własnego oprogramowania w / / / usr oznacza proszenie o problemy, problemy, które prawdopodobnie jedynym rozwiązaniem jest ponowna instalacja systemu od nowa ...
Anders