Jak zaktualizować oprogramowanie zainstalowane ze źródła?

10

Instaluję NGinx ze źródła, ponieważ pakiety z repozytorium ubuntu są dość stare. Zastanawiałem się, jaka jest najlepsza metoda uaktualnienia tego typu instalacji?

Mój obecny przepływ pracy obejmuje.

  • Pobieranie nowego źródła
  • Zainstaluj oprogramowanie z tymi samymi ścieżkami.
  • Ponowne uruchomienie oprogramowania.

Coś mi mówi, że to nie najlepsza droga.

Propozycje?

The Pixel Developer
źródło

Odpowiedzi:

9

Masz rację, sądząc, że nie jest to najlepsza droga. Ta trasa wymaga wielu ręcznych kroków i jest bardzo podatna na błędy i nie skaluje się dobrze.

Pracując z dystrybucjami linuksowymi, powinieneś jak najbardziej trzymać się zarządzania pakietami.

Zalety korzystania z zarządzania pakietami:

  • Wsparcie zależności
  • Łatwa instalacja / demontaż
  • Inwentaryzacja oprogramowania
  • Obsługa aktualizacji / aktualizacji, w tym obsługa plików konfiguracyjnych
  • Pakiet źródłowy zasadniczo dokumentuje proces kompilacji i zautomatyzował go po napisaniu.
  • Podpisywanie paczek
  • i więcej.

Kiedy zaczynasz pracować tylko ze źródła, tracisz wszystkie te wspaniałe funkcje, a sprawy zaczynają się szybko plątać.

Aby rozwiązać swój szczególny problem, powinieneś sprawdzić repozytorium backportów ubuntu , być może mają one zaktualizowaną wersję dla NGinx, której możesz użyć.

Jeśli nie mają odpowiedniej wersji, najlepszym rozwiązaniem byłoby samodzielne utworzenie pakietu ubuntu z backportem. To naprawdę nie jest takie trudne i wymaga mniej pracy niż ręczne kompilowanie ze źródła za każdym razem. Backporting wymaga w zasadzie pobrania pakietu źródłowego z Ubuntu, zastąpienia starego pliku tar.gz upsteam najnowszym, którego chcesz, i przebudowania pakietu.

Możesz skorzystać z tego przewodnika, aby pomóc w backportowaniu pakietu.

Tom Feiner
źródło
8

Uważam, że całkiem wygodnie jest zainstalować inną wersję w oddzielnych lokalizacjach i po prostu dowiązać symbolicznie do wersji, której chcesz użyć, na przykład:

lrwxr-xr-x  1 root  wheel     7B Jun  7 18:26 /usr/local/foo -> foo-1.0
drwxr-xr-x  2 root  wheel   512B Jun  7 18:26 /usr/local/foo-1.0
drwxr-xr-x  2 root  wheel   512B Jun  7 18:26 /usr/local/foo-1.1

Korzyści to:

  • zminimalizowane przestoje usługi podczas aktualizacji
  • łatwe wycofanie
  • nadal możesz używać tej samej ścieżki, jak /usr/local/foo/bin/bar

Oczywiście nadal musisz ponownie zastosować wszelkie zmiany konfiguracji dokonane w poprzedniej wersji, ale do tego możesz użyć systemu kontroli wersji (RCS / SVN / GIT) lub narzędzia do zarządzania konfiguracją, takiego jak Bcfg2 .

I oczywiście jest to odpowiednie tylko dla garstki lub mniej gospodarzy.

po prostu
źródło
Tak właśnie robię w kilku przypadkach, w których budowanie pakietów nie jest odpowiednią odpowiedzią, z tym wyjątkiem, że zwykle używam / opt zamiast / usr / local.
freiheit
2

Następnym razem ... co powiesz na skompilowanie go w * .rpm lub * .deb?

elcuco
źródło
1

Jeśli zamierzasz zainstalować to na pojedynczym komputerze, najlepszym rozwiązaniem jest zrobienie tego ze źródła za każdym razem. Jeśli zamierzasz zainstalować to na kilku komputerach i chcesz upewnić się, że jest spójny, prawdopodobnie warto nauczyć się tworzyć pakiety Debiana. Prawdopodobnie możesz użyć opakowania w Ubuntu jako podstawy.

David Pashley
źródło
1

Nie ma świetnego sposobu. Powodem, dla którego stworzono skuteczne zarządzanie pakietami, było rozwiązanie tego samego problemu. Uaktualnianie i odinstalowywanie rzeczy skompilowanych ze źródłami jest trudne.

Zgadzam się z Tomem i Davidem.

Jeśli jest to jednorazowy przypadek, prawdopodobnie najlepszym wyborem jest ponowna kompilacja ze źródła. Jeśli jest na wielu komputerach, zdecydowanie czas przejść do obsługiwanego zarządzania pakietami.

Matt Simmons
źródło
0

obawiam się, że to jedyny sposób. jeśli masz więcej serwerów do utrzymania - rozważ oddzielne środowisko testowe, w którym kompilujesz i ewentualnie pakujesz wyniki swojej kompilacji.

spowoduje to nieznaczną standaryzację konfiguracji i ułatwi wdrożenie na wielu serwerach. nie będziesz także potrzebował gcc na maszynach produkcyjnych [które wielu uzna za korzyści bezpieczeństwa].

pQd
źródło