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?
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?
Odpowiedzi:
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.list
z wyjątkiem testing
.
unstable.list
: Tak samo jak stable.list
z wyjątkiem unstable
i usuń listy zabezpieczeń.
experimental.list
: Tak samo jak unstable.list
z wyjątkiem experimental
.
Możesz także dodać znak oldstable
in sources.lists.d
i 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/testing
lub 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ę.
apt-get update
po utworzeniu plików konfiguracyjnych?
sudo apt-get update
wystą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.
W /etc/apt/apt.conf.d
dodać 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.
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
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:
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.
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.
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:
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.
Apt :: default-Release "stable";
# 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
etc/apt/preferences
plik 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
Aptitude :: UI :: Package-Display-Format "% c% a% M% p% Z% v% V% i";
source.list
nim powinno się podać nazwę kodową jessie
zamiast squeeze
. Polityka Debiana testing
jest prawie stabilna, a pakiety są prawie tak nowe, jak z unstable
repozytorium. 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.
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:password@private.repository.example.com/ 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
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”)