Czy mogę wywoływać inne polecenia dpkg lub apt- * w moich skryptach preinst?

9

W ramach mojego niestandardowego (wewnętrznego) pliku .deb, który zostanie wdrożony na urządzeniach Ubuntu 12.04, muszę dodać kilka repozytoriów PPA, uruchomić aktualizację apt-get, a następnie zainstalować pakiety z tych PPA.

Czy można to zrobić za pomocą skryptów .preinst lub .postinst w moim pliku .deb?

Zakładam, że kiedy mój plik .deb jest zainstalowany ( sudo dpkg -i testing.deb), że niektóre zamki lub mechanizmy prawdopodobny, które uniemożliwiłyby mi dzwoni niektórych poleceń, takich jak add-apt-repository, apt-get updatei apt-get install.

Czy to prawidłowe założenie?

Stéphane
źródło
Powiązane: stackoverflow.com/questions/18599599/…
Javier López

Odpowiedzi:

7

Masz rację. Skrypty administratora nie powinny wprowadzać żadnych zmian w stanach apt lub dpkg, oprócz zmian, które zostaną wprowadzone podczas instalacji pakietu.

Instalacja pliku /etc/apt/sources.list.djest jednak w porządku. Większość pakietów, które wypełniają rolę typu „zainstaluj ten pakiet, aby dodać repozytorium APT X do systemu”, po prostu to robi (w przeciwieństwie do wywoływania add-apt-repository). Często zdarza się również upuszczanie klucza publicznego GPG używanego do podpisywania repozytorium /etc/apt/trusted.gpg.d.

Jeśli chcesz ułatwić użytkownikowi wykonanie dodatkowych kroków instalacyjnych dla twojego oprogramowania, możesz po prostu wysłać skrypt, który wykonuje zadanie, i nakazać użytkownikowi uruchomienie skryptu ręcznie.

Ale jeśli naprawdę, naprawdę chcesz zadzwonić apt-get updatelub apt-get installitp. Automatycznie, i nie masz nic przeciwko temu, że twój pakiet będzie całkowicie niedopuszczalny w Debianie lub Ubuntu, a twoi użytkownicy są w porządku z pakietem działającym w ten sposób, być może możesz coś, w /etc/cron.dktórym sprawdza się pod kątem istniejących blokad apt lub dpkg, a jeśli nie są wstrzymywane, wykonuje dodatkowe kroki instalacji i zapewnia, że ​​te kroki nie będą wykonywane ponownie. Nie polecam tego podejścia.

Paweł
źródło