| Summary: | делать sync после скачивания пакетов | ||
|---|---|---|---|
| Product: | Sisyphus | Reporter: | Sergey Y. Afonin <asy> |
| Component: | apt | Assignee: | placeholder <placeholder> |
| Status: | NEW --- | QA Contact: | qa-sisyphus |
| Severity: | enhancement | ||
| Priority: | P5 | CC: | boyarsh, glebfm, imz, ldv, placeholder, vt |
| Version: | unstable | ||
| Hardware: | x86_64 | ||
| OS: | Linux | ||
|
Description
Sergey Y. Afonin
2026-02-28 21:00:38 MSK
Интересно конечно, но не известно на сколько это поможет в реальных жизненных ситуациях. (Тем более sync можно делать по-разному.) Лично мне бы нужно было проводить эксперименты, чтоб все понять. ps. И ещё - нет ли этого уже в апстримном apt? > Интересно конечно, но не известно на сколько это поможет в реальных жизненных ситуациях.
Мне установка посредством rpm из /var/cache/apt/archives помогала. Правда там система уходила в процессе установки в нормальную перезагрузку (баг был когда-то, с systemd связанный).
То есть база rpm порушенной получалась, но пакеты скачанные на диске были. А в случае сбоя по питанию предполагается, что если до sync, то ещё ничего не ставилось и ничего не произойдёт, а если после, то пакеты, опять же, уже зафиксированы на локальном носителе. Такие вот мысли.
Сравнил у нас и в Дебиане. [root@alt /]# strace -yf -o a apt-get install pgpdump [root@alt /]# grep sync a 65 fdatasync(5</var/lib/rpm/Sigmd5>) = 0 65 fdatasync(5</var/lib/rpm/Name>) = 0 65 fdatasync(5</var/lib/rpm/Requirename>) = 0 65 fdatasync(5</var/lib/rpm/Sha1header>) = 0 65 fdatasync(5</var/lib/rpm/Group>) = 0 65 fdatasync(5</var/lib/rpm/Dirnames>) = 0 65 fdatasync(5</var/lib/rpm/Providename>) = 0 65 fdatasync(5</var/lib/rpm/Installtid>) = 0 65 fdatasync(5</var/lib/rpm/Basenames>) = 0 65 msync(0x7fc3f9201000, 262424, MS_SYNC) = 0 65 msync(0x7fc3f9201000, 106192614, MS_SYNC) = 0 65 msync(0x7fc3f9201000, 262424, MS_SYNC) = 0 65 fdatasync(4</var/lib/rpm/Packages>) = 0 65 fdatasync(4</var/lib/rpm/Packages>) = 0 65 fdatasync(4</var/lib/rpm/Packages>) = 0 65 fdatasync(9</var/lib/rpm/Name>) = 0 65 fdatasync(11</var/lib/rpm/Basenames>) = 0 65 fdatasync(12</var/lib/rpm/Group>) = 0 65 fdatasync(13</var/lib/rpm/Requirename>) = 0 65 fdatasync(14</var/lib/rpm/Providename>) = 0 65 fdatasync(19</var/lib/rpm/Dirnames>) = 0 65 fdatasync(20</var/lib/rpm/Installtid>) = 0 65 fdatasync(21</var/lib/rpm/Sigmd5>) = 0 65 fdatasync(22</var/lib/rpm/Sha1header>) = 0 65 fdatasync(4</var/lib/rpm/Packages>) = 0 65 fdatasync(22</var/lib/rpm/Sha1header>) = 0 65 fdatasync(21</var/lib/rpm/Sigmd5>) = 0 65 fdatasync(20</var/lib/rpm/Installtid>) = 0 65 fdatasync(19</var/lib/rpm/Dirnames>) = 0 65 fdatasync(14</var/lib/rpm/Providename>) = 0 65 fdatasync(13</var/lib/rpm/Requirename>) = 0 65 fdatasync(12</var/lib/rpm/Group>) = 0 65 fdatasync(11</var/lib/rpm/Basenames>) = 0 65 fdatasync(9</var/lib/rpm/Name>) = 0 [root@alt /]# Действительно, ничего нет кроме того, что делает rpm для rpmdb. root@deb:/# strace -fy -o a apt-get install gum root@deb:/# grep sync a 100 fsync(10</var/lib/dpkg/tmp.ci/md5sums>) = 0 100 fsync(10</var/lib/dpkg/tmp.ci/control>) = 0 100 fsync(9</var/lib/dpkg/tmp.ci>) = 0 100 fsync(4</var/lib/dpkg/updates/tmp.i>) = 0 100 fsync(4</var/lib/dpkg/updates>) = 0 100 sync_file_range(10</usr/bin/gum.dpkg-new>, 0, 0, SYNC_FILE_RANGE_WRITE) = 0 100 sync_file_range(10</usr/share/doc/gum/changelog.Debian.gz.dpkg-new>, 0, 0, SYNC_FILE_RANGE_WRITE) = 0 100 sync_file_range(10</usr/share/doc/gum/copyright.dpkg-new>, 0, 0, SYNC_FILE_RANGE_WRITE) = 0 100 sync_file_range(10</usr/share/doc/gum/examples/README.md.dpkg-new>, 0, 0, SYNC_FILE_RANGE_WRITE) = 0 100 sync_file_range(10</usr/share/doc/gum/examples/choose.tape.dpkg-new>, 0, 0, SYNC_FILE_RANGE_WRITE) = 0 100 sync_file_range(10</usr/share/doc/gum/examples/commit.sh.dpkg-new>, 0, 0, SYNC_FILE_RANGE_WRITE) = 0 100 sync_file_range(10</usr/share/doc/gum/examples/commit.tape.dpkg-new>, 0, 0, SYNC_FILE_RANGE_WRITE) = 0 100 sync_file_range(10</usr/share/doc/gum/examples/confirm.tape.dpkg-new>, 0, 0, SYNC_FILE_RANGE_WRITE) = 0 100 sync_file_range(10</usr/share/doc/gum/examples/convert-to-gif.sh.dpkg-new>, 0, 0, SYNC_FILE_RANGE_WRITE) = 0 100 sync_file_range(10</usr/share/doc/gum/examples/customize.tape.dpkg-new>, 0, 0, SYNC_FILE_RANGE_WRITE) = 0 100 sync_file_range(10</usr/share/doc/gum/examples/demo.sh.dpkg-new>, 0, 0, SYNC_FILE_RANGE_WRITE) = 0 100 sync_file_range(10</usr/share/doc/gum/examples/demo.tape.dpkg-new>, 0, 0, SYNC_FILE_RANGE_WRITE) = 0 100 sync_file_range(10</usr/share/doc/gum/examples/diyfetch.dpkg-new>, 0, 0, SYNC_FILE_RANGE_WRITE) = 0 100 sync_file_range(10</usr/share/doc/gum/examples/fav.txt.dpkg-new>, 0, 0, SYNC_FILE_RANGE_WRITE) = 0 100 sync_file_range(10</usr/share/doc/gum/examples/file.tape.dpkg-new>, 0, 0, SYNC_FILE_RANGE_WRITE) = 0 100 sync_file_range(10</usr/share/doc/gum/examples/filter-key-value.sh.dpkg-new>, 0, 0, SYNC_FILE_RANGE_WRITE) = 0 100 sync_file_range(10</usr/share/doc/gum/examples/flavors.txt.dpkg-new>, 0, 0, SYNC_FILE_RANGE_WRITE) = 0 100 sync_file_range(10</usr/share/doc/gum/examples/format.ansi.dpkg-new>, 0, 0, SYNC_FILE_RANGE_WRITE) = 0 100 sync_file_range(10</usr/share/doc/gum/examples/git-branch-manager.sh.dpkg-new>, 0, 0, SYNC_FILE_RANGE_WRITE) = 0 100 sync_file_range(10</usr/share/doc/gum/examples/git-stage.sh.dpkg-new>, 0, 0, SYNC_FILE_RANGE_WRITE) = 0 100 sync_file_range(10</usr/share/doc/gum/examples/gum.js.dpkg-new>, 0, 0, SYNC_FILE_RANGE_WRITE) = 0 100 sync_file_range(10</usr/share/doc/gum/examples/gum.py.dpkg-new>, 0, 0, SYNC_FILE_RANGE_WRITE) = 0 100 sync_file_range(10</usr/share/doc/gum/examples/gum.rb.dpkg-new>, 0, 0, SYNC_FILE_RANGE_WRITE) = 0 100 sync_file_range(10</usr/share/doc/gum/examples/input.tape.dpkg-new>, 0, 0, SYNC_FILE_RANGE_WRITE) = 0 100 sync_file_range(10</usr/share/doc/gum/examples/kaomoji.sh.dpkg-new>, 0, 0, SYNC_FILE_RANGE_WRITE) = 0 100 sync_file_range(10</usr/share/doc/gum/examples/magic.sh.dpkg-new>, 0, 0, SYNC_FILE_RANGE_WRITE) = 0 100 sync_file_range(10</usr/share/doc/gum/examples/pager.tape.dpkg-new>, 0, 0, SYNC_FILE_RANGE_WRITE) = 0 100 sync_file_range(10</usr/share/doc/gum/examples/posix.sh.dpkg-new>, 0, 0, SYNC_FILE_RANGE_WRITE) = 0 100 sync_file_range(10</usr/share/doc/gum/examples/skate.sh.dpkg-new>, 0, 0, SYNC_FILE_RANGE_WRITE) = 0 100 sync_file_range(10</usr/share/doc/gum/examples/spin.tape.dpkg-new>, 0, 0, SYNC_FILE_RANGE_WRITE) = 0 100 sync_file_range(10</usr/share/doc/gum/examples/story.txt.dpkg-new>, 0, 0, SYNC_FILE_RANGE_WRITE) = 0 100 sync_file_range(10</usr/share/doc/gum/examples/test.sh.dpkg-new>, 0, 0, SYNC_FILE_RANGE_WRITE) = 0 100 sync_file_range(10</usr/share/doc/gum/examples/write.tape.dpkg-new>, 0, 0, SYNC_FILE_RANGE_WRITE) = 0 100 sync_file_range(10</usr/share/gum/completion/gum.bash.dpkg-new>, 0, 0, SYNC_FILE_RANGE_WRITE <unfinished ...> 100 <... sync_file_range resumed>) = 0 100 sync_file_range(10</usr/share/gum/completion/gum.fish.dpkg-new>, 0, 0, SYNC_FILE_RANGE_WRITE) = 0 100 sync_file_range(10</usr/share/gum/completion/gum.zsh.dpkg-new>, 0, 0, SYNC_FILE_RANGE_WRITE) = 0 100 sync_file_range(10</usr/share/man/man1/gum.1.gz.dpkg-new>, 0, 0, SYNC_FILE_RANGE_WRITE) = 0 100 fsync(9</var/lib/dpkg/info/gum.list-new>) = 0 100 fsync(9</var/lib/dpkg/info>) = 0 100 fsync(9</var/lib/dpkg/info>) = 0 100 fsync(4</var/lib/dpkg/updates/tmp.i> <unfinished ...> 100 <... fsync resumed>) = 0 100 fsync(4</var/lib/dpkg/updates>) = 0 100 fsync(4</var/lib/dpkg/updates/tmp.i>) = 0 100 fsync(4</var/lib/dpkg/updates>) = 0 100 fsync(9</var/lib/dpkg/status-new>) = 0 100 fsync(9</var/lib/dpkg>) = 0 100 fsync(9</var/lib/dpkg/updates>) = 0 112 fsync(4</var/lib/dpkg/updates/tmp.i> <unfinished ...> 112 <... fsync resumed>) = 0 112 fsync(4</var/lib/dpkg/updates>) = 0 112 fsync(4</var/lib/dpkg/updates/tmp.i>) = 0 112 fsync(4</var/lib/dpkg/updates>) = 0 112 fsync(4</var/lib/dpkg/updates/tmp.i>) = 0 112 fsync(4</var/lib/dpkg/updates>) = 0 112 fsync(9</var/lib/dpkg/status-new>) = 0 112 fsync(9</var/lib/dpkg>) = 0 112 fsync(9</var/lib/dpkg/updates>) = 0 root@deb:/# Синкают через sync_file_range каждый распакованный файл перед переименованием (плюс свою базу данных), но скачанный dpkg архив тоже нет. И я имею ввиду один sync делать, перед началом установки. После каждого скачивания наверное не нужно. |