私は小さなQT(C++)アプリケーションを構築しており、ユーザーがインストールしたいソフトウェアをユーザーに尋ねています。彼がリストからいくつかのパッケージa、b、cを選択したら、私がしなければならないことはすべて実行されます
Sudo apt-get install a b c
これを行う1つの方法は、QprocessまたはSystemを使用して、このコマンドをC++から直接実行することです。しかし、これはハックだと思い、apt-pkg C++ライブラリを使用したいと考えました。しかし、悲しいことに、このライブラリのドキュメントは非常にまばらです:(似たようなソフトウェアのソースコードを見ました-ソフトウェアアップデーター(apt-watch)など。 、pkgAcqArchive。
この単純なコマンドを実行するには、これをすべて行う必要がありますか?ソフトウェア名を引数として使用してインストールする直接関数はありませんか?同じ用のサンプル作業コードはどこで入手できますか?
私はただシステムを使用します:
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.
単純なソリューションを使用するのはハックではありません。
答えはlibapt-pkg
です。 Cで記述されたライブラリであるため、C++コードからもアクセスできます。
ライブラリとそのドキュメントのパッケージlibapt-pkg-dev
とlibapt-pkg-doc
をそれぞれインストールします。