apt-get install <package> เทียบเท่าโดยใช้ไลบรารี C ++ apt-pkg


9

ฉันกำลังสร้างแอปพลิเคชัน QT (C ++) ขนาดเล็กที่ฉันขอให้ผู้ใช้ซอฟต์แวร์ที่เขาต้องการติดตั้ง เมื่อเขาเลือกแพ็คเกจ a, b, c จากรายการทั้งหมดที่ฉันต้องทำคือเรียกใช้

sudo apt-get install a b c

วิธีหนึ่งในการทำเช่นนี้คือการใช้ Qprocess หรือระบบและเรียกใช้คำสั่งนี้โดยตรงจาก C ++ แต่ฉันคิดว่านี่จะเป็นการแฮกและต้องการใช้ไลบรารี apt-pkg C ++ แต่เอกสารเศร้ามากกระจัดกระจายสำหรับห้องสมุดนี้ :( ฉันเห็นซอร์สโค้ดของซอฟต์แวร์ที่คล้ายกัน - ซอฟต์แวร์ updater (apt-watch) ฯลฯ และพบว่ามันซับซ้อนเกินไปเพียงเรียกใช้คำสั่งข้างต้นก็มีรหัสจำนวนมาก - การเริ่มต้น pkgCacheFile, PkgIterator , pkgAcqArchive

ฉันต้องทำทั้งหมดเพื่อเรียกใช้คำสั่งง่าย ๆ นี้หรือไม่? ไม่มีฟังก์ชั่นโดยตรงที่ใช้ชื่อซอฟต์แวร์เป็นอาร์กิวเมนต์และติดตั้งหรือไม่ ฉันจะรับโค้ดตัวอย่างทำงานได้จากที่ใด


1
ฉันสาบานlibQaptคือสิ่งที่คุณมองหา แต่การขาดเอกสารเพื่อยืนยันว่านี่คือการแยกแยะ คำอธิบายที่ตรงกับ "เพื่อความสะดวกในการพัฒนาตัวจัดการแพ็กเกจที่เขียนใน Qt และ C ++"
Braiam

ถ้าฉันอยู่ในรองเท้าของคุณฉันขอความช่วยเหลือได้ที่นี่: programmers.stackexchange.com
Elder 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-devและlibapt-pkg-docตามลำดับสำหรับไลบรารีและเอกสารประกอบ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.