Puncte:0

Debian: cum se instalează un pachet fără o dependență specifică (git fără Perl)

drapel cn

Încerc să instalez un pachet apt fără una dintre dependențele sale (în special, git fără Perl pentru a reduce dimensiunea imaginii Docker cu > 50 MB).

Mă pot gândi la două variante:

  1. instalarea pachetului fără această dependență specifică
  2. instalarea pachetului cu toate dependențele și eliminarea dependenței după aceea

și le-am investigat pe amândouă și niciunul nu a funcționat. Deci întrebarea mea este: există o modalitate curată de a face asta?

Mai jos este ceea ce am încercat până acum.

1. Instalarea pachetului fără această dependență specifică

Cel mai sugestii recomanda

apt download git
dpkg --ignore-depends=perl -i git*.deb

Din păcate, acest lucru nu instalează alte dependențe, deci clona git eșuează din cauza lipsei de libcurl.

Deci, pentru a remedia asta, unii alte sugestii recomand folosirea

apt-get -f install

apoi, dar această comandă încearcă să instaleze Perl, ceea ce încerc să evit.

Ok, deci spun să nu ating Perl cu:

apt-mark hold perl

dar apoi apt-get -f install încearcă să elimine git.

Ok, deci spun să-l las pe git în pace:

apt-mark ține apăsat git

dar apoi apt-get -f install renunță, deoarece nu poate instala Perl și nu poate dezinstala git. Sfârșitul poveștii.

2. instalarea pachetului cu toate dependențele și eliminarea dependenței după aceea

Am instalat git cu Perl:

apt install -y git

apoi a eliminat Perl cu

dpkg -P --force-depends perl

dar aceasta nu elimină alte dependențe care au fost aduse de Perl, de ex. module-perl. Deci încercarea este nereușită.

Nikita Kipriyanov avatar
drapel za
Aceasta este o cale greșită, sau mai degrabă ar trebui să spun o modalitate garantată de a te împușca în picior. Dacă doriți să omiteți unele dependențe, trebuie să reconstruiți corect pachetele dependente fără această dependență. Nu este atât de greu.
Lukasz Guminski avatar
drapel cn
Chestia este că controlez pe deplin sistemul (imaginea Docker) și știu sigur că nu va fi nevoie de perl, deoarece git este folosit doar pentru clonarea depozitelor. Pe de altă parte, reconstruirea git ar crește foarte mult timpul de construire al imaginii mele Docker.
drapel in
Dacă dimensiunea este o problemă, poate doriți să încercați o altă imagine, cum ar fi Alpine. Este considerabil mai mic, iar git nu are o dependență de perl acolo.
Lukasz Guminski avatar
drapel cn
Problema este că Alpine folosește [musl](https://musl.libc.org/) în loc de glibc și nu vreau să risc [probleme de instabilitate](https://pythonspeed.com/articles/alpine- docker-python/). Cu toate acestea, este bine de știut că acolo nu există nicio dependență de perl.
Nikita Kipriyanov avatar
drapel za
Încercați să reambalați fișierul git deb fără această dependență. Nici asta nu e greu. Înțelegeți, încercați să utilizați un manager de pachete pentru caracteristicile sale, cum ar fi rezoluția dependențelor (prin instalarea git și a dependențelor de care aveți nevoie) și, în același timp, doriți să folosiți greșit în mod deliberat capacitatea sa de rezoluție a dependențelor cumva (pentru a omite unele dependențe). Asta nu va funcționa. Managerul de pachete Debian nu a fost creat cu acest lucru în minte. (Portage, managerul de pachete de la Gentoo a făcut-o și folosește ceva numit „USE-flags” pentru asta. Dar asta este cu totul altă poveste.)
Lukasz Guminski avatar
drapel cn
Este interesant. Practic spuneți că cauza principală este ambalarea lui git, ceea ce indică faptul că ar fi nevoie de ceva de genul „git-minimal”.Voi investiga reambalarea pentru a vedea dacă opțiunea este fezabilă.
djdomi avatar
drapel za
sau îl construiți pe cont propriu, fără suport perl dacă este posibil, chiar nu este greu și bine documentat cum să faceți asta pe [modul Debian](https://wiki.debian.org/HowToPackageForDebian)

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.