apt-get install <package> setara dengan menggunakan pustaka C ++ apt-pkg

9

Saya sedang membangun aplikasi QT (C ++) kecil di mana saya meminta pengguna perangkat lunak yang ingin ia instal. Setelah dia memilih beberapa paket a, b, c dari daftar yang harus saya lakukan adalah menjalankan

sudo apt-get install a b c

Salah satu cara untuk melakukan ini adalah menggunakan Qprocess atau Sistem dan menjalankan perintah ini langsung dari C ++. Tapi saya pikir ini akan menjadi hack dan ingin melakukannya dengan menggunakan apt-pkg C ++ library. Tapi sayangnya dokumentasi sangat jarang untuk perpustakaan ini :( Saya melihat kode sumber dari beberapa software serupa - Software updater (apt-watch) dll dan merasa terlalu kompleks. Hanya untuk menjalankan perintah di atas, ia memiliki banyak kode - Menginisialisasi pkgCacheFile, PkgIterator , pkgAcqArchive.

Apakah saya harus melakukan semua ini untuk menjalankan perintah sederhana ini? Apakah tidak ada fungsi langsung yang menggunakan nama perangkat lunak sebagai argumen dan menginstalnya? Di mana saya bisa mendapatkan contoh kode kerja untuk hal yang sama?

Mac
sumber
1
Saya bersumpah libQapt adalah apa yang Anda cari, tetapi kurangnya dokumentasi untuk memverifikasi ini mengecewakan. Deskripsi tersebut cocok "untuk memudahkan pengembangan manajer paket yang ditulis dalam Qt dan C ++"
Braiam
Jika saya berada di posisi Anda, saya akan mencari bantuan di sini: programmers.stackexchange.com
Penatua Geek
Apakah masalah ini sudah diselesaikan?
Pengguna Terdaftar

Jawaban:

2

Saya hanya akan menggunakan sistem:

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.

Ini bukan peretasan untuk menggunakan solusi sederhana.

David Cullen
sumber
0

Jawabannya adalah libapt-pkg. Ini adalah perpustakaan yang ditulis dalam C, yang membuatnya juga dapat diakses dari kode C ++.

Instal paket libapt-pkg-devdan libapt-pkg-docmasing-masing untuk perpustakaan dan dokumentasinya.

Juliano ENS
sumber