Trovare pacchetti "sorgente" di altri pacchetti "sorgente"

Sezione dedicata alle problematiche sull'uso dei tool di installazione e gestione di pacchetti, in una distribuzione Debian-based.

Trovare pacchetti "sorgente" di altri pacchetti "sorgente"

Messaggioda Aki » 09/03/2019, 11:21

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.
Aki
Global Moderator
Global Moderator
 
Messaggi: 8613
Iscritto il: 27/12/2007, 16:59

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

Messaggioda mark » 10/03/2019, 11:44

non so se risponde completamente alla tua domanda, ma questa pagina mi sembra interessante
Use `mk-build-deps` instead of `apt-get build-dep`
Avatar utente
mark
Hero Member
Hero Member
 
Messaggi: 722
Iscritto il: 10/01/2007, 16:53

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

Messaggioda Aki » 29/03/2019, 1:01

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.
Aki
Global Moderator
Global Moderator
 
Messaggi: 8613
Iscritto il: 27/12/2007, 16:59

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

Messaggioda HAL 9000 » 14/07/2019, 13:53

Per curiosità sei più riuscito a risolvere?
Ricordarsi di modificare il primo messaggio della discussione per aggiungere [RISOLTO] prima del titolo, quando conclusa.

Wiki: APT e Repository, Comandi utili, Collabora.
Manuali di Debian 10 "buster" (PC): installazione, aggiornamento da versione 9.
Avatar utente
HAL 9000
wiki member
wiki member
 
Messaggi: 1509
Iscritto il: 10/08/2009, 10:01

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

Messaggioda Aki » 14/07/2019, 21:00

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 ?
Aki
Global Moderator
Global Moderator
 
Messaggi: 8613
Iscritto il: 27/12/2007, 16:59

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

Messaggioda HAL 9000 » 15/07/2019, 12:44

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.
Ricordarsi di modificare il primo messaggio della discussione per aggiungere [RISOLTO] prima del titolo, quando conclusa.

Wiki: APT e Repository, Comandi utili, Collabora.
Manuali di Debian 10 "buster" (PC): installazione, aggiornamento da versione 9.
Avatar utente
HAL 9000
wiki member
wiki member
 
Messaggi: 1509
Iscritto il: 10/08/2009, 10:01

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

Messaggioda gajm » 15/07/2019, 12:54

Se ho ben capito, un apt-rdepends con l'opzione --build-depends dovrebbe fare al caso.
gajm
Jr. Member
Jr. Member
 
Messaggi: 75
Iscritto il: 23/08/2016, 13:20


Torna a Apt-get and friends

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite

cron