Puncte:7

Ce este un script de post-instalare pentru un pachet?

drapel my

Am văzut o mulțime de întrebări pe Ask Ubuntu despre erori ca aceasta:

Scriptul de post-instalare foo a returnat starea de ieșire 1

Ce este mai exact un script post-instalare? Unde se află scripturile post-instalare?

Am dat peste această întrebare care este oarecum legat, dar discută declanșatoarele post-instalare mai degrabă decât scripturile post-instalare.

muru avatar
drapel us
„Managerul avansat de pachete detectează scriptul de post-instalare și Dpkg rulează scriptul.” Nu. Dpkg este singurul handler al scripturilor postinst. Apt nu are nimic de-a face cu asta. Apt apelează dpkg pentru a face majoritatea lucrurilor, amintiți-vă.
Puncte:13
drapel my

Numele scenariului în sine spune ce face. Înseamnă că scriptul conține comenzi care trebuie executate după finalizarea instalării.

Să o înțelegem mai bine printr-un exemplu:

  • Să presupunem că instalați un nucleu mai nou. Odată instalată .deb fișierul este complet, trebuie să-i spună lui GRUB că nucleul este instalat, astfel încât să puteți porni în el. Deci, post-instalarea pachetului va spune GRUB că nucleul este instalat prin executarea comenzilor update-grub și update-initramfs. Pentru mai multe informații, consultați secțiunea Întrebări frecvente.

Un exemplu mai generic poate fi acesta:

  • Să presupunem că instalați pachetul foo. Să spunem acum că pachetul are nevoie de un serviciu numit bar a fi dezactivat. Cum o va dezactiva? Dezvoltatorii vor adăuga comanda systemctl dezactivați bar.service, care va dezactiva serviciul, în foo scriptul de post-instalare al pachetului. Deci, scriptul de post-instalare al pachetului constă în adiţional comenzi, actualizări etc...

    Instalarea constă din următorii pași:

    1. Extrageți fișierele de control ale noului pachet.

    2. Dacă a fost instalată o altă versiune a aceluiași pachet înainte de noua instalare, executați scriptul prerm al pachet vechi.

    3. Rulați scriptul preinst, dacă este furnizat de pachet.

    4. Despachetați noile fișiere și, în același timp, faceți o copie de rezervă fișiere vechi, astfel încât, dacă ceva nu merge bine, acestea pot fi restaurat.

    5. Dacă a fost instalată o altă versiune a aceluiași pachet înainte de noua instalare, executați scriptul postrm al pachetul vechi. Rețineți că acest script este executat după scriptul preinst al noului pachet, deoarece fișiere noi sunt scrise în același timp în care fișierele vechi sunt eliminate.

    6. Configurați pachetul.

Post-instalarea vine sub „Configurarea pachetului”. Se compune din:

  1. Spuneți altor aplicații despre instalarea cu succes a pachetului.

  2. Precizarea căilor către pachet, astfel încât utilizatorii și alte aplicații să îl poată utiliza/executa.

  3. Căutați orice erori în instalare și imprimați mesajul de eroare.


Secțiunea de întrebări frecvente


  • Unde se află aceste scripturi?

    Aceste scripturi se află în /var/lib/dpkg/info. Aceste scripturi au un .postinst extensie. Poți să alergi localiza .postinst pentru a găsi mai multe dintre aceste scripturi.

    Un exemplu de script post-instalare arată astfel:

    #!/bin/sh
    set -e
    if [ -x /usr/sbin/update-initramfs ]; atunci
    /usr/sbin/update-initramfs -u -k all
    fi
    
  • Ce înseamnă dacă revine scriptul post-instalare starea de ieșire 1?

    În general, aceasta înseamnă că scriptul de post-instalare revine iesirea 1 pentru a indica faptul că comenzile din scriptul post-instalare au eșuat dintr-un motiv sau altul.

  • Cum repar starea de ieșire 1?

    Puteți încerca să căutați pe Google erorile cu comenzile și să le remediați. Dacă te confrunți cu erori cu apt și/sau dpkg, apoi puteți elimina scriptul post-instalare și îl puteți muta înapoi în siguranță după ce ați reparat comenzile. Cu toate acestea, aceasta poate să nu fie întotdeauna soluția corectă. Poate vrei pune o nouă întrebare.

    Câteva comenzi utile pentru remedierea erorilor comune de script post-instalare sunt menționate în tabelul de mai jos:

    Comanda Descriere Puternic Sintaxă
    epurare apt Îndepărtează pachetul împreună cu fișierele sale de configurare. Depinde de situatie. sudo apt purge <nume_pachet>
    dpkg -r Îndepărtează cu forță pachetul. Oferă o mulțime de argumente utile. Da, atunci când este folosit cu anumite argumente sudo dpkg -r --force-all <nume_pachet>
    dpkg -P Curăță pachetul cu forță. Oferă o mulțime de argumente utile. Da, atunci când este folosit cu anumite argumente. sudo dpkg -P --force-all <nume_pachet>
  • Pun o nouă întrebare cu privire la erorile legate de aceste scripturi, ce informații ar trebui să ofer?

    Ar trebui să furnizați informații precum:

    • Versiunea dvs. Ubuntu (ieșire de lsb_release -d).
    • Ieșire din actualizare sudo apt.
    • Ieșire completă de sudo apt -f install.
    • Conținutul scriptului de post-instalare al pachetului.

    Alte detalii ar trebui furnizate atunci când sunt solicitate.

  • Pot schimba/elimina aceste scripturi?

    NU! Evitați să vă încurcați cu aceste scripturi. Dacă există erori de sintaxă sau erori cu orice comandă, apt va eșua fiecare instalare pentru acel pachet. Dacă, întâmplător, există erori de sintaxă, atunci trebuie să utilizați manual instrumente backend precum dpkg pentru a repara totul. Le pot elimina? NU! Nu le eliminați decât dacă este necesar, eliminarea acestor scripturi poate face aceste pachete inutilizabile.

  • Cum execut din nou aceste scripturi?

    Doriți să executați din nou scriptul post-instalare al unui pachet? După cum am spus mai devreme, rularea scriptului de post-instalare se află sub „Configurare” a pachetului. Deci, alergare simplă:

    sudo dpkg --configure <pachet>
    

    Unde <package> este numele pachetului pe care doriți să-l configurați.


Prieteni și rude ale acestui scenariu.

Încearcă să alergi ls în /var/lib/dpkg/info și grep ieșirea cu modelul aptitudini. Veți găsi o mulțime de tipuri similare de scripturi pe măsură ce este rezultat. Unii dintre ei sunt .postrm, .preinst, prerm și .listă împreună cu dosarul de semnături. Iată un tabel care arată funcțiile fiecăruia dintre aceste scripturi:

Scenariul Funcţie
Post eliminare (.postrm) Acest script constă din comenzi care urmează să fie rulate DUPĂ ce eliminarea este completă.
Preinstalare (.preinst) Acest script constă din comenzi care trebuie executate înainte de instalare.
Pre-eliminare (.prerm) acest script constă din comenzile care trebuie executate înainte de procesul de eliminare
Fișierul liste (.listă) Acest fișier conține lista directoarelor deținute/care aparțin pachetului.

Pentru mai multe informații, consultați pagina de manual a dpkg

Akbarkhon Variskhanov avatar
drapel mx
Nu sunt sigur dacă `sudo apt -f install` este o idee bună. Uneori, când aveți doar un singur pachet de procesat, `apt` nu vă va solicita și deoarece execuțiile anterioare `sudo` păstrează autentificarea utilizatorului, acesta poate deteriora sistemul. O soluție mai bună ar fi să-l ruleze fără partea `sudo` și cu modul `--simulate` activat.

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.