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 update
i apt-get install
.
Czy to prawidłowe założenie?
apt
dpkg
deb
add-apt-repository
Stéphane
źródło
źródło
Odpowiedzi:
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.d
jest 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ływaniaadd-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 update
lubapt-get install
itp. 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.d
któ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.źródło