Como tornar o dpkg mais rápido?


17

A instalação (des) de pacotes em um sistema Debian é terrivelmente lenta, em parte porque funciona com um monte de arquivos (pequenos). Além de obter um armazenamento mais rápido, como faço para acelerar? Estou pensando em talvez carregar um diretório altamente acessado na RAM como uma solução, mas como faço isso? Existe uma solução melhor?


Qual sistema de arquivos e quantos pacotes você possui? Para diretórios grandes, ext3 ou superior, com a dir_indexopção Reiser, é uma melhoria dramática em comparação com ext2 ou ext3 sem dir_index.
Gilles 'SO- stop be evil'

@ Gilles Eu uso o ext4 e tenho ~ 1400 pacotes instalados.
tshepang

Respostas:


17

Para esta solução, você precisará de uma versão do dpkg de pelo menos 1.15.8.6.

Desde essa versão do dpkg, existe uma nova force-unsafe-ioopção que desabilita o dpkg de chamar sync () e similares entre todos os pacotes. Você pode adicionar esta opção à configuração em / etc / dpkg para que ela esteja sempre em vigor.

Se você possui uma versão mais antiga do dpkg, pode usar alternativamente o eatmydata .

E lembre-se de que essas duas soluções não são seguras e provavelmente levarão à perda de dados se houver uma falha de energia durante ou logo após a execução do dpkg.


Então, eu só adicionar force-unsafe-ioa /etc/dpkg/dpkg.cfg , e é isso?
tshepang

1
Atualmente, não tenho uma caixa Linux funcionando (falha na PSU), mas echo "force-unsafe-io" > /etc/dpkg/dpkg.cfg.d/force-unsafe-iodevo funcionar. Ou você pode adicioná-lo ao arquivo de configuração principal do dpkg, que eu acho que é /etc/dpkg/dpkg.cfg .
Arrowmaster 11/11

3
Eu cronometrei com e sem essa opção, e não houve mudança perceptível no desempenho.
tshepang 28/02

Você tentou com eatmydata? Além disso, quando comecei a usar a opção force-unsafe-io nos chroots do pbuilder, lembro-me de uma diferença muito notável.
Arrowmaster

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.