Jak przyspieszyć dpkg?

17

Instalacja (nie) pakietu w systemie Debian jest strasznie powolna, częściowo dlatego, że działa z całą masą (małych) plików. Jak mogę przyspieszyć przechowywanie? Zastanawiam się, czy może ładowanie do pamięci RAM katalogu o wysokiej dostępności jako jednego rozwiązania, ale jak to zrobić? Czy istnieje „lepsze” rozwiązanie?

tshepang
źródło
Jaki system plików i ile masz pakietów? W przypadku dużych katalogów, ext3 lub wyższy z dir_indexopcją lub Reiser, jest radykalną poprawą w porównaniu do ext2 lub ext3 bez dir_index.
Gilles „SO- przestań być zły”
@Gilles Używam ext4 i mam zainstalowane ~ 1400 pakietów.
tshepang

Odpowiedzi:

17

Do tego rozwiązania potrzebujesz wersji dpkg co najmniej 1.15.8.6.

Od tej wersji dpkg dostępna jest nowa force-unsafe-ioopcja, która uniemożliwia dpkg wywoływanie sync () i tym podobnych między każdym pakietem. Możesz dodać tę opcję do config w / etc / dpkg, aby zawsze obowiązywała.

Jeśli masz starszą wersję dpkg, możesz alternatywnie użyć eatmydata .

I pamiętaj, że oba te rozwiązania są niebezpieczne i prawdopodobnie doprowadzą do utraty danych, jeśli nastąpi awaria zasilania podczas działania programu dpkg lub wkrótce po nim.

Arrowmaster
źródło
Po prostu dodaję force-unsafe-iodo /etc/dpkg/dpkg.cfg i to wszystko?
tshepang
1
Obecnie nie mam działającego systemu Linux (awaria zasilacza), ale echo "force-unsafe-io" > /etc/dpkg/dpkg.cfg.d/force-unsafe-iopowinien działać. Lub możesz dodać go do głównego pliku konfiguracyjnego dpkg, który moim zdaniem to /etc/dpkg/dpkg.cfg .
Arrowmaster
3
I timed it zi bez tej opcji, i nie było żadnego zauważalna zmiana w wydajności.
tshepang
Czy próbowałeś tego z eatmydata? Dodatkowo, kiedy zacząłem używać opcji force-unsafe-io w moich chrootach programisty, pamiętam bardzo zauważalną różnicę.
Arrowmaster