
Há um bug no systemd-240 que está afetando o jackdbus, o que interrompe toda a minha configuração de áudio. O bug foi corrigido no systemd-241. Existe uma maneira de atualizar para o systemd-241?
Responder1
Outra opção seria recompilar o systemd-240 com o patch aplicado, assumindo que ele se aplica perfeitamente ao systemd-240.
Se for possível, é realmente simples. Você só precisa adicionar seu patch à lista de patches já usados pelo Ubuntu.
Responder2
Isenção de responsabilidade
Não estou defendendo esse método como uma boa solução para o problema. Experimente por sua própria conta e risco.
Além disso, o Ubuntu 19.10 vem com o systemd 242, então, se você planeja atualizar para o Ubuntu 19.10, não há razão para tentar isso.
Uma correção “sobre” a instalação atual
Basicamente é a ideia que está emResposta do solsTiCe: corrija a fonte da distribuição. Mas então: não reinstale todo o systemd
sistema. Substitua apenas o systemd
executável — isso pode ser feito porque o patch afeta apenas o código do systemd
. Dessa forma, tenho certeza de não atrapalhar muito a instalação atual.
Meu caminho para a solução não foi tão “linear” como vou descrevê-lo, porque primeiro eu queria corrigir o sistema original v240 (usando os bits corretos do v241), construí-lo e instalá-lo de forma personalizada. Então desviei para o uso deconstrutor.
A seguinte descrição está escritaAté pareceEu entendi diretamente. Espero não ter esquecido detalhes no processo de limpeza das etapas.
Seguireste tutorialpara instalarconstrutor, prepare o ambiente para a compilação ( sudo pbuilder create --distribution disco --debootstrapopts --variant=buildd
), baixe o código-fonte ( apt-get source systemd
). Você obtém três arquivos (dois arquivos e um .dsc
) e um diretório. Portanto, provavelmente você deseja executar o comando apt-get em uma pasta totalmente nova, para evitar poluição de arquivos em seu diretório atual.
Então, cloneo repositório github do systemde confira a tag v241 ( git checkout tags/v241
).
Agora diff -u
entre o Ubuntu src/core/main.c
e o da tag v241 para obter um patch, digamos my.patch
. Eu o editei para remover coisas que podem afetar mais do que apenas o limite de memlock (uma correção semelhante foi feita também para o número de descritores de arquivos abertos, e mantive isso também), e também para acertar os cabeçalhos na forma de :
--- a/src/core/main.c ....
+++ b/src/core/main.c ....
Em vez de a
e b
você pode ter outros nomes, é claro.
Dentro da pasta systemd-240
(obtida executando apt-get source systemd
) há debian/patches
. Copie my.patch
lá e adicione o nome do arquivo no final de debian/patches/series
.
Tente construir o pacote ( sudo pbuilder build systemd_240-6ubuntu5.dsc
); isso também deve obter as dependências e, se estiver tudo bem, você tem o .deb
in /var/cache/pbuilder/result/
; mas é o “original”.
Mude o diretório systemd-240
e execute pdebuild --use-pdebuild-internal
.
Depois de um tempo... /var/cache/pbuilder/result
há um novo .deb
(mesmo nome de antes...), mas desta vez é o corrigido. Você deverá ver uma linha se fizer isso
tar -tJf /var/cache/pbuilder/result/systemd_240-6ubuntu5.debian.tar.xz |grep my.patch
desde que você tenha nomeado seu patch my.patch
e que ele tar.xz
tenha esse nome.
Agora, descompacte o .deb
in a-folder
( dpkg-deb -R systemd_240-6ubuntu5_amd64.deb a-folder
) e copie como root a-folder/lib/systemd/systemd
em /lib/systemd/
. Não se esqueça de fazer backup do original /lib/systemd/systemd
(renomeei-o como __systemd
). Se algo der errado, você poderá substituir o novo pelo antigo, provavelmente a partir de um shell de recuperação.
Depois de reiniciar ulimit -l
deve dizer unlimited
(dependendo da sua configuração, mas suponho que você tenha lido até agora porque é o que você espera do seu usuário no grupo de áudio).
Recursos
- sistema v240 corrigido; Eu não compilei e tentei este - se vocêpodee quiser atualizar
systemd
de suas versões originais, sugiro usar a versão mais recente escolhendo a tag mais recente, por exemplo, hoje év243. - o patch comoessência no github, este aplicado na
systemd
fonte do Ubuntu, versão 240-6ubuntu5.7.
Este patch não é gerado conforme explicado na seção anterior, porque eudiferenciadoa fonte do Ubuntu com o já corrigido main.c
você pode encontrar noramo acima vinculado. O resultado final não deve diferir muito.
Nota final
Quando percebi esse problema pela primeira vez, algumas vezes atrás, depois de verificar se a configuração estava ok, decidi esperar que o Ubuntu o corrigisse (não consegui rastreá-lo até um bug do systemd).
Mas hoje isso me impediu de fazer coisas que eu realmente queria, então decidi que era hora de fazer algo a respeito.
Aquiemcomentário 7foi onde eu encontreio bug do sistemamencionado pela primeira vez, então encontrei esta pergunta.
Poucas horas depois, vi também um anúncio de dois dias atrás, às 19h10.
Não há necessidade de ressaltar que substituir um executável em um “sistema controlado por pacote” não é necessariamente uma boa ideia. Neste caso, porém, por mim está tudo bem.