
Destul de des, atunci când se ocupă cu sistemul Linux este necesar să instaleze pachete într-o versiune diferită de cea care se află în depozitele. Cel mai des utilizate în acest scop a instala manual versiunea corectă a pachetului, urmat de congelare (dacă este cazul) sau de a construi un pachet de la sursă. În același timp, bazat pe Debian Linux standard de distribuție pachet de sistem de fixare APT de fixare, utilizarea care mai de preferat, cu atât mai mult pentru a lucra cu el este într-o clipă.
În primul rând, trebuie să înțelegem de ce să utilizeze instalarea manuală a pachetelor nedorite. Desigur, dacă este vorba despre un fel de bibliotecă separată pentru uz intern, de exemplu, pentru a construi PostgreSQL pe 1C, nu există nici un sens pentru a face un tam-tam, putem livra în condiții de siguranță pachetul manual și uitați în condiții de siguranță cu privire la aceasta. Destul de o altă problemă, dacă sunteți atât de stabilit un serviciu public, de exemplu, Apache server web și interpretul PHP.
În timpul nostru, accesul universal la informații pe Internet și canale de comunicare avansate de vulnerabilitate este distribuit pe scară largă în cel mai scurt timp posibil, ceea ce face ca o abordare responsabilă față de problema de actualizare software în timp util. În cazul setării manuale, și în special ansamblul sursei, responsabilitatea pentru susținerea în continuare se află în întregime pe tine. Va trebui să monitorizeze în mod independent, producția de actualizare și, de asemenea, să mențină în mod independent, software-ul curent pe server.
După cum arată practica - orice sistem vulnerabil, mai devreme sau mai târziu va fi hacked. Iar pentru a afla despre el, puteți cel puțin atunci când furnizorul de servicii de găzduire sau furnizorul de va pretinde că serverul trimite spam-ul, participa la DDoS-atac, sau chiar implicat în unele activități nefaste.
Ce este bun APT de fixare? Această tehnologie se bazează pe alegerea unei surse de pachete în funcție de preferințele pe care le setați. Ie este într-adevăr să devină un depozit conectat cu versiunile corecte ale pachetelor corect stabilite preferințele și primi toate pachetele de servicii de acolo, folosind mecanisme standard. Astfel, se elimină imediat un strat de probleme asociate cu suportul, în cazul în care pachetul dorit primește actualizări sistemul ei vor primi.
Lista de arhive este stocat în /etc/apt/sources.list. dacă vom deschide un fișier, de exemplu, în Debian 8, vom vedea următoarele:

Așa cum este ușor pentru a vedea acest set aparține real distro în prezent Debain 8 „Jessie“, alte aspecte ar trebui să fie înlocuit cu Jessie pe numele de cod al unui alt distribuție.
Pe lângă Debian numele de cod vă permite să utilizați eliberarea clasei: stabil, oldstable, testarea, instabilă. distribuție curentă - este stabilă. anterior - oldstable. în curs de dezvoltare - testare. instabil (sid) - instabil. Cu toate acestea, în practică, aceste denumiri nu sunt folosite, pentru că dacă în loc de Jessie dat stabil. cu lansarea următoarei versiune stabilă - întinde - este actualizat în mod automat la serverele dvs. de producție care poate duce la consecințe neașteptate. Cu toate că, dacă sunteți un entuziast, vă puteți înregistra toate de testare și să fie în mod constant pe marginea de taiere a progresului.
În depozitele Ubuntu set este un pic diferit:

Ca urmare, o listă a principalelor magaziile de forma:
Versiunea Ubuntu a distribuției este definit doar prin numele de cod, în cazul nostru de încredere - Ubuntu 14.04 LTS (Trusty Tahr).
Adăugați noi arhive sunt două moduri de a le adăuga la fișierul /etc/apt/sources.list principal. sau pentru a crea un nou fișier cu extensia .list în dosarul /etc/apt/sources.list.d. de exemplu, precise.list Ubuntu 12.04 arhive, etc. Toate fișierele din acest dosar cu extensia corectă va fi conectat automat la lista de surse.
După ce ați adăugat un nou depozit, trebuie să actualizați lista de pachete:
Acum este momentul pentru a înțelege modul în care selecția unui pachet de instalare. Pentru a face acest lucru, puteți rula comanda:
Să aruncăm o privire mai atentă la imaginea de mai jos, în cazul în care vom rula următoarele comenzi pentru pachetul Nginx:

ponderea valorii de prioritate poate fi după cum urmează:
- P> = 1000 - pachetul va fi instalat, chiar dacă aceasta duce la o scădere în versiunea deja instalat pachetul
- 990 <= P <1000 - пакет будет установлен, если не установлена более новая версия
- 500 <= P <990 - пакет будет установлен, если нет пакета принадлежащего к целевому выпуску или не установлена более новая версия
- 100 <= P <500 - пакет будет установлен, если нет кандидатов из других источников или установленного пакета более новой версии
- 0
- P <0 - пакет не будет установлен ни при каких условиях
- P = 0 - nedefinit stare, nu este folosit
Utilizați o greutate mai mare de 1000 ar trebui să fie precaut, mai ales în cazul în care preferințele includ selectarea măștii, în acest caz, nu puteți solicita să efectueze o scădere dată întregului set de pachete (pentru dependențe), ceea ce poate duce la rezultate neașteptate.
Greutatea 990-1000 actualizează, de asemenea, pachetele deja instalate, dar crește doar versiunile lor. Pericolul utilizării necontrolate a acestor două moduri este că acestea pot fi rupte, dependențe și pachete de partid, prin urmare, șterse, ceea ce poate duce la funcționarea defectuoasă a sistemului parțial sau complet.
Separat se concentreze pe diferențele dintre greutatea în intervalul 500-990 și 990-1000.
Deci, cu greutatea de 500 și peste noul pachet va fi întotdeauna instalat și înlocuiți pachetul existent în cazul în care acțiunea ar fi în mod clar definite de către utilizator. Astfel echipa:
actualiza pachetul sau un set de pachete la cele mai recente versiuni la o greutate de 500 și de mai sus. De exemplu, am instalat 7 pe Debian 2.2 apache, se adaugă noi arhive de la Debain 8 și uita-te la stabilirea candidatului:

Diferența constă în conceptul de eliberare țintă. care în mod implicit nu este setat, astfel încât comportamentul sistemului cu greutăți 5-100 va fi la fel. Pentru a specifica eliberarea țintă în /etc/apt/apt.conf.d a crea un dosar de fișier gol, fără o extensie, de exemplu, implicit, și să facă următoarea linie:
Acesta a stabilit un obiectiv stabilit de versiunea Debian 7. Noi verifica ce se întâmplă acum:


În fișierul ar trebui să fie plasate una sau mai multe seturi de următoarele directive:
Numele pachetului poate fi specificat ca un întreg, și pe o mască, de exemplu, apache2 *. De asemenea, este posibil să specificați mai multe nume separate printr-un spațiu.
Ca o opțiuni de atașare poate fi un pachet de sursă, versiunea și originea lor. De exemplu, următorul set de orientări va consolida Perl la nivelul liniei de 5.10, iar pachetul de greutate țintă în 1001 va permite să reducă versiunea deja instalată (dacă este necesar).
Și acest design indică sqiud3 primi pachete de la example.com depozit. De exemplu, dacă trebuie să utilizați un ansamblu pachet special și pentru a preveni personalul său de înlocuire, chiar dacă acesta este mai nou.
În cele din urmă, legarea la o anumită problemă, de exemplu, toate pachetele de pe apache2 masca * luate de la eliberarea de wheezing arhive:
Pentru Debian este, de asemenea, conceput pentru a utiliza o construcție:
Pentru valoarea Ubuntu a ambelor n și un meci-cheie și trebuie să conțină numele codului de eliberare.
Nu a fi nefondate, ia în considerare unele scenarii practice.
pachete downgrade
Cel mai adesea are nevoie pentru a reduce versiunea Apache 2.4-2.2, de exemplu, pentru nevoile 1C Company. Deci, în primul rând în sistem ar trebui să fie adăugate la depozitul de la o ediție anterioară, care conține versiunea dorită a Apache este Debian șuierătoare sau precis pentru Ubuntu. Apoi, puteți merge două moduri, de exemplu, setați greutatea 1001 și să înlocuiască pachetele necesare:
Aceasta este o operație potențial periculoasă, astfel încât înainte de a efectua instalarea ar trebui să efectueze teste ale sale:
În cazul în care producția nu se încadrează în ecran, aceasta ar trebui să redirecționeze mai puțin de utilitate:
Apoi am ajuns la concluzia cu atenție de studiu. Cea mai mare atenție este acordată pachetele care vor fi eliminate sau înlocuite cu versiuni mai vechi.

Pentru a elimina pachetele mai întâi a obține o listă a acestora, pentru aceasta este comanda dpkg -l, urmat de selecție pentru numele pachetului.

Eliminați comanda pachete instalate:
De asemenea, puteți elimina toate pachetele de configurare, pentru a efectua din nou
Cu toate acestea, rețineți că această operație va șterge toate setările și datele referitoare la pachetul, în cazul MySQL sau PostgreSQL acest lucru va duce la o pierdere completă a datelor, astfel încât face o copie a unui conținut și setările de pre-dorit.
Apoi, puteți instala pachetul, de pre-testat.

Actualizarea pachetelor
Teoretic, procesul de îmbunătățire nu este diferit de diapozitiv. Conectarea magaziei, setați preferințele și pachetele de actualizare. Dar, în practică, acest proces se confruntă cu multe dificultăți. Principala dificultate devine ca noua problema pachetelor sunt asamblate într-un mediu de noi biblioteci, și, prin urmare, trebuie să fie actualizate multe dependențe, care, la rândul său, trage pe ele dependența lor etc. etc.
În general, modul corect de a îmbunătăți pachetul este adunarea înconjurat de distribuția actuală a codului sursă deb-src din noua ediție a depozitului. Cu toate acestea, această metodă este dincolo de domeniul de aplicare al acestui articol.
Vă vom arăta un exemplu practic de încercări de a îmbunătăți versiunea pachetului. În primul rând, care leagă depozitele de o problemă proaspătă, asigurați-vă că pentru a specifica eliberarea țintă sau reduce prioritatea lor, de exemplu, următoarele directive:
Ei bine, se adaugă distribuții, prioritățile pus candidații testați, totul pare să fie bine. Încercați să instalați pachetul în modul de testare:


Ei bine, totul pare a fi adăugate, după cum putem vedea în lista de preferințe au fost cele mai neașteptate pachete (si am vrut doar să actualizeze Apache):

Testarea instalației și a vedea un rezultat neașteptat:
