Jak zarządzać oprogramowaniem zainstalowanym ze źródła?

14

Od czasu do czasu możemy musieć instalować coś ze źródła z różnych powodów. Chociaż jest to dość standardowe, jak zainstalować oprogramowanie, biorąc pod uwagę odpowiednie zależności, nie jest dla mnie jasne, jak zarządzać taką instalacją dla przyszłej wygody.

Dokładniej:

  1. Co możemy zrobić, aby zapewnić łatwą i czystą dezinstalację (w tym zależności, które są instalowane tuż przed i tylko dla oprogramowania instalowanego ze źródła)?

  2. Co możemy zrobić, aby zapewnić łatwą i czystą aktualizację tego samego oprogramowania, które prawdopodobnie zostanie ponownie zainstalowane ze źródła?

  3. Co możemy zrobić, aby zminimalizować potencjalny konflikt, jeśli istnieje pakiet domyślny (instalowany przy użyciu apt-get), a także (nowsza) wersja pakietu (instalowana ze źródła)?

niebo
źródło

Odpowiedzi:

8

Użycie checkinstall make installspowoduje utworzenie tymczasowego pakietu i jego instalację. Oznacza to, że jest on zapisywany w menedżerze pakietów i można go odinstalować.

użytkownik54114
źródło
7

Najlepszym rozwiązaniem byłoby samodzielne tworzenie pakietów Debiana w nowszych wersjach. dpkgiapt narzędzia wykonują wszystkie trzy wymienione przez ciebie rzeczy i są przeznaczone do tego celu. Użyj ich zamiast wynaleźć koło na nowo. Dostępnych jest wiele wskazówek dotyczących opakowań. Jeśli oprogramowanie już istnieje w repozytoriach, prawdopodobnie możesz pobrać pakiet źródłowy ( apt-get src), którego możesz użyć do zbadania i uruchomienia własnego pakietu.

Ta odpowiedź na /ubuntu//a/485230/158442 może być przydatna jako ogólna wskazówka.

Chociaż checkinstalljest świetny do szybkiego i brudnego rozwiązania, w dłuższej perspektywie powinieneś używać odpowiedniego opakowania.

muru
źródło
dzięki za sugestie. Kiedy powiedziałeś „oprogramowanie już istnieje w repozytoriach”, zakładam, że masz na myśli oficjalne repozytoria prowadzone przez Ubuntu. Jeśli tak, w wielu przypadkach repozytoria te nie udostępniają nowszych wersji, zwłaszcza w starszych wersjach Ubuntu. Więc apt-get srcprawdopodobnie nie może pomóc w takich przypadkach.
skyork
@skyork, może nie. Ale do nauki możesz użyć pakietów starszych wersji. Może być trochę dostosowań dokonanych przez programy pakujące, niektóre niestandardowe skrypty konserwacyjne. Nie ma powodu, dla którego miałbyś to wszystko ignorować i zacząć od zera. Ponowne wynalezienie koła wydaje się tutaj tematem.
muru
4

Przede wszystkim wiele zależy od sposobu zarządzania kodami źródłowymi. ~/sourcesTworzę katalog podobny do tego i umieszczam każdy program w jego podkatalogach, podczas gdy inne utworzą nowy katalog dla każdego programu.

Podobnie niektórzy jak ja, stwórz nowy podkatalog dla każdej nowej wersji i usuwaj starsze wersje tylko wtedy, gdy upewnisz się, że nie ma istotnych błędów w nowej wersji, które mogłyby zatrzymać moją pracę.

Nie ma jednego sposobu, aby to zrobić, ale niezależnie od tego, który sposób wybierzesz, wybierz sposób, który byłby dla ciebie najłatwiejszy do zarządzania .

  1. Wyczyść odinstalowanie

    • Sugerowałbym stworzenie rem_dep.shskryptu, który wyglądałby tak.

      #! /bin/bash
      sudo apt-get remove dep1 dep2 ... depn
      

      gdzie dep1, dep2, depnsą zależności.

  2. Czysta i łatwa aktualizacja

    • jeśli masz kod źródłowy ze zautomatyzowanym systemem wersjonowania jak gitlub bazaarczy linki są przewidywalne można utworzyć skrypt, który będzie shell

      #1 make a backup of earlier version
      #2 get new source
      #3 configure, build/make the source
      #5 if make went correctly, remove earlier version.
      #6 make install new version, update dependencies if required.
      
    • Również w innych przypadkach możesz w pewnym stopniu tworzyć takie skrypty z pracą ręczną.

  3. Zarządzanie konfliktem

    • Najlepszym sposobem jest skorzystanie z tej --prefixopcji podczas instalowania oprogramowania i zależności.
    • Inną ważną rzeczą jest aktualizowanie systemu, aby zminimalizować konflikty.

UWAGA: Jeśli okaże się, że kompilujesz więcej oprogramowania niż powinieneś (ustaw max_limitdla siebie, np. 5 lub 10 lub 100), najlepiej opuścić Ubuntu i przejść do Arch Linux.

zarejestrowany użytkownik
źródło
3

Kompiluj zależności:

  • AFAIK powinny być rejestrowane ręcznie. Możesz utworzyć plik typu README, aby zachować listę ręcznie zainstalowanych zależności.

  • Jeśli to oprogramowanie ma już wbudowany plik binarny w repozytoriach Ubuntu lub PPA. Śledzenie zależności podczas instalacji powinno być łatwiejsze:

    sudo apt-get build-dep target_package
    

Wyczyść odinstalowanie:

Zachowaj skonfigurowany i zainstalowany folder źródłowy. Lepiej, jeśli zbierzesz wszystkie źródła w określonym folderze z plikiem zainstalowanych zależności.

Czysta aktualizacja i izolacja zainstalowanych plików:

Zainstaluj je w określonych --prefix(najlepiej--prefix=/opt/software_name-version/ ).

To rozwiąże wiele problemów: współbieżne wersje z wersją z repozytorium; czyste uaktualnienie; łatwiejsze do brudnej dezinstalacji w przypadku usunięcia źródła.

Bardziej wyrafinowany lub najlepszy sposób, jako odpowiedź @muru, Zbuduj pakiet Debian (dla pakietów dostępnych w repozytoriach Ubuntu / PPA)

user.dz
źródło