Jak zachować mój system Debian z najnowszymi pakietami?

9

Większość „oprogramowania” instalowanego na moim serwerze musi być w najnowszej wersji (Java, Tomcat, MySQL-Cluster). Więc nigdy nie mam szczęścia, że ​​są dostępne gotowe pakiety Debiana (w dystrybucji). Dlatego całe oprogramowanie jest pobierane ze strony internetowej projektu i budowane ze źródła.

Teraz moje pytanie brzmi: jaki jest właściwy sposób na zainstalowanie ich w moim systemie Debian?

Moim głównym problemem jest to, że podczas instalowania ich bezpośrednio ze źródła, nie są one uwzględnione w zarządzaniu pakietami (z aptitude). Nie zaleca się używania Checkinstall, a equiv ma również wady. Czy jest to jedyny właściwy sposób, aby sobie z tym poradzić, budując własne pakiety za pomocą dh_make i dpkg-buildpackage?

Co robisz, jeśli zawsze potrzebujesz najnowszej wersji?

Braiam
źródło

Odpowiedzi:

10

Potrzebowanie nowszych pakietów jest częstym problemem w każdym systemie operacyjnym. Cykl wydawniczy Debiana wynosił średnio 2 lata w ostatnich latach, więc pod koniec tego cyklu jest to być może bardziej paląca kwestia. Jednym ze sposobów złagodzenia tego jest przejście do testowania pod koniec cyklu stabilnego wydania, kiedy następna wersja jest prawie stabilna. Nie jest jasne, czy chodzi o stabilność, a bardziej ogólnie o testowanie i / lub niestabilność. Niezależnie od tego najnowsza wersja może być problemem, nawet jeśli działa niestabilnie, ponieważ najnowsza wersja może nie zostać jeszcze spakowana. Twórcy / pakujący Debiana są wolontariuszami, więc mogą się nudzić lub zajmować innymi rzeczami, w wyniku czego pakiet słabnie.

Dla uproszczenia i konkretności zakładam w dalszej części, że planem jest przeniesienie pakietu do stabilnego, ale ma on bardziej ogólny charakter. Oto, co robię, jeśli chcę nowszej wersji oprogramowania, która nie jest obecna w stabilnej, w przybliżonej kolejności.

  1. Poszukaj pakietu w Backports Debiana . Czasami możesz znaleźć pakiet, który jest wystarczająco aktualny, aby spełnić twoje cele. Jednak często zdarza się, że te pakiety są nieaktualne w porównaniu do wersji niestabilnej, eksperymentalnej lub początkowej.

  2. Spróbuj zainstalować pakiet bezpośrednio z wersji testowej, niestabilnej lub eksperymentalnej. Jeśli stabilna nie różni się zbytnio od wersji, z której próbujesz zainstalować, może to działać. Będziesz wiedział, że to podejście jest złe, jeśli system zacznie próbować instalować lub aktualizować podstawowe pakiety z nowszej wersji. Załóżmy, że próbujesz zainstalować z systemu niestabilnego

    apt-get install packagename/unstable
    

    jest pierwszą rzeczą do wypróbowania. W przypadku wersji apt w wersji stabilnej często się to nie powiedzie, ponieważ wymaga innych pakietów od niestabilności, a inkantacja podnosi jedynie packagenameodpowiednio wysoką wartość, aby można ją było zainstalować w wersji niestabilnej. Jeśli nie rozumiesz, co to znaczy, idź i czytaj man apt_preferences. Kontynuuj dodawanie zależności od niestabilnych, upewniając się, że nie próbuje uaktualnić podstawowych pakietów. Na przykład, jeśli zacznie próbować zaktualizować libc6 lub X, KDE lub Gnome, przerwij natychmiast. Zwykle jest dobrze, jeśli próbuje zaktualizować inne pakiety z tego samego pakietu źródłowego, ponieważ są one zwykle ściśle ze sobą powiązane. Aby zobaczyć, od jakiego pakietu źródłowego zależy pakiet binarny, wykonaj

    apt-cache showsrc packagename
    

    Ponieważ wiele rzeczy zależy od biblioteki GNU C (libc6), był to kiedyś problem. Niedawno interfejs API wydaje się ustabilizować, więc teraz częściej można uciec bez konieczności jego aktualizacji. Jeśli pakiet spełnia swoje wymagania dotyczące środowiska uruchomieniowego na stabilnym, ale nadal nie działa poprawnie, zgłoś błąd. Jeśli program pakujący powie ci, że to nie jest błąd, oznacza to, że się mylą. :-)

  3. Wykonaj backport pakietu samodzielnie z testów, niestabilnych lub eksperymentalnych.

    Jak wspomniano powyżej, backports jest jedną z opcji, ale często te pakiety są nieaktualne w porównaniu do wersji niestabilnej, eksperymentalnej lub upstream.

    Może to często wymagać rekurencyjnej pętli typu kompilacji zależności. Najpierw musisz uzyskać zależności kompilacji

    apt-get build-dep packagename    
    

    Jeśli to się nie powiedzie, ponieważ jedna z zależności nie jest wystarczająco aktualna, najpierw musisz zaimportować tę zależność. Może to wymknąć się spod kontroli. Zwykle poddaję się, jeśli mam do czynienia z więcej niż 2 poziomami rekurencji. Zauważ jednak, że rzeczywiste zależności niekoniecznie są tak ścisłe, jak stwierdzono, tj. starsza wersja może działać. Program pakujący często nie próbuje znaleźć najstarszej wersji zależności kompilacji (lub środowiska uruchomieniowego), która będzie działać.

  4. Sprawdź dostępność pakietów od odpowiedniego nadrzędnego. Idealnie pasowałyby do twojej wersji dystrybucyjnej, ale w razie potrzeby możesz również je odbudować.

  5. Utwórz pakiety dla wersji oprogramowania nowsze niż najnowsze pakiety w wersji testowej / niestabilnej / eksperymentalnej. Może to być względnie trudne, ale czasem zaskakująco wykonalne. Pierwszą rzeczą, na którą należy zwrócić uwagę, jest to, że jeśli próbujesz spakować nowszą wersję pakietu, który jest już w Debianie, zaczynasz już z dużą zaletą, mianowicie z tym, że masz już istniejące opakowanie do pracy. Po prostu zrób

    apt-get source packagename
    

    i apt-getpobierze odpowiedni pakiet źródłowy, w tym podkatalog debian, w którym znajduje się opakowanie. Zauważ też, że obecnie to opakowanie często znajduje się w repozytorium verson control (git wydaje się popularny w Debianie), a stabilny apt (obecnie 0.8.10.3 ) pomaga ci powiedzieć, gdzie to jest, kiedy się wywołujesz apt-get source. Powinieneś na to spojrzeć, ponieważ osoby pakujące mogą mieć nowsze wersje opakowania niż odpowiada dowolnemu wydanemu pakietowi. Na przykład.

    $ apt-get source mercurial
      Reading package lists... Done
      Building dependency tree       
      Reading state information... Done
      NOTICE: 'mercurial' packaging is maintained in the 'Svn' version control system at:
      svn://svn.debian.org/python-apps/packages/mercurial/trunk
    

    Możesz też po prostu użyć

    apt-cache showsrc mercurial | grep Vcs
    

    aby wyświetlić repozytorium.

    Jeśli pakiet jest bardzo nieaktualny, być może będziesz musiał go zmodyfikować
    , odświeżyć zastosowane łaty, ale zwykle jest to dobry
    punkt początkowy . Debian wydaje się być w trakcie standaryzacji zarządzania pakietami na
    pikowaniu według formatu dpkg-source 3.0 (quilt) , więc pomaga to w odświeżaniu łatek.

    Będę wnioskować o przykład prawdziwego życia, jak ja przeniesiona do pakietu Debiana z PGF . Ostatnia spakowana wersja pgf to 2.00 w 2008 roku i od tego czasu wydano 2.10. Zobacz dyskusję w Proszę zaktualizować do najnowszej stabilnej wersji pgf (2.10) i mój błąd uzupełniający z łatką pgf: łatki przeciwko pakietowi Debian 2.0 . Jak się okazuje, pakowanie pgf w Debiana było bardzo proste i po prostu musiałem zmienić jedną linię w pakiecie 2.10, aby działało. Skończyło się również stłumienie wszystkich skarg lintian , ale było to całkowicie opcjonalne.

Faheem Mitha
źródło
Ostatnie zdanie pierwszego akapitu może wprowadzać w błąd. Wyjaśnij, że problem występuje tylko czasami . Sposób, w jaki piszesz, sprawia, że ​​DD są ogólnie takie.
tshepang
@Tshepang: Dobra uwaga. Czy teraz jest dobrze?
Faheem Mitha
Tak, o wiele lepiej.
tshepang 11.04.11
5

Z pewnością możesz zbudować własne pakiety i to zadziała. Jednak najpierw polecam korzystanie z backportów, jeśli dostępne jest tam to, czego chcesz.

Backports są utrzymywane w Debianie i otrzymujesz dla nich aktualizacje zabezpieczeń.

bahamat
źródło
3

Budowanie własnych pakietów to droga do działania (IMHO). W zależności od wieku wersji pakietu Debiana i tego, co się zmieniło, może to być tak proste, jak zastąpienie nazwy pliku źródłowego pliku archiwum w opisie pakietu, aw najgorszym przypadku możesz nadal używać go jako szablonu dla własnej wersji.

Sven
źródło
1

Co robisz, jeśli zawsze potrzebujesz najnowszej wersji?

  1. Jak już wspomniano , użyj backportów.

  2. Tylko niewielki podzbiór pakietów Debiana jest importowany, więc sugeruję użycie Testowania Debiana . Zapewnia dobrą równowagę między stabilnością a aktualnością i jest w pewnym sensie niczym tocząca się dystrybucja.

  3. Jeśli jesteś nieco bardziej odważny, użyj Debian Unstable . Twierdzi się, że jest dość stabilny. Niektórzy nawet posuwają się nawet do twierdzenia, że ​​jest bardziej stabilny niż niektóre „stabilne” wydania dystrybucji. W każdym razie Unstable to miejsce, w którym zwykle pojawiają się nowe wersje pakietów. Zwykle siedzą tam przez około 10 dni, aby umożliwić testowanie, przed migracją do testowania.

  4. Nawet używając tych dwóch, możesz wciąż nie mieć najnowszych wersji. W takim przypadku spójrz na Debian Experimental . Jest zwykle używany, gdy nowe pakiety są zbyt destrukcyjne dla normalnych archiwów (niestabilne i testowanie).

  5. Jeśli Experimental nadal nie ma wystarczająco nowych wersji oprogramowania, spójrz na PPA Ubuntu . Widziałem tam wersje oprogramowania nowsze niż to, czego brakuje we wszystkich powyższych archiwach. Używaj go jednak ostrożnie, ponieważ Ubuntu nie jest w 100% kompatybilne z Debianem (ale w większości przypadków nie powinno być żadnych problemów).

  6. Jeśli powyższe nie powiedzie się, myślę, że po prostu zbuduj własne pakiety, jak wspomniano .

tshepang
źródło
Ludzie twierdzący, że niestabilność Debiana jest bardziej stabilna niż stabilizacja innych dystrybucji, w najlepszym razie żartują. Niestabilne zmiany każdego dnia, stabilne to stałe repozytorium. Niestabilność nie oznacza, że ​​się zawiesi, ale oznacza, że ​​programiści wprowadzają wiele zmian w pakietach. Stabilny oznacza, że ​​został wydany i zostaną dodane tylko poprawki bezpieczeństwa. Nigdy nie miałem dziwnych awarii działających niestabilnie. Widziałem, jak paczki się psują i problemy z zależnością po aktualizacji, uwaga ;-) Jak to wszystko wypada w porównaniu do „stabilnych” wydań innych dystrybucji jest poza mną. W tym kontekście nie ma „bardziej stabilnego”. Zmienia się lub nie.
Arjan Drieman
@ArjanDrieman: w rzeczywistości ci ludzie nie żartują, i w tym kontekście mówią, że jest bardziej odporny na awarie.
tshepang
W najlepszym razie nadal żartują. Naprawdę widziałem, jak ludzie o tym żartują. Mikro-płomień dystrybucyjny ;-) Z czasem korzystałem z kilku dystrybucji i nigdy nie miałem dziwnych awarii z innymi, Ludzie, którzy twierdzą, że poważnie nie mogą poprzeć badań ani statystyk. To może być ignorancja, arogancja, uprzedzenia, cokolwiek ... ale czy to jest lepsze niż żart? Czy możesz mi powiedzieć, kim są ci tajemniczy „niektórzy” ?, więc mogę ich zapytać o ich badania? „Niektórzy nawet idą tak daleko”… to są słowa łasicy. Co chciałbyś w odpowiedzi, faktach lub popularnej opinii i dwuznacznych twierdzeniach?
Arjan Drieman
1
@Arjan Drieman: Zgadzam się z tym, że jestem niestabilny, mogę „czasem” zasłużyć na swoją nazwę. Oddajesz stabilność za zbliżanie się do krawędzi, każdy, kto twierdzi, że tak nie jest, jest w najlepszym razie nieuczciwy. Ogólnie jest zaskakująco stabilny, ale stabilność nie jest najwyższym priorytetem dla niestabilnych. Ja również zgadzam się z tobą, jeśli chodzi o „śliskie” sformułowanie. To prawie mechanizm obronny, ponieważ każde bezwzględne / bezpośrednie oświadczenie jest natychmiast atakowane.
JM Becker