Powiedzmy, że buduję aplikację do pakietu DEB, który ma zalecaną zależność od pakietu, nazwijmy go pakiet1.
Tak więc pakiet 1, jeśli jest zainstalowany, może zapewnić dodatkową funkcjonalność mojemu programowi, ale nie jest bezpośrednio związany z podstawową funkcjonalnością mojego programu (dlatego jest to zalecany pakiet)
Tak więc użytkownik nie wybiera początkowo instalacji zalecanego pakietu (w Centrum oprogramowania Ubuntu możesz wybrać, zaznaczając / odznaczając, aby zainstalować lub nie instalując zalecanych pakietów), ale w przyszłości, podczas korzystania z mojej aplikacji, poprosi o odpowiednia funkcjonalność.
Jak najlepiej powiedzieć mu, że aby ta funkcja działała, należy zainstalować dodatkowy pakiet? Jakiego programu mogę użyć, aby zainstalować ten pakiet bezpośrednio z mojego programu z oknem dialogowym wskazującym, jak przebiega proces instalacji?
Chcę to zrobić w sposób domyślny, a najlepiej w sposób niezależny od środowiska Linux Desktop Environment.
Krótko mówiąc, chcę sposobu na zainstalowanie pakietu z mojego programu, nie otwierając Centrum Oprogramowania Ubuntu (za pośrednictwem adresu URL apt: //) ani nie robiąc go w tle.
Idealnie byłoby to okno dialogowe używane przez Menedżera aktualizacji (lub, dla tych, którzy pamiętają, z Menedżera pakietów Synaptic).
PS: Wolałbym coś, co można zaimplementować za pomocą C ++!
źródło
Możesz wziąć przykład z totemowego odtwarzacza multimedialnego, gdy monituje on użytkownika o zainstalowanie brakujących kodeków lub gdy otworzysz opcje udostępniania katalogu w nautilus za pomocą kliknięcia prawym przyciskiem myszy, wyświetli monit o zainstalowanie samby.
Myślę, że używają do tego
sessioninstaller
pakietu. Zobaczman session-installer
i https://launchpad.net/sessioninstallerMożesz także użyć polecenia
xdg-open apt://package
: otworzy domyślny menedżer pakietów z możliwością zainstalowania pakietu (centrum oprogramowania ubuntu w ostatnich wydaniach).źródło
To stare pytanie, ale znalazłem odpowiedź
apturl
.Działa w następujący sposób:
apturl apt:packagename
i właśnie tego potrzebuję i czego używa nautilus!Co ważne, jest dostępny fabrycznie zainstalowany na wielu dystrybucjach Linuksa :)
źródło