Vraag Hoe kan ik Debian-stabiel uitvoeren, maar sommige pakketten van testen installeren?


Stel dat u een server gebruikt en niet wilt upgraden naar Testen (Squeeze) vanuit Stable (Lenny) om zojuist een vereist pakket of twee te installeren.

Wat is de beste manier om alleen bepaalde pakketten uit Testen te installeren?


180
2018-06-09 07:53


oorsprong


Dit is wat de nieuwste officiële documentatie te zeggen heeft: Pakketten van gemengde bron van archieven. - Alexey


antwoorden:


Veel mensen lijken bang voor stabiel mixen met testen, maar eerlijk gezegd is testen redelijk stabiel en met de juiste voorkeuren en het controleren van de oplossing, kun je de "stabiliteitsverandering" vermijden die je kernpakketten op het onstabiele pad plaatst.

"Testen is redelijk stabiel ??", je vraagt. Ja. Om een ​​pakket te migreren van instabiel naar testen, moet het gedurende tien opeenvolgende dagen nul open fouten bevatten. De kans is groot dat iemand, vooral voor de meer populaire pakketten, een bugrapport gaat indienen voor een onstabiele versie als er iets mis is.

Zelfs als je de omgevingen niet wilt mixen, is het toch fijn om de optie daar te hebben voor het geval je een ding tegenkomt dat een nieuwere versie vereist dan wat in een stabiele omgeving zit.

Dit is wat ik aanbeveel om dit op te zetten:

Maak eerst de volgende bestanden in /etc/apt/preferences.d:

security.pref:

Package: *
Pin: release l=Debian-Security
Pin-Priority: 1000

stable.pref:

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

testing.pref:

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

unstable.pref:

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

experimental.pref:

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

(Wees niet bang voor de onstabiele / experimentele dingen hier.) De prioriteiten zijn laag genoeg zodat het nooit automatisch dat soort dingen zal installeren. Zelfs de testafdeling zal zich gedragen, omdat het alleen de pakketten gaat installeren die je wilt zijn in het testen.)

Nu, een bijpassende set maken voor /etc/apt/sources.list.d:

security.list:

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

stable.list:

deb     http://mirror.steadfast.net/debian/ stable main contrib non-free
deb-src http://mirror.steadfast.net/debian/ stable main contrib non-free
deb     http://ftp.us.debian.org/debian/    stable main contrib non-free
deb-src http://ftp.us.debian.org/debian/    stable main contrib non-free

testing.list: Hetzelfde als stable.list, behalve met testing.

unstable.list: Hetzelfde als stable.list, behalve met unstable.

experimental.list: Hetzelfde als stable.list, behalve met experimental.

U kunt de spiegel steadfast.net vervangen door wat u maar wilt. Ik zou het aanraden om te gebruiken netselect-apt om de snelste spiegel te vinden, en gebruik die als eerste keuze. De ftp.us.debian.org kan als back-up worden gebruikt. Het is ook belangrijk om de voorwaarden te gebruiken stable, testing, unstable, enz., in plaats van squeeze, wheezy, sid, etc., sinds stable is een bewegend doelwit en wanneer het tijd is om te upgraden naar de nieuwste stabiele, zal apt / aptitude dat automatisch uitvogelen.

U kunt ook een toevoegen oldstable in sources.lists.d en preferences.d (gebruik een prioriteit van 1), hoewel deze naam de neiging heeft om te vervallen en te verdwijnen voor de volgende stabiele cyclus. In dergelijke gevallen kunt u gebruiken http://archive.debian.org/debian/ en "hardcode" de Debian-versie (ets, lenny, etc.).

Om de testversie van een pakket te installeren, gebruikt u eenvoudigweg aptitude install lib-foobar-package/testing, of spring gewoon in de GUI van aptitude en selecteer de versie binnen de details van het pakket (druk op enter op het pakket dat u bekijkt).

Als u klachten krijgt over pakketconflicten, moet u eerst naar de oplossingen kijken. In de meeste gevallen zal de eerste "niet deze versie installeren" zijn. Leer de resolutieverzoeken per pakket accepteren / weigeren te gebruiken. Als u bijvoorbeeld foobar-pakket / testen installeert en de eerste oplossing is "foobar-pakket / testen niet installeren", markeer die keuze dan als afgewezen, en de andere oplossingen zullen nooit meer op dat pad blijven. In dergelijke gevallen zult u waarschijnlijk een paar andere testpakketten moeten installeren.

Als het te harig wordt (zoals het probeert om libc of de kernel of een ander enorm kernsysteem te upgraden), dan kun je die upgradepaden weigeren of gewoon helemaal uit de initiële upgrade. Vergeet niet dat het alleen dingen gaat upgraden naar testen / onstabiel als je dat toestaat.


166
2018-04-23 02:38



Bedankt, gebruikte deze methode en alles werkt zoals ik het verwachtte! - Brad F Jacobs
Ik probeer dit te gebruiken, maar ik kan helemaal geen afhankelijkheden oplossen. Het lijkt niet op apt-get, noch zal aptitude zoeken naar de afhankelijkheden in de testreposities. Is er een manier om dat op te lossen? - Tamás Szelei
Heb je gerend apt-get update nadat je de configuratiebestanden hebt gemaakt? - Flow
BELANGRIJK: de auteur heeft een pinning-voorkeurswaarde gekozen voor stable / security hoger dan de standaardwaarde voor vrijgave ... zie serverfault.com/a/653552/120130 voor meer informatie - Alex Ryan
Dit antwoord brak gewoon mijn systeem. Na een poging om te doen sudo apt-get update, Ik kreeg een updatefout. Toen opnieuw opgestart, wat mij gaf Xsession error, opnieuw opgestart, en nu heb ik geen gui. de /dev/sda1/ is nu vol. Super goed. - luchonacho


In /etc/apt/apt.conf.d voeg het volgende bestand toe

99defaultrelease:

APT::Default-Release "stable";

in /etc/apt/sources.list.d - voeg urls toe voor testen / onstabiele bronnen

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

rennen

apt-get update

en installeer dan wat je nodig hebt

apt-get -t testing install something

Wees heel voorzichtig als je dingen installeert die veel afhankelijkheden hebben. Doe dit bij voorkeur niet tijdens de productie.

Je kunt net zo goed je geluk beproeven backports of een soortgelijke repository.


90
2018-06-09 07:57



Wauw. Dat was snel. Ik postte om de informatie te delen die ik zojuist had gezien! Goed zo! - Gareth
Ik heb de apt.conf-methode nooit eerder gebruikt. Het lijkt eenvoudiger dan de methode van het voorkeurenbestand, maar geeft u minder nauwkeurige controle. - Coops - Coops
Antwoord moet worden geüpgraded; deze config zal de dingen compleet kapot maken nu squeeze stabiel is geworden en lenny oud is geworden. - El Yobo
Niet meer bruikbaar, update - Lothar
in nieuwere Debian-releases is er geen apt.conf-bestand, maar bewerkt u /etc/apt/apt.conf.d/70debconf - Hayden Thring


apt_preferences

Definieer het standaardniveau dat het systeem moet 'veilig upgraden' naar in het bestand / etc / apt / preferences:
man apt_preferences

Er is veel wat je kunt doen met apt_preferences maar omwille van de eenvoud ...

Ik moest een enkel pakket installeren (autoMysqlBackup) dat alleen beschikbaar was in Testen. De oplossing was om het volgende toe te voegen aan / 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

Met meerdere repository's toegevoegd aan /etc/apt/sources.list zal aptitude nu alleen upgraden naar uw opgegeven release, ook al staan ​​de latere repos van de release vermeld (in dit geval 'stabiel').

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

Dus om dat pakket te installeren, alles wat je hoeft te doen is:

$ aptitude install -t testing packageName 

46
2018-06-09 08:04



Dit is ook een goede methode, niet zo snel als apt.conf, maar je kunt al je verschillende bronnen op een relatieve manier beheren. - Coops
Dit is te ingewikkeld voor de taak ... Met behulp van APT :: Default-Release wordt de pincode van de release ingesteld op 990 (vergelijkbaar met hoe u deze hebt ingesteld op 900) en de negatieve pinning voor de rest is niet echt nodig .. tijdens dist-upgrades heeft het stabiele pakket sowieso prioriteit en zodra u iets expliciet op de opdrachtregel plaatst, wordt de negatieve pinningprioriteit meestal genegeerd. - Raphaël Hertzog
Ik weet niet zeker hoe ik u moet antwoorden @Raphael. Het lijkt een zeer elegante manier om dingen te doen. Ik heb apt al jaren eerder gebruikt, maar ik heb het nooit echt 'gekregen'. De voorbeelden die ik hierboven heb gebruikt, zijn rechtstreeks afkomstig van de manpagina apt_preferences. - Gareth
Bevestig dat dit goed werkt bij squeeze - tomfanning
@Lothar: Het werkt wel op Debian 6. Alleen omdat het bestand niet bestaat, wil dat nog niet zeggen dat het niet werkt. Maak gewoon het bestand en voeg de instellingen toe. Citaat van de man-pagina: "Als er geen voorkeurenbestand is of als er geen vermelding in het bestand is die van toepassing is op een bepaalde versie, dan is de prioriteit die aan die versie is toegewezen de prioriteit van de distributie waartoe die versie behoort." - rzetterberg


De debian-documentatie is uitgebreid in het onderwerp en ik adviseer sterk om in te graven, omdat het echt de schoonheid van het debian-systeem zal onthullen.

Kijk even naar Hoe een gemengd systeem te houden, het zal alles uitleggen wat je moet weten.


12
2018-06-09 08:24



Dit lijkt dezelfde methode te zijn als gebruikt in het antwoord door @pQd, dus het is niet van toepassing op debian> = 6.0. Ook de koppelingstitel zegt nu "verouderde documentatie". Ook meestal alleen antwoord koppelen. - dequis
Hoewel @dequis gelijk heeft dat de link verouderd lijkt te zijn, volgde ik gewoon de instructies op een Debian 8 (testen) om een ​​pakket van onstabiel te installeren, en alles lijkt perfect te werken. Heeft iedereen een up-to-date documentatielink? - domsson
Dit is waarschijnlijk wat je zoekt:debian.org/doc/manuals/debian-reference/... - tomdeb


Voor wat het waard is, is het algemene advies dat ik altijd heb gezien: "Meng niets stabiel met wat dan ook." De meeste handleidingen voor gemengde systemen zijn bedoeld voor het combineren van testen en onstabiel.

De redenering lijkt te zijn dat als je stabiel combineert met testen, zeer eenvoudige pakketten (zoals libc6) updates vereisen (om software te installeren tijdens het testen), en zodra deze basispakketten naar testen gaan, kan het hele systeem op die manier afdrijven.

Hier zijn twee alternatieven:

  1. Gebruik backports.
  2. Installeer een broncode uit de test en probeer het bouw de latere versie die je wilt uit de bron.

10
2018-06-09 13:09



Daar ben ik het mee eens. Ik heb net geprobeerd om libdvdread4 te updaten vanwege een bug in de versie in wheezy / stable. Het wil echter de nieuwste libc inbrengen. Dus pakte ik zojuist het bronpakket voor libdvdread4 uit stable en patched het met de 1-regel bronverandering en herbouwde het. Veel beter dan allerlei soorten pakketten uit de test halen. Nu zijn alle pakketten nog steeds de "stabiele" en ik heb gewoon de 1-regelige wijziging die ik nodig heb. - dgrant


Een andere manier, die het installeren van te veel afhankelijkheden van Testen of Sid zou kunnen voorkomen, is deze: u zegt apt-get om de bron van het pakket van Testen of Sid te krijgen en een pakket voor uw systeem te maken met behulp van Debian-hulpprogramma's (handmatig tinker niet nodig) met bronnen).

Citaat van hier:
https://wiki.debian.org/DebianUnstable#How_do_I_backport_a_sid_package_to_testing_or_stable.3F

Hoe kan ik een sid-pakket backporteren naar testen of stabiel?

Installeer de Debian-bron (en vooral de ontwikkelingshulpmiddelen   debhelper, devscripts en build-essential), en bouw dan de   pakket.

Stap voor stap:

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 

De resulterende debs moeten in de huidige directory staan ​​en kunnen dat ook zijn   geïnstalleerd met dpkg -i the.deb.


7
2018-03-13 17:02





Ik doe het al geruime tijd om er zeker van te zijn dat het veilig genoeg is en handig kan worden gemaakt. Met de onderstaande setup wordt een stabiele versie standaard geïnstalleerd, maar Aptitude laat je desgewenst ook een backported of onstabiele versie kiezen:

enter image description here

Er zijn vier dingen die moeten worden bewerkt, de standaard pinning-release moet worden ingesteld, de bronnen hebben backports en onstabiel toegevoegd nodig, waardoor de pinningprioriteit van backports / onstabiele pakketten wordt verlaagd en de aptitude-display-instellingen moeten worden gewijzigd om pinning weer te geven.

  • Maak een '/Etc/apt/apt.conf.d/10defaultrelease' en maak de inhoud als volgt:
Apt :: standaard-Release "stable";
  • Bewerk je '/Etc/apt/sources.list' om onstabiele en backports-bronnen toe te voegen, zodat het er ongeveer zo uitziet:
# deb cdrom: [Debian GNU / Linux 6.0.0 _Squeeze_ - Officiële multi-architectuur 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, voorheen bekend als 'volatile'
deb http://ftp.us.debian.org/debian/ squeeze-updates main
deb-src http://ftp.us.debian.org/debian/ squeeze-updates main

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

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

# niet gratis ex. zon java
#deb http://ftp.us.debian.org/debian/ squeeze niet-free
# deb-src http://ftp.us.debian.org/debian/ squeeze niet-free
  • Bewerk etc/apt/preferences vastzetten bestand - als het bestand niet bestaat, maak het dan aan.
# Pincode vastzettende prioriteiten
# Zie http://wiki.debian.org/AptPreferences en http://manpages.debian.net/cgi-bin/man.cgi?query=apt_preferences
#
# In noots shell wordt de hoogste PIN geïnstalleerd
#
# Pining-standaard zijn als volgt die een aanvulling zijn op onze instellingen:
# 990 - voor versies die niet zijn geïnstalleerd maar wel tot onze `APT :: Default-Relase" stabiele "` -instelling behoren.
# 500 - voor versies die niet zijn geïnstalleerd en niet behoren tot de doelversie
# 100 - voor pakketten die al zijn geïnstalleerd, betekent dit ook andere versies van hetzelfde pakket
# 1 - voor experimentele pakketten; pakketten met "NotAutomatic: ja"
#
# Onze pinnings
# 400 - backports die veilig kunnen worden geïnstalleerd zonder de noodzaak om andere pakketten bij te werken
# 50 - onstabiele pakketten, geforceerd installeren in het detailscherm, kan resulteren in conflicten

Pakket: *
Pin: release n = squeeze-backports
Pin-Priority: 400

Pakket: *
Pin: release a = onstabiel
  • creëren '/Etc/apt/apt.conf.d/100guiconf' en om Aptitude in te stellen zodat het pinninginformatie toont.
Aptitude :: UI :: Package-Display-Format "% c% a% M% p% Z% v% V% i";

4
2018-02-04 22:59



Gewoon een update dat ik naast het bovenstaande heb afgerekend met het uitvoeren van al mijn systeempakketten van de 'testing' ontwikkelingsrepository's. Dus in source.list het zou de codenaam moeten zeggen jessie in plaats van squeeze. Het beleid van Debian testing is bijna stabiel en pakketten zijn bijna net zo nieuw als van de unstable repository. Ik heb hier te weinig ruimte dus kijk eens naar: wiki.debian.org/DebianReleases, wiki.debian.org/StableUpdates, en wiki.debian.org/StableProposedUpdates; de laatste twee zijn extra repositorybronnen. - Daniel Sokolowski


Als uw pakketkeuzes meer betrokken zijn of de installatie op meerdere machines zal worden herhaald, kunt u overwegen een privérepository in te stellen die een subset van de officiële repositories weerspiegelt. Dit vereist een beetje werk om de repository te configureren, maar de beloning is eenvoudig te onderhouden met een absoluut minimum aan configuratie op elke client en herhaalbare resultaten bij tientallen installaties. Ik vind dit nuttig, zelfs wanneer slechts een of twee pakketten worden geïnstalleerd, en gebruik deze methode voor het automatiseren en onderhouden van cloudinstallaties. Een enkele server op een goedkoop VPS kan tientallen privé-repositories aan.

Om uw private repository server te configureren:

# 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

Configureer vervolgens uw webserver naar keuze om de statische repositorybestanden te gebruiken. Bescherm eventueel de repository met een beveiligingscertificaat en basisverificatie.

Als u uw privérepository automatisch wilt onderhouden en upstream upstream wilt ophalen, plaatst u het bovenstaande in een script en voert u een cron-taak uit.

Om uw clientcomputer te configureren op uw clientcomputer:

# 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

Om uw client-machine te onderhouden en al uw persoonlijke repository-updates in te voeren, op uw client-computer:

# Update.
apt-get update

# Upgrade.
apt-get upgrade

2
2017-07-06 18:53





Een andere optie is om in plaats daarvan het bronpakket van testen te downloaden. APT kan het bronpakket automatisch bouwen nadat het is gedownload. Op deze manier worden uw stabiele pakketten niet beïnvloed door testupdates. De enige afweging is dat het meer tijd kost dan alleen het downloaden en installeren van het binaire pakket.

Als u APT wilt configureren om bronpakketten te downloaden tijdens het testen, voegt u gewoon toe:

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

Als u alleen de huidige testen en niet toekomstige tests wilt volgen, vervangt u 'testen' door de huidige codenaam (op dit moment is het 'buster')


0
2018-02-16 03:15