2011-12-12 25 views
10

Desidero creare un semplice pacchetto debian per installare un semplice strumento che dipenda dalle librerie Qt4.come rendere le dipendenze di installazione del pacchetto debian

Nel file di controllo ho definito che dipende dalle librerie Qt4, tuttavia, quando sto testando il pacchetto, si dice che la dipendenza non può essere soddisfatta.

Domanda:

Come posso rendere Debian grilletto APT per installare le dipendenze come bene?

Impossibile trovare la documentazione, tuttavia so che apt-get lo fa.

+0

Si dipende dalle normali librerie Qt4 fornite con la propria distribuzione? Potresti pubblicare i dettagli esatti, ad esempio la specifica "Depends" e la chiamata apt-get con errori? – thiton

+0

Mi sembra che il pacchetto sia corretto, ma che la dipendenza non esiste nei mirror apt che si stanno utilizzando. Per favore pubblica il tuo messaggio di errore completo. – Flimzy

+0

'dpkg' è uno strumento di basso livello e non prende in considerazione le dipendenze. Carlos ha l'idea giusta per usare gdebi, dato che estrae le dipendenze quando lo esegui senza dover usare 'apt', che puoi usare anche come ha sottolineato Thomas. – NuclearPeon

risposta

1

Un modo sarebbe creare un repository di pacchetti locale sul computer e aggiungerlo a /etc/apt/sources.list. Quindi è possibile installare il pacchetto dal repository locale con apt-get e risolvere automaticamente le dipendenze.

Probabilmente esiste un modo più semplice per farlo, ma non so cosa sarebbe.

12

Se lo installi tramite dpkg, non funzionerà perché dkpg non sa dove trovare ulteriori dipendenze. Potresti farlo via apt-get se crei il tuo repository, ma è una cosa che richiede tempo la prima volta (non è difficile, solo qualcosa di "nuovo" la prima volta che ha bisogno di tempo per essere appreso).

D'altra parte, e la soluzione che si sta probabilmente cercando è gdebi (potrebbe essere necessario installarlo: apt-get install gdebi-core). È uno strumento che controlla le dipendenze per un pacchetto e chiama apt-get per recuperarle e installarle, quindi chiama dpkg per installare il pacchetto.

+0

Hummm. Capisco ... Il fatto è Devo creare un programma di installazione. Per esempio. Quando scarichi Skype, è disponibile in .deb. Porta tutte le librerie di cui ha bisogno? Devo includere tutte le librerie di cui ho bisogno? Come devo fare affidamento su apt per recuperare le dipendenze? Il problema di impacchettare le dipendenze è che possono rovinare il sistema di destinazione. Il tuo suggerimento di un rappresentante locale è valido per una distribuzione. Idea: Potrei creare quel rappresentante locale quando eseguo il .deb e poi chiamare apt-get on post install ... ma questa non sembra una soluzione valida ... –

+0

Durante il processo di installazione, installa gdebi da il repository apt e quindi eseguire 'gdebi your-package.deb'. Recupererà tutte le dipendenze dagli archivi apt configurati in quella macchina (se sono disponibili nel repository). O c'è qualche altro problema che non capisco? –

+0

gdebi contrassegna i pacchetti installati come dipendenze per il pacchetto che voglio installare? – Trismegistos

5

Se si è creando il pacchetto Debian, si specificano le sue dipendenze nei file di controllo directory debian/; Credo che lo debian/control utilizzi le direttive Depends: a tale scopo.

Non conosco i dettagli troppo chiaramente, me stesso, ma ci sono istruzioni al http://www.debian.org/doc/manuals/maint-guide/; in particolare, http://www.debian.org/doc/manuals/maint-guide/dreq.en.html#control sembra essere il posto giusto per iniziare a cercare.

+0

Salve, penso che 'Dipende: ' controllerà solo se la dipendenza è installata e interromperà l'installazione del pacchetto deb di conseguenza. La soluzione che sto cercando è quella di installare automaticamente queste dipendenze come parte di deb isntallation. Volete dare un'occhiata a questa domanda: http://stackoverflow.com/questions/22907113/how-to-install-dependencies-while-creating-a-deb-installer – Sangram

17

Se si vuole evitare di creare un repository APT locale, si può fare:

dpkg -i mypackage.deb 
apt-get install --fix-missing 

Se si vuole creare un repository locale, è possibile utilizzare reprepro per questo.

+4

# apt-get install -f --fix -missing – kellogs

+0

Dovrei eseguire di nuovo 'sudo dpkg -i mypackage.deb' di nuovo? –

0

Per @textshell in this answer:

partire con apt 1.1 (disponibile in Xenial (16.04), tratto) apt install permette anche file locali:

sudo apt install ./foo-1.2.3.deb 

molto più semplice e più pulite.

Vedi l'release announcment

Questo sarà anche installare le dipendenze, proprio come un normale apt install o apt-get install.

Problemi correlati