Jak mogę uruchomić stabilny Debian, ale zainstalować niektóre pakiety z testów?

206

Załóżmy, że korzystasz z serwera i nie chcesz uaktualniać do wersji Testing (Squeeze) ze Stable (Lenny), aby po prostu zainstalować wymagany pakiet lub dwa.

Jaki jest najlepszy sposób instalowania tylko niektórych pakietów z Testowania?

Gareth
źródło
2
Oto co mówi najnowsza oficjalna dokumentacja: Pakiety z mieszanego źródła archiwów .
Alexey,

Odpowiedzi:

183

Wydaje się, że wiele osób obawia się mieszania stabilnego z testowaniem, ale szczerze mówiąc, testowanie jest samo w sobie dość stabilne, a przy odpowiednich preferencjach i sprawdzaniu rozwiązań można uniknąć „dryfu stabilności”, który stawia swoje podstawowe pakiety na niestabilnej ścieżce.

„Testowanie jest dość stabilne?” , ty pytasz. Tak. Aby pakiet mógł przejść z niestabilnego na testowy, musi mieć zero otwartych błędów przez 10 kolejnych dni. Są szanse, że szczególnie w przypadku bardziej popularnych pakietów ktoś prześle raport o błędzie dotyczący niestabilnej wersji, jeśli coś jest nie tak.

Nawet jeśli nie chcesz mieszać środowisk, fajnie jest mieć taką opcję na wypadek, gdybyś natknął się na coś, co wymaga nowszej wersji niż stabilna.

Oto, co zalecam do skonfigurowania tego:

Najpierw utwórz następujące pliki w /etc/apt/preferences.d:

stable.pref:

# 500 <= P < 990: causes a version to be installed unless there is a
# version available belonging to the target release or the installed
# version is more recent

Package: *
Pin: release a=stable
Pin-Priority: 900

testing.pref:

# 100 <= P < 500: causes a version to be installed unless there is a
# version available belonging to some other distribution or the installed
# version is more recent

Package: *
Pin: release a=testing
Pin-Priority: 400

unstable.pref:

# 0 < P < 100: causes a version to be installed only if there is no
# installed version of the package

Package: *
Pin: release a=unstable
Pin-Priority: 50

experimental.pref:

# 0 < P < 100: causes a version to be installed only if there is no
# installed version of the package

Package: *
Pin: release a=experimental
Pin-Priority: 1

(Nie bój się niestabilnych / eksperymentalnych rzeczy tutaj. Priorytety są na tyle niskie, że nigdy nie będzie automatycznie instalować żadnych z tych rzeczy. Nawet gałąź testowa zachowa się, ponieważ będzie tylko instalować pakiety, które chcesz być w testach).

Teraz tworzymy pasujący zestaw dla /etc/apt/sources.list.d:

stable.list: Skopiuj z oryginału /etc/apt/sources.list. Zmień nazwę starego pliku na coś podobnego sources.list.orig.

testing.list: Tak samo jak stable.listz wyjątkiem testing.

unstable.list: Tak samo jak stable.listz wyjątkiem unstablei usuń listy zabezpieczeń.

experimental.list: Tak samo jak unstable.listz wyjątkiem experimental.

Możesz także dodać znak oldstablein sources.lists.di preferences.d(użyj priorytetu 1), chociaż ten przydomek będzie miał tendencję do wygasania i znikania przed następnym stabilnym cyklem. W takich przypadkach możesz użyć http://archive.debian.org/debian/i „zakodować na stałe” wersję Debiana (etch, lenny itp.).

Aby zainstalować testową wersję pakietu, po prostu użyj aptitude install lib-foobar-package/testinglub po prostu wskocz do GUI aptitude i wybierz wersję wewnątrz szczegółów pakietu (naciśnij enter na pakiecie, na który patrzysz).

Jeśli otrzymujesz skargi na konflikty pakietów, najpierw sprawdź rozwiązania. W większości przypadków pierwszym będzie „nie instaluj tej wersji”. Naucz się korzystać z opcji resolvera akceptowania / odrzucania dla pakietu. Na przykład, jeśli instalujesz pakiet / testowanie foobar, a pierwszym rozwiązaniem jest „nie instaluj pakietu / testowanie foobar”, zaznacz ten wybór jako odrzucony, a inne rozwiązania nigdy nie zmienią tej ścieżki. W takich przypadkach prawdopodobnie będziesz musiał zainstalować kilka innych pakietów testowych.

Jeśli robi się zbyt włochaty (na przykład próbuje zaktualizować libc, jądro lub inny ogromny system rdzenia), możesz albo odrzucić te ścieżki aktualizacji, albo po prostu całkowicie zrezygnować z początkowej aktualizacji. Pamiętaj, że zaktualizuje rzeczy do testowania / niestabilności tylko, jeśli na to pozwolisz.

EDYCJA: Naprawiono niektóre piny priorytetowe i zaktualizowałem listę.

Brendan Byrd
źródło
4
Czy działałeś apt-get updatepo utworzeniu plików konfiguracyjnych?
Flow
3
Używam tej metody, co wydaje mi się niespójne. „apt-get install -t testowanie aplikacji X” nie daje tego samego, co „apt-get install-testowanie aplikacji X / testowanie” (patrz serverfault.com/q/646934/132528 ) - domyślam się, że chodzi o sposób, w jaki ta metoda powoduje, że priorytety zostaną rozwiązane, nawet jeśli nie jest to dla mnie intuicyjne?
eugenevd
7
WAŻNE: autor wybrał wartość preferencji przypinania dla stabilnego / bezpieczeństwa, która jest wyższa niż domyślna wartość zwolnienia ... więcej informacji
Alex Ryan
7
Ta odpowiedź właśnie zepsuła mój system. Po próbie wykonania sudo apt-get updatewystąpił błąd aktualizacji. Następnie uruchomiłem ponownie, co dało mi Xsession error, uruchomiłem ponownie, a teraz nie mam GUI. /dev/sda1/jest teraz pełna. Wspaniały.
luchonacho
3
Zamierzam polecić ludziom, aby zwracali uwagę na negatywne komentarze do tego postu. Właśnie mnie to zaniepokoiło w ostatniej aktualizacji Debiana 9, która została poprawiona poprzez cofnięcie tych zmian. Posłuchaj porady w artykule Debiana na ten temat: wiki.debian.org/DontBreakDebian (przewiń do Nie twórz FrankenDebian)
Brandon Arnold
98

W /etc/apt/apt.conf.ddodać następujący plik

99defaultrelease:

APT::Default-Release "stable";

in /etc/apt/sources.list.d- dodaj adresy URL do testowania / niestabilnych źródeł

stable.list:

deb     http://ftp.de.debian.org/debian/    stable main contrib non-free
deb-src http://ftp.de.debian.org/debian/    stable main contrib non-free

deb     http://security.debian.org/         stable/updates  main contrib non-free

testing.list:

deb     http://ftp.de.debian.org/debian/    testing main contrib non-free
deb-src http://ftp.de.debian.org/debian/    testing main contrib non-free

deb     http://security.debian.org/         testing/updates  main contrib non-free

biegać

apt-get update

a następnie zainstaluj to, czego potrzebujesz

apt-get -t testing install something

Bądź bardzo bardzo ostrożny, jeśli instalujesz rzeczy, które mają wiele zależności. Najlepiej nie rób tego podczas produkcji.

Możesz także spróbować szczęścia w backportach lub podobnym repozytorium.

pQd
źródło
1
Łał. To było szybkie. Publikowałem, żeby podzielić się informacjami, które właśnie napotkałem! Niezłe!
Gareth,
Nigdy wcześniej nie korzystałem z metody apt.conf. Wydaje się, że metoda pliku preferencji jest prostsza, ale daje mniej precyzyjną kontrolę. - Coops
Coops
4
Odpowiedź wymaga aktualizacji; ta konfiguracja całkowicie zniszczy wszystko, gdy ściśnięcie stało się stabilne, a Lenny stał się stary.
El Yobo,
1
Nie można go już użyć, zaktualizuj
Lothar
4
w nowszych wersjach Debiana nie ma pliku apt.conf, zamiast tego edytuj /etc/apt/apt.conf.d/70debconf
Hayden Thring
49

apt_preferences

Zdefiniuj domyślny poziom, na który system powinien dokonać „bezpiecznej aktualizacji” do pliku / etc / apt / preferences:
man apt_preferences

Z apt_preferences możesz wiele zrobić, ale dla uproszczenia ...

Musiałem zainstalować pojedynczy pakiet (autoMysqlBackup), który był dostępny tylko podczas testowania. Rozwiązaniem było dodanie następujących opcji do / etc / apt / preferences:

Explanation: Uninstall or do not install any Debian-originated
Explanation: package versions other than those in the stable distro
Package: *
Pin: release a=stable
Pin-Priority: 900

Package: *
Pin: release o=Debian
Pin-Priority: -10

Po dodaniu wielu repozytoriów do pliku /etc/apt/sources.list aptitude będzie teraz aktualizować tylko do określonej wersji, nawet jeśli repozytoria późniejszych wersji są wymienione (w tym przypadku „stabilne”).

deb http://mirror.aarnet.edu.au/debian/ lenny main
deb-src http://mirror.aarnet.edu.au/debian/ lenny main
deb http://mirror.aarnet.edu.au/debian/ squeeze main
deb-src http://mirror.aarnet.edu.au/debian/ squeeze main

Aby zainstalować ten pakiet, wystarczy:

$ aptitude install -t testing packageName 
Gareth
źródło
To także dobra metoda, nie tak szybka jak apt.conf, ale pozwala kontrolować względnie wszystkie swoje źródła.
Coops
2
Jest to zbyt skomplikowane dla zadania ... Użycie APT :: Default-Release powoduje ustawienie priorytetu numeru PIN wersji na 990 (podobnie jak w przypadku ustawienia 900), a negatywne przypinanie dla reszty nie jest tak naprawdę potrzebne. Podczas aktualizacji Dist stabilny pakiet i tak ma priorytet i jak tylko wypiszesz coś w linii poleceń, jego negatywny priorytet przypinania zostanie w większości zignorowany.
Raphaël Hertzog
Nie jestem pewien, jak odpowiedzieć na ciebie @Raphael. Wydaje się to bardzo eleganckim sposobem robienia rzeczy. Stosowałem apt pin wiele lat temu, ale tak naprawdę nigdy go nie „dostałem”. Przykłady, których użyłem powyżej, pochodzą bezpośrednio ze strony podręcznika użytkownika apt_preferences.
Gareth,
2
Potwierdź, że działa dobrze przy ściskaniu
tomfanning
3
@ Lothar: Działa na Debianie 6. To, że plik nie istnieje, nie oznacza, że ​​nie działa. Wystarczy utworzyć plik i dodać ustawienia. Cytat ze strony podręcznika: „Jeśli nie ma pliku preferencji lub jeśli w pliku nie ma wpisu dotyczącego konkretnej wersji, priorytetem przypisanym tej wersji jest priorytet dystrybucji, do której należy ta wersja”.
rzetterberg
13

Jeśli chodzi o wartość, ogólna rada, którą zawsze widziałem, to „Nie mieszaj stabilnego z niczym”. Większość samouczków dotyczących systemów mieszanych służy do testowania mieszania i jest niestabilna.

Przyczyną wydaje się być to, że jeśli zmieszasz stabilne z testowaniem, bardzo podstawowe pakiety (takie jak libc6) będą wymagały aktualizacji (w celu zainstalowania oprogramowania z testowania), a gdy te podstawowe pakiety przejdą do testowania, cały system może dryfować w ten sposób.

Oto dwie alternatywy:

  1. Użyj backportów .
  2. Zainstaluj wiersz źródłowy z testowania i spróbuj zbudować późniejszą wersję, którą chcesz ze źródła .
Telemachus
źródło
1
Zgadzam się. Właśnie próbowałem zaktualizować libdvdread4 z testów z powodu błędu w wersji w wheezy / stable. Chce jednak wprowadzić najnowszą bibliotekę libc. Więc właśnie wziąłem pakiet źródłowy libdvdread4 ze stabilnego i załatałem go zmianą źródła w 1 linii i przebudowałem go. O wiele lepsze niż pobieranie różnego rodzaju pakietów z testów. Teraz wszystkie pakiety są wciąż „stabilne” i mam tylko 1-liniową zmianę, której potrzebuję.
dgrant
12

Dokumentacja debiana jest obszerna na ten temat i zdecydowanie radzę się zagłębiać, ponieważ naprawdę odkryje ona piękno systemu debian.

Zobacz, jak zachować mieszany system , objaśni wszystko, czego potrzebujesz.

tomdeb
źródło
1
Wydaje się, że jest to ta sama metoda, której użyto w odpowiedzi przez @pQd, więc nie dotyczy debian> = 6.0. Również tytuł linku mówi teraz „przestarzała dokumentacja”. Również głównie odpowiedź tylko link.
dequis
Podczas gdy @dequis ma rację, ponieważ łącze wydaje się nieaktualne, po prostu postępowałem zgodnie z instrukcjami na Debianie 8 (testowanie), aby zainstalować pakiet z niestabilnego i wszystko wydaje się działać idealnie. Czy ktoś ma aktualny link do dokumentacji?
domsson
1
To może być to, czego szukasz: debian.org/doc/manuals/debian-reference/...
tomdeb
7

Innym sposobem, który może zapobiec instalacji zbyt wielu zależności od Testowania lub Sida, jest to: powiesz apt-get, aby pozyskał źródło pakietu z Testowania lub Sida i utworzyłeś pakiet dla swojego systemu za pomocą narzędzi Debiana (nie musisz ręcznie majstrować ze źródłami).

Cytowanie stąd:
https://wiki.debian.org/DebianUnstable#How_do_I_backport_a_sid_package_to_testing_or_stable.3F

Jak mogę przenieść pakiet sid do wersji testowej lub stabilnej?

Zainstaluj źródło Debiana (i narzędzia programistyczne, zwłaszcza debhelper, devscripts i niezbędne do kompilacji), a następnie skompiluj pakiet.

Krok po kroku:

add a deb-src line for sid to your sources.list

apt-get update

apt-get build-dep PACKAGE_NAME

apt-get -b source PACKAGE_NAME 

Wynikowe debaty powinny znajdować się w bieżącym katalogu i można je zainstalować za pomocą dpkg -i the.deb.

gerlos
źródło
4

Robię to od dłuższego czasu, aby mieć pewność, że jest wystarczająco bezpieczny i wygodny. Przy poniższej konfiguracji stabilna wersja zostanie zainstalowana domyślnie, jednak Aptitude pozwoli również wybrać wersję zsynchronizowaną lub niestabilną, jeśli to pożądane:

wprowadź opis zdjęcia tutaj

Są cztery rzeczy, które należy edytować, należy ustawić domyślną wersję przypinania, źródła wymagają backportów i dodać niestabilne, obniżając priorytet przypinania backportów / niestabilnych pakietów, a ustawienia wyświetlania aptitude należy zmodyfikować, aby wyświetlać przypinanie.

  • Utwórz plik „/etc/apt/apt.conf.d/10defaultrelease” i dodaj jego zawartość w następujący sposób:
Apt :: default-Release "stable";
  • Edytuj swój plik „/etc/apt/sources.list”, aby dodać niestabilne i backportowe źródła, aby wyglądały mniej więcej tak:
# deb cdrom: [Debian GNU / Linux 6.0.0 _Squeeze_ - Official Multi-architecture amd64 / i386 NETINST # 1 20110205-14: 45] / squeeze main

deb http://ftp.us.debian.org/debian/ squeeze main
deb-src http://ftp.us.debian.org/debian/ squeeze main

deb http://security.debian.org/ squeeze / updates main
deb-src http://security.debian.org/ squeeze / updates main

# squeeze-update, wcześniej znany jako „niestabilny”
deb http://ftp.us.debian.org/debian/ squeeze-updates main
deb-src http://ftp.us.debian.org/debian/ squeeze-updates main

# ściśnij backports
# http://backports.debian.org/Instructions/
deb http://backports.debian.org/debian-backports squeeze-backports main

# niestabilny
# http://wiki.debian.org/AptPreferences
deb http://ftp.us.debian.org/debian/ unstable main
deb-src http://ftp.us.debian.org/debian/ unstable main

# non free ex. Sun Java
#deb http://ftp.us.debian.org/debian/ squeeze non-free
# deb-src http://ftp.us.debian.org/debian/ squeeze non-free
  • Edytuj etc/apt/preferencesplik przypinania - jeśli plik nie istnieje, utwórz go.
# Priorytety przypinania pakietów
# Patrz http://wiki.debian.org/AptPreferences i http://manpages.debian.net/cgi-bin/man.cgi?query=apt_preferences
#
# W łupinie orzecha instalowany jest najwyższy PIN
#
# Domyślne ustawienia są następujące, które są dodatkiem do naszych ustawień:
# 990 - dla wersji, które nie są zainstalowane, ale NIE należą do naszego ustawienia `APT :: Default-Relase" stable ".
# 500 - dla wersji, które nie są zainstalowane i nie należą do wydania docelowego
# 100 - w przypadku pakietów, które już zostały zainstalowane, oznacza to także inne wersje tego samego pakietu
# 1 - dla pakietów eksperymentalnych; paczki z „NotAutomatic: tak”
#
# Nasze przypinki
# 400 - backporty, które można bezpiecznie zainstalować bez potrzeby aktualizowania innych pakietów
# 50 - niestabilne pakiety, instalacja wymuszona na ekranie szczegółów, może powodować konflikty

Opakowanie: *
Pin: zwolnij n = wyciśnij backports
Priorytet pinów: 400

Opakowanie: *
Pin: zwolnij a = niestabilny
  • Utwórz „/etc/apt/apt.conf.d/100guiconf” i skonfiguruj Aptitude, aby wyświetlał informacje o przypinaniu.
Aptitude :: UI :: Package-Display-Format "% c% a% M% p% Z% v% V% i";
Daniel Sokołowski
źródło
1
To tylko aktualizacja, którą oprócz powyższego postanowiłem uruchomić wszystkie moje pakiety systemowe z repozytoriów programistycznych. Więc w source.listnim powinno się podać nazwę kodową jessiezamiast squeeze. Polityka Debiana testingjest prawie stabilna, a pakiety są prawie tak nowe, jak z unstablerepozytorium. Brakuje mi tutaj miejsca, więc proszę spojrzeć na: wiki.debian.org/DebianReleases , wiki.debian.org/StableUpdates i wiki.debian.org/StableProposedUpdates ; dwa ostatnie to dodatkowe źródła repozytorium.
Daniel Sokołowski,
2

Jeśli twój wybór pakietów jest bardziej zaangażowany lub instalacja zostanie powtórzona na wielu komputerach, możesz rozważyć utworzenie prywatnego repozytorium, które będzie odzwierciedlać podzbiór oficjalnych repozytoriów. Wymaga to trochę pracy, aby skonfigurować repozytorium, ale nagroda jest łatwa do utrzymania przy minimalnym poziomie konfiguracji na każdym kliencie i powtarzalnych wynikach podczas wykonywania dziesiątek instalacji. Uważam to za pomocne, nawet gdy instalowany jest tylko jeden lub dwa pakiety, i używam tej metody do automatyzacji i obsługi instalacji w chmurze. Pojedynczy serwer na taniej VPS może obsłużyć dziesiątki prywatnych repozytoriów.

Aby skonfigurować serwer prywatnego repozytorium:

# Install aptly.
apt-get install aptly

# Create local mirror (choose a source mirror near you).
aptly mirror create -filter="mirror-contains-no-packages" stretch-roundcube http://httpredir.debian.org/debian stretch main

# Configure filters for local mirror.
aptly mirror edit -filter="Name (% roundcube*)" stretch-roundcube

# Update local mirror.
aptly mirror update stretch-roundcube

# Drop previously published repositories and mirrors, if running these commands in a script.
aptly publish drop stretch

# Drop snapshot, if running these commands in a script.
aptly snapshot drop stretch-roundcube

# Create new snapshot.
aptly snapshot create stretch-roundcube from mirror stretch-roundcube

# Publish snapshot.
aptly publish snapshot -architectures=i386,amd64 -distribution=stretch -component=roundcube -label="Your Name" -origin="Your Name" stretch-roundcube

Następnie skonfiguruj wybrany serwer WWW, aby obsługiwał pliki repozytorium statycznego. Prawdopodobnie chroń repozytorium za pomocą certyfikatu bezpieczeństwa i podstawowego uwierzytelnienia.

Aby automatycznie zarządzać prywatnym repozytorium i pobierać aktualizacje z góry, umieść powyższe w skrypcie i uruchom z zadania cron.

Aby skonfigurować komputer kliencki, na komputerze klienckim:

# Configure private repository without authentication.
echo 'deb http://private.repository.example.com/ stretch roundcube' > /etc/apt/sources.list.d/private.repository.example.com.list

# Configure private repository with authentication.
echo 'deb https://hostname:[email protected]/ stretch roundcube' > /etc/apt/sources.list.d/private.repository.example.com.list
apt-get install apt-transport-https

# Update.
apt-get update

# Install package.
apt-get install roundcube

Aby utrzymywać komputer kliencki i pobierać wszystkie aktualizacje prywatnego repozytorium, na komputerze klienckim:

# Update.
apt-get update

# Upgrade.
apt-get upgrade
Daniel Kauffman
źródło
1

Inną opcją jest pobranie pakietu testowego zamiast tego. APT może automatycznie skompilować pakiet źródłowy po pobraniu. W ten sposób testowanie aktualizacji nie wpłynie na twoje stabilne pakiety. Jedynym kompromisem jest to, że zajmie to więcej czasu niż samo pobranie i instalacja pakietu binarnego.

Aby skonfigurować APT do pobierania pakietów źródłowych z testów, wystarczy dodać:

deb-src http://<your debian mirror here> testing main

Jeśli chcesz tylko śledzić bieżące testy, a nie przyszłe testy, zastąp „testowanie” bieżącym kryptonimem (od tego momentu jest to „buster”)

temy
źródło