apt-get install <package> equivalente usando la libreria apt-pkg di C ++


9

Sto costruendo una piccola applicazione QT (C ++) in cui chiedo all'utente il software che desidera installare. Dopo aver selezionato alcuni pacchetti a, b, c dall'elenco, tutto ciò che devo fare è eseguire

sudo apt-get install a b c

Un modo per farlo è usare Qprocess o System ed eseguire questo comando direttamente da C ++. Ma ho pensato che sarebbe stato un trucco e volevo farlo usando la libreria C ++ di apt-pkg. Ma purtroppo la documentazione è molto scarsa per questa libreria :( Ho visto i codici sorgente di alcuni software simili - Aggiornamento software (apt-watch) ecc. E l'ho trovata troppo complessa. Solo per eseguire il comando sopra, ha molto codice - Inizializzazione di pkgCacheFile, PkgIterator , pkgAcqArchive.

Devo fare tutto questo per eseguire questo semplice comando? Non esiste una funzione diretta che prende il nome del software come argomento e lo installa? Dove posso ottenere un codice di lavoro di esempio per lo stesso?


1
Giuro che libQapt è ciò che cerchi, ma la mancanza di documentazione per verificare che ciò sia scoraggiante. La descrizione si adatta "per facilitare lo sviluppo di gestori di pacchetti scritti in Qt e C ++"
Braiam

Se fossi nei tuoi panni cercherei aiuto qui: programmers.stackexchange.com
Elder Geek,

Questo problema è stato risolto?
Utente registrato

Risposte:


2

Vorrei solo usare il sistema:

SYSTEM(3)            Linux Programmer's Manual           SYSTEM(3)

NAME
       system - execute a shell command

SYNOPSIS
       #include <stdlib.h>

       int system(const char *command);

DESCRIPTION
       system() executes a command specified in command by calling
       /bin/sh -c command, and returns after the command has  been
       completed.   During  execution of the command, SIGCHLD will
       be blocked, and SIGINT and SIGQUIT will be ignored.

RETURN VALUE
       The value returned is -1 on error (e.g.   fork(2)  failed),
       and  the return status of the command otherwise.  This lat-
       ter return status is in the format  specified  in  wait(2).
       Thus, the exit code of the command will be WEXITSTATUS(sta-
       tus).  In case /bin/sh could not be executed, the exit sta-
       tus will be that of a command that does exit(127).

       If  the  value of command is NULL, system() returns nonzero
       if the shell is available, and zero if not.

       system() does not affect the wait status of any other chil-
       dren.

Non è un trucco usare una soluzione semplice.


0

La risposta è libapt-pkg. È una libreria scritta in C, che la rende accessibile anche dal codice C ++.

Installa i pacchetti libapt-pkg-deve libapt-pkg-docrispettivamente per la libreria e la sua documentazione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.