Puncte:1

Copiați lista de software instalat manual de pe un server pe altul cu aceeași versiune

drapel pk

Am 2 servere, să zicem Server1 și Server2

Server1 este configurat cu mult timp în urmă de o persoană care are mai multe pachete și aplicația noastră are atât de multe dependențe de acele pachete. Deci vreau să mențin același set de pachete pe noul server adică Server2 pentru a rula aplicația noastră fără probleme.

Am folosit comanda de mai jos pentru a enumera toate pachetele din Server1

 dpkg --get-selections > ~/Package.list

Care oferă toate Like-ul de pachete

instalare accountsservice
instalare acpid
adduser install
instalare amd64-microcode
...
...

Fac o copie a listei de pachete de mai sus în Server2 și am încercat să instalez acele pachete folosind o comandă

sudo dpkg --set-selections < ~/Package.list

dar scrie ca

dpkg: avertisment: pachetul nu este în stare și nici baza de date disponibilă la linia 2: acpid
dpkg: avertisment: pachetul nu este în stare și nici baza de date disponibilă la linia 4: amd64-microcode
dpkg: avertisment: pachetul nu este în stare și nici baza de date disponibilă la linia 12: apt-transport-https
dpkg: avertisment: pachetul nu este în stare și nici baza de date disponibilă la linia 14: apt-xapian-index
...
...

Există vreo altă modalitate de a menține același set de pachete pe ambele servere?

Ambele sunt același sistem de operare cu versiuni diferite (server1: Ubuntu 14.04 și server2: Ubuntu 20.04) și vreau doar pachete instalate de utilizator

Actualizați:

apt list --instalat

Deasupra Comanda afișează ca

accountsservice/trusty-updates,acum 0.6.35-0ubuntu7.3 amd64 [instalat]
acpid/trusty, acum 1:2.0.21-1ubuntu2 amd64 [instalat]
adduser/trusty, acum 3.113+nmu3ubuntu3 toate [instalate]
amd64-microcode/trusty-updates,acum 3.20180524.1~ubuntu0.14.04.2+really20130710.1ubuntu1 amd64 [instalat,automat]
apache2/trusty-updates,trusty-security,acum 2.4.7-1ubuntu4.22 amd64 [instalat]
...

Afișează pachetul cu versiunea, este posibil să pot salva rezultatul acestei ieșiri și să rulez server2 astfel încât să pot avea același pachet cu aceeași versiune.

user535733 avatar
drapel cn
Metoda dvs. probabil nu va funcționa: Ubuntu 14.04 (notați numele corect, obțineți acest obicei) este pur și simplu prea diferit de Ubuntu 20.04 (din nou, notați numele corect). Prea multe pachete s-au schimbat de-a lungul a șase ani.
Shashank Gb avatar
drapel pk
Nu vreau să instalez pachetele încorporate, vreau o listă doar a celor care sunt instalate de utilizator.
Puncte:2
drapel cn

Dacă ar fi sistemul meu, iată cum aș proceda:

Pachetele instalate de utilizator sunt urmărite prin apt-marking (vezi om apt-mark.)

Cu toate acestea, există o mică problemă: programul de instalare Ubuntu apt-marks Tot pe o instalare stoc a Ubuntu așa cum a fost instalată manual. Este o măsură de siguranță, astfel încât oamenii să nu își dezinstaleze în mod eronat desktopul.

Deci este (un fel de) o scădere simplă: lista tuturor pachetelor manuale minus lista pachetelor de instalare stoc.

  1. Obțineți lista pachetelor de pe sistemul dvs. 14.04 care sunt marcate ca „manual”.

    apt-mark showmanual > server1
    
  2. Porniți o mașină virtuală cu o instalare proaspătă Ubuntu 14.04 și faceți același lucru.

    apt-mark showmanual > fresh
    
  3. Diferenți cele două fișiere.

    diff --suppress-common-lines fresh server1
    
  4. Parcurgeți lista scurtă rezultată, rând cu rând. Trebuie să eliminați pachetele nucleului, să investigați pachetele care au fost abandonate sau redenumite sau schimbate în alt mod, să adăugați pachete care nu mai fac parte dintr-o instalare stoc etc. Nu există o modalitate simplă sau automată de a face acest lucru.

Puncte:2
drapel cn

O listă dpkg reprezintă toate aplicațiile, dar vor fi instalate numai altele diferite. Adesea, cel mai bine este să editați nucleele vechi.

Din vechea instalare

dpkg --get-selections > ~/my-packages

Din noua instalare:

sudo apt-get -y update
sudo apt-get dselect-upgrade
#DACĂ primești această eroare:
dpkg: avertisment: pachetul nu este în baza de date
sudo apt-get install dselect
sudo dselect 
   -> Actualizare
   -> Instalați

O listă tabelară a tuturor pachetelor instalate manual poate fi obținută folosind aptitude pe care probabil trebuie să îl instalați:

căutare de aptitudini '~i!~M'

Aplicații de nivel superior:

aptitude --disable-columns -F 'nu_dependenti %p' cauta '~i!~M!~R(~i)'

Dar atunci poate fi necesar să adăugați instalarea la fiecare linie.

Cum să enumerați toate pachetele instalate

De asemenea, cum să enumerați aplicațiile pe care le-ați instalat.

Cum să enumerați toate pachetele instalate

Shashank Gb avatar
drapel pk
Da, acum am o listă de pachete instalate manual folosind `aptitude search '~i!~M' > pachete`. Deci acum cum să utilizați această listă în server2. Din nou, pot folosi `dselect`
oldfred avatar
drapel cn
Nu am folosit aptitude, dar cred că este doar lista de aplicații. Pentru a folosi deselectarea, se așteaptă două coloane, un nume de aplicație și a doua instalare. Un export dpkg poate include dezinstalarea ca a doua intrare în coloană, ceea ce înseamnă că a fost dezinstalat și nu va fi reinstalat. Legăturile arată comanda set pentru a adăuga instalarea la fiecare linie folosind sed.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.