C ++ apt-pkg 라이브러리를 사용하여 apt-get install <package>에 해당


9

사용자에게 설치할 소프트웨어를 묻는 작은 QT (C ++) 응용 프로그램을 구축 중입니다. 그가 목록에서 일부 패키지 a, b, c를 선택하면 실행해야합니다.

sudo apt-get install a b c

이를 수행하는 한 가지 방법은 Qprocess 또는 System을 사용하고 C ++에서 직접이 명령을 실행하는 것입니다. 그러나 이것이 해킹이라고 생각하고 apt-pkg C ++ 라이브러리를 사용하고 싶었습니다. 그러나 슬프게도 문서는이 라이브러리에 대해 매우 드문 경우입니다. pkgAcqArchive.

이 간단한 명령을 실행하려면이 모든 작업을 수행해야합니까? 소프트웨어 이름을 인수로 사용하여 설치하는 직접 기능이 없습니까? 동일한 작업 코드 샘플을 어디서 구할 수 있습니까?


1
나는 libQapt 가 당신이 찾고있는 것이라고 맹세 하지만 이것을 확인하기위한 문서가 부족하다고 판단합니다. 설명은 " Qt 및 C ++로 작성된 패키지 관리자 의 개발을 용이하게하기 위해 "
Braiam

내가 당신의 신발에 있다면 여기에서 도움을 구할 것입니다 : programmers.stackexchange.com
Geek

이 문제가 해결 되었습니까?
등록 된 사용자

답변:


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입니다. C로 작성된 라이브러리이므로 C ++ 코드에서도 액세스 할 수 있습니다.

라이브러리 및 해당 문서에 대해 패키지 libapt-pkg-devlibapt-pkg-doc각각 설치하십시오 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.