apt-get install <package> еквівалент, використовуючи бібліотеку ap + pkg C ++


9

Я будую невеликий додаток QT (C ++), де я запитую у користувача програмне забезпечення, яке він хоче встановити. Після того, як він вибрав декілька пакетів a, b, c зі списку, все, що мені потрібно зробити, це запустити

sudo apt-get install a b c

Один із способів зробити це - використовувати Qprocess або System та запустити цю команду безпосередньо з C ++. Але я подумав, що це буде злом, і хотів зробити це за допомогою бібліотеки apt-pkg C ++. Але, на жаль, документація є дуже рідкою для цієї бібліотеки: (я побачив вихідні коди подібних програмних програм - оновлення програмного забезпечення (apt-watch) тощо, і виявив це занадто складним. Просто для запуску над командою є багато коду - ініціалізація pkgCacheFile, PkgIterator , pkgAcqArchive.

Чи потрібно робити все це, щоб виконати цю просту команду? Чи не існує прямої функції, яка приймає назву програмного забезпечення в якості аргументу і встановлює його? Де я можу отримати зразок робочого коду для того ж?


1
Я клянусь , що ви шукаєте libQapt , але відсутність документації, щоб підтвердити це, перешкоджає. Опис відповідає "полегшити розробку менеджерів пакетів, написаних на Qt та C ++"
Брайам,

Якби я був у вашому взутті, я б тут
Старійшина Гек

Чи вирішена ця проблема?
Зареєстрований користувач

Відповіді:


2

Я просто використовую систему:

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.

Користуватися простим рішенням не злом.


0

Відповідь така libapt-pkg. Це бібліотека, написана на С, що робить її також доступною з коду С ++.

Встановіть пакунки libapt-pkg-devта libapt-pkg-docвідповідно бібліотеку та її документацію.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.