Obrigado a todos e obrigado a Andy na Canonical que deu algumas boas dicas em outro fórum. Eu procurei um pouco nisso, não apenas aqui, e aprendi algumas coisas e suspeitei de outras. Demais para colocar em um comentário.
Estritamente falando, a pergunta foi respondida correta e prontamente pelo user535733 no segundo comentário ao meu post inicial e, para ser justo, se ele colocar isso em uma resposta, ficarei feliz em aceitá-lo.
@ user535733 - Observe o acima, por favor.
Mas o assunto foi expandido por waltinator no primeiro comentário para incluir a possibilidade de criar uma ferramenta para fazer o trabalho e por David em COMO o apt-check funciona e por que ele não fará isso sem o gen-linux instalado. / p>
O seguinte está longe de ser completo, algumas delas são especulações (claramente rotuladas, eu espero), pode até haver alguns pequenos erros (imagine isso) e eu posso voltar e editar mais algumas coisas. Talvez alguém tropeçando em esta página encontrará algumas dessas informações de interesse. Você pode ter que executar os comandos em seu próprio sistema para ver a saída claramente no formato correto.
re apt-check & amp; linux-generic:
O genérico do Linux parece ser um arenque vermelho. Mea culpa, eu assumi que a falta era o problema. Eu não acho que o apt-check não possa fazer isso, mesmo que o IS genérico do Linux esteja instalado. É uma questão difícil de testar sem instalar o 4.4.0-77. Vou testar no futuro, quando não precisar me preocupar com um kernel que quebra sistematicamente meus sistemas xeniais.
O problema NÃO é que o apt-check não tenha acesso aos dados necessários. Você definitivamente NÃO precisa do linux-generic instalado para obter metadados sobre possíveis atualizações do kernel suficientes para mostrar o que está disponível e se ele possui correções de segurança.
Eu assumo que "apt-get update", uma parte do apt, obtém a informação (mais sobre isso abaixo), mas o que quer que seja:
-
NÃO requer que o linux-generic seja instalado para ver possíveis atualizações do kernel.
-
NÃO requer que o linux-generic seja instalado para determinar de qual versão do kernel o linux-generic depende atualmente.
-
NÃO requer o genux-linux para determinar se uma possível atualização do kernel tem correções de segurança.
Além disso, qualquer informação obtida para começar, a informação persiste localmente (presumivelmente até que você a limpe). Portanto, mesmo fora da linha e sem o genérico do linux instalado, o apt-check tem acesso às informações necessárias - ele simplesmente não o usa, provavelmente BY DESIGN. Mas ele pode ser usado em um script - eu não tenho o genux-linux instalado e aqui estão 2 exemplos de um teste que funciona no meu sistema mesmo offline:
$ apt-cache showpkg linux-image-4.4.0-75-generic | grep "$(lsb_release --codename --short)-security"
e a saída:
4.4.0-75.96 (/var/lib/apt/lists/us.archive.ubuntu.com_ubuntu_dists_xenial-security_main_binary-amd64_Packages) (/var/lib/apt/lists/us.archive.ubuntu.com_ubuntu_dists_xenial-updates_main_binary-amd64_Packages)
File: /var/lib/apt/lists/us.archive.ubuntu.com_ubuntu_dists_xenial-security_main_binary-amd64_Packages
File: /var/lib/apt/lists/us.archive.ubuntu.com_ubuntu_dists_xenial-security_main_i18n_Translation-en
$
Então, 4.4.0-75 tem correções de segurança.
Em contraste:
$ apt-cache showpkg linux-image-4.4.0-77-generic | grep "$(lsb_release --codename --short)-security"
e a saída (apenas um retorno do prompt):
$
4.4.0-77 NÃO.
re apt-check & amp; apt:
Apt-check, parte do update-notifier-common (not update-notifier como mencionado acima), pode depender do apt para suas informações sobre pacotes, como David indica, provavelmente especificamente em "apt-get update", mesmo se O apt não depende do genérico-linux para informações sobre possíveis atualizações do kernel. É o que eu esperaria e não vejo nenhuma alternativa, mas estranhamente, a menos que os devs tenham marcado as dependências erradas, o apt NÃO é uma dependência para o apt-check:
$ apt-rdepends update-notifier-common | grep apt
e a saída:
Reading package lists... Done
Building dependency tree
Reading state information... Done
Depends: python3-apt
python3-apt
Depends: libapt-inst2.0 (>= 1.1~exp9)
Depends: libapt-pkg5.0 (>= 1.1~exp9)
Depends: python-apt-common
libapt-inst2.0
Depends: libapt-pkg5.0 (>= 1.1~exp9)
libapt-pkg5.0
python-apt-common
$
Portanto, em teoria, você não precisa executar o apt-check - você pode usá-lo em um sistema gerenciado com o dpkg e o dselect, embora eu não consiga ver como isso funciona. Eu certamente não daria chances até que eu realmente tentei (e talvez por curiosidade mais tarde), mas é assim que as dependências são marcadas. Você pensaria que os devs marcariam apt como uma dependência para update-notifier-common se um de seus comandos REQUIRED estiver apto a funcionar, mas pode ser um descuido.
Então, com relação à pergunta original, aqui está o que agora suspeito ser verdadeiro:
"O apt-check ... pode ser feito para tratar possíveis atualizações do kernel, da mesma forma que faz atualizações não-kernel, detectando-as e distinguindo entre aquelas que incorporam correções de segurança, e aquelas que não ... sem ter o meta-pacote linux-genérico instalado? "
Não, e provavelmente também não pode ser genérico com o linux.
"E se o apt-check não puder fazer isso, existe algum outro programa que possa?"
Não, fora da caixa, por assim dizer.
Mas, você está criando algo que possa
Como o Waltinator sugeriu, o apt-check provavelmente poderia ser reescrito para fazê-lo se você tiver o conhecimento e a inclinação. Mas, como David sugeriu, essa função provavelmente pode ser roteirizada com outras ferramentas e eu provavelmente posso fazer isso muito mais facilmente do que aprender a reescrever o apt-check.
Como mencionado anteriormente, você pode obter o nome do pacote que contém o kernel mais novo e mais inteligente abençoado pela Canonical, aplicando alguns grep e cut magic na saída de:
apt-get install --simulate linux-generic
e você pode classificá-lo como tendo / not_having correções de segurança com algo como
apt-cache showpkg linux-image-4.4.0-75-generic | grep "$(lsb_release --codename --short)-security"
como ilustrado acima.
Idealmente, para fazer isso, precisamos de um histórico de versão completo do que o genux-generic dependeu para evitar um falso negativo em uma situação como esta:
Você tem a versão 100 instalada.
A versão 101 tinha correções de segurança, mas seu computador não estava ligado naquela semana.
A versão 102 NÃO possui correções de segurança (em relação a 101, mas em relação a 100, pois ainda possui as que foram feitas em 101).
Seria bom se eu pudesse enrolar um histórico completo de versões do linux-genérico e, de alguma forma, descobrir em qual "bolso" do repo os kernels dependentes foram publicados. Até agora, eu só descobri como fazer isso para versões antigas que ainda estão no repositório.
Este comando:
apt-cache madison linux-generic
está indo na direção certa, mas acho que só recebe o que está no repo, não o que estava no repo, então não tenho certeza se a informação que ele gera será suficiente para evitar o cenário falso-negativo detalhado acima. Se no exemplo acima, 101 já foi retirado do repositório, eu não acho que a informação do "apt-cache madison linux-genérico" seria suficiente.
E, oh sim
Mais uma coisa que eu devo apontar para que alguém se interesse nisto e gaste muito tempo sem saber:
Eu ainda estou cutucando isso porque eu comecei e sou teimosa. Mas enquanto, por puro acaso até onde eu posso dizer, o kernel que me deu problemas NÃO tem correções de segurança, e portanto se eu tivesse um script de trabalho para isso, ele nunca teria quebrado meus sistemas xeniais, Andy me diz que 4.4.0-77 é um caso raro e que a grande maioria das atualizações do kernel que o genux-generic depende do DO tem correções de segurança. Eu suspeito que ele estava sendo figurativo / hiperbólico quando disse "99%", mas mesmo admitindo isso, eu suspeito que um mecanismo do tipo apt-check que se aplica a possíveis atualizações do kernel não irá prevenir uma necessidade desnecessária ) Atualize com muita freqüência, e assim evitará atualizações desnecessárias do kernel, quebrando o apt ou outros componentes cruciais do sistema, ainda mais raramente. Parece ser apenas casual aleatório que teria feito isso por mim. BTW, 4.4.0-78 funciona bem para mim. Andy estava certo - o que quer que fosse sobre o 77 é fixo.