Pagina 1 di 1

Trovare pacchetti "sorgente" di altri pacchetti "sorgente"

MessaggioInviato: 09/03/2019, 11:21
da Aki
Ciao a tutti,

Stante un pacchetto "sorgente" ("source package") presente nei repository Debian, mi piacerebbe sapere come è possibile ricavare da riga di comando (se possibile in modo semplice, magari con un comando specifico) l'elenco dei pacchetti "sorgente" che generano i pacchetti "binari" che sono necessari alla compilazione del pacchetto "sorgente" in premessa.

Ad esempio, il pacchetto "sorgente" psmisc presenta le dipendenze "binarie" dirette (di primo livello) indicate nel campo "Build-Depends" per poter essere usato per creare il pacchetto "binario" psmisc:
Codice: Seleziona tutto
$ apt-cache showsrc psmisc
Package: psmisc
Binary: psmisc
Version: 23.2-1
Maintainer: Craig Small <csmall@debian.org>
Build-Depends: debhelper (>= 11), libncurses-dev, gettext, libselinux1-dev [linux-any]
Architecture: any
Standards-Version: 4.2.1
Format: 3.0 (quilt)
Files:
 6d09e81b66a0f070c7a990dc2d3b2026 1690 psmisc_23.2-1.dsc
 19d9c008acb666df67b5ed1de778352c 299836 psmisc_23.2.orig.tar.xz
 8fceb2bd93a38c35012ca0eec1bd14f8 6760 psmisc_23.2-1.debian.tar.xz
Checksums-Sha256:
 58f0e11a5d305bc8a950b80794ef961b730b8acfe11a08f7a874b304c0311ef1 1690 psmisc_23.2-1.dsc
 67964b4d8fda43a23a538c0b29574c2cf6842f2a3dfa30ae7d4b681ba80e22da 299836 psmisc_23.2.orig.tar.xz
 dee5835b8804dbfaabdb810f16c08124fbb3052e4346b5db3ddf40475a54d3fa 6760 psmisc_23.2-1.debian.tar.xz
Package-List:
 psmisc deb admin optional arch=any
Directory: pool/main/p/psmisc
Priority: source
Section: admin

Le dipendenze "binarie" in "Build-Depends", a loro volta, sono generate da pacchetti "sorgente" (quelli da cui sono generati i rispettivi pacchetti "binari"); pertanto, in tale esempio, mi farebbe piacere sapere come ottenere (magari con un comando già esistente a partire dal pacchetto sorgente psmic) i nomi dei pacchetti "sorgente" che generano i pacchetti binari debhelper (>= 11), libncurses-dev, gettext, libselinux1-dev e, se possibile, installare automaticamente tali pacchetti "sorgente".

Vi ringrazio per l'attenzione nella lettura fin qui prestata e per gli eventuali suggerimenti.

Re: Trovare pacchetti "sorgente" di altri pacchetti "sorgent

MessaggioInviato: 10/03/2019, 11:44
da mark
non so se risponde completamente alla tua domanda, ma questa pagina mi sembra interessante
Use `mk-build-deps` instead of `apt-get build-dep`

Re: Trovare pacchetti "sorgente" di altri pacchetti "sorgent

MessaggioInviato: 29/03/2019, 1:01
da Aki
mark ha scritto:non so se risponde completamente alla tua domanda, ma questa pagina mi sembra interessante
Use `mk-build-deps` instead of `apt-get build-dep`

Ti ringrazio, ma purtroppo non corrisponde a quanto sto cercando di fare. Il comando che mi hai suggerito cerca le build-dependencies ("additional packages are needed for the package to be built from source") di un pacchetto sorgente cioé le dipendenze binarie (e non quelle per i pacchetti sorgente) necessarie a compilare un "pacchetto sorgente" e ne crea un pacchetto binario che può essere successivamente usato per installare in un colpo solo tutte queste dipendenze (build-dependencies) binarie; dalla pagina di manuale:
mk-build-deps - build a package satisfying a package's build-dependencies

DESCRIPTION
Given a package name and/or control file, mk-build-deps will use equivs to
generate a binary package which may be installed to satisfy all the build
dependencies of the given package.

Re: Trovare pacchetti "sorgente" di altri pacchetti "sorgent

MessaggioInviato: 14/07/2019, 13:53
da HAL 9000
Per curiosità sei più riuscito a risolvere?

Re: Trovare pacchetti "sorgente" di altri pacchetti "sorgent

MessaggioInviato: 14/07/2019, 21:00
da Aki
HAL 9000 ha scritto:Per curiosità sei più riuscito a risolvere?

Grazie per la richiesta. Ho messo in stand-by questo approfondimento, che avevo iniziato per provare ad aggiornare (a livello di codice sorgente) i pacchetti base di kde alla versione upstream più recente (non ancora presente in Debian), ma per farlo è necessario aggiornare anche i pacchetti binari da cui tali pacchetti dipendono e, da qui, l’esigenza di individuare in modo il più possibile “agevolato” i pacchetti sorgente da cui tali pacchetti binari dipendono. Hai fatto già qualcosa del genere ?

Re: Trovare pacchetti "sorgente" di altri pacchetti "sorgent

MessaggioInviato: 15/07/2019, 12:44
da HAL 9000
Non proprio e purtroppo non saprei nemmeno se esiste un simile strumento, ma ero curioso perché mi sarebbe stato utile per semplificare o perfino abbandonare degli script che avevo realizzato.

Infatti tempo addietro mi serviva recuperare informazioni in modo ricorsivo da dei pacchetti e avevo creato degli script a tale scopo, ma eliminavo le informazioni di versione e architettura, utilizzando unicamente i repository di una singola versione Debian.

Il programma più veloce che avevo trovato era grep-dctrl (contenuto in "dctrl-tools"). Io lo usavo per i binari, ma è possibile usarlo anche per i pacchetti sorgenti, e ricordo che supportava di suo il controllo di versione dei pacchetti, e anche condizioni complesse. Non funzionava però ricorsivamente, quindi sarebbe necessario utilizzarlo all'interno di un ciclo come feci a suo tempo.

Le informazioni che utilizza comunque sono in /var/lib/apt/lists/*Packages (per binari) e /var/lib/apt/lists/*Sources (per sorgenti) per tutti i pacchetti Debian reperibili dai repository dei sources.list; oppure anche /var/lib/dpkg/available e /var/lib/dpkg/status limitatamente ai pacchetti (almeno precedentemente) installati. Quindi ogni altro programma potrebbe fare lo stesso.

L'unica altra cosa che mi viene in mente è ricorrere al database UDD, limitatamente a recuperare informazioni potrebbe essere più semplice e affidabile che estrarle da file di testo, ma non ho ancora avuto modo di usarlo per qualcosa di realmente complesso.

Re: Trovare pacchetti "sorgente" di altri pacchetti "sorgent

MessaggioInviato: 15/07/2019, 12:54
da gajm
Se ho ben capito, un apt-rdepends con l'opzione --build-depends dovrebbe fare al caso.