Java 17 для службы подписи: установщик ставит openjdk-17-jre-headless там, где Java по умолчанию старее (Ubuntu 22.04 — 11; crypto-service собран под 17), в слой образа кладётся Java 17; «Подготовка модулей» и проверка готовности не принимают падающую по кругу службу за работающую (работает ≥ 5 с) и называют причину — в том числе «слишком старая Java» с командой исправления
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014FsEKyJrYF69Cj9ZXzFLRi
This commit is contained in:
@@ -262,23 +262,44 @@ func memTotal() uint64 {
|
||||
return 0
|
||||
}
|
||||
|
||||
// javaPkg — Java для службы подписи (crypto-service собран под Java 17): где Java по умолчанию старше
|
||||
// не бывает (Ubuntu 22.04, Astra 1.7 — Java 11), ставится openjdk-17; где по умолчанию 17 и новее
|
||||
// (Debian 13 — Java 21), — пакет по умолчанию.
|
||||
func javaPkg(debs []string) string {
|
||||
if len(debs) > 0 { // пакеты с образа: какая Java положена в образ
|
||||
for _, d := range debs {
|
||||
if strings.HasPrefix(filepath.Base(d), "openjdk-17-jre-headless_") {
|
||||
return "openjdk-17-jre-headless"
|
||||
}
|
||||
}
|
||||
return "default-jre-headless"
|
||||
}
|
||||
out, err := run("apt-cache", "policy", "openjdk-17-jre-headless")
|
||||
if err == nil && strings.Contains(out, "Candidate:") && !strings.Contains(out, "Candidate: (none)") {
|
||||
return "openjdk-17-jre-headless"
|
||||
}
|
||||
return "default-jre-headless"
|
||||
}
|
||||
|
||||
func (in *installer) stepPackages() (string, error) {
|
||||
pkgs := []string{"ca-certificates", "curl", "postgresql", "postgresql-client", "default-jre-headless", "pcscd", "python3", "smbclient",
|
||||
pkgs := []string{"ca-certificates", "curl", "postgresql", "postgresql-client", "pcscd", "python3", "smbclient",
|
||||
// для интеграционного шлюза НРД без графики (ИШ 107: пароли в gnome-keyring, движок под виртуальным дисплеем)
|
||||
"gnome-keyring", "dbus", "xvfb", "xauth", "libsecret-tools", "unzip"}
|
||||
env := append(os.Environ(), "DEBIAN_FRONTEND=noninteractive")
|
||||
// Образ кладёт пакеты со всеми зависимостями в /var/lib/bj/debs — ставим с диска, без сети.
|
||||
// Не вышло (другая система, не хватает зависимости) — обычная установка из репозитория.
|
||||
if debs, _ := filepath.Glob(in.P(debsDir) + "/*.deb"); len(debs) > 0 && in.root == "" {
|
||||
withJava := append(pkgs, javaPkg(debs))
|
||||
args := append([]string{"install", "-y", "-qq", "--no-install-recommends"}, debs...)
|
||||
if _, err := runEnv(env, "apt-get", append(args, pkgs...)...); err == nil {
|
||||
if _, err := runEnv(env, "apt-get", append(args, withJava...)...); err == nil {
|
||||
_ = os.RemoveAll(in.P(debsDir))
|
||||
return strings.Join(pkgs, ", ") + " (с образа, без загрузки)", nil
|
||||
return strings.Join(withJava, ", ") + " (с образа, без загрузки)", nil
|
||||
}
|
||||
}
|
||||
if out, err := runEnv(env, "apt-get", "update", "-qq"); err != nil {
|
||||
return "", fmt.Errorf("apt-get update: %v\n%s", err, tail(out, 8))
|
||||
}
|
||||
pkgs = append(pkgs, javaPkg(nil))
|
||||
args := append([]string{"install", "-y", "-qq", "--no-install-recommends"}, pkgs...)
|
||||
if out, err := runEnv(env, "apt-get", args...); err != nil {
|
||||
return "", fmt.Errorf("apt-get install: %v\n%s", err, tail(out, 12))
|
||||
|
||||
Reference in New Issue
Block a user