<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>58065</bug_id>
          
          <creation_ts>2026-02-28 21:00:38 +0300</creation_ts>
          <short_desc>делать sync после скачивания пакетов</short_desc>
          <delta_ts>2026-03-01 18:23:02 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>apt</component>
          <version>unstable</version>
          <rep_platform>x86_64</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P5</priority>
          <bug_severity>enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sergey Y. Afonin">asy</reporter>
          <assigned_to name="placeholder@altlinux.org">placeholder</assigned_to>
          <cc>boyarsh</cc>
    
    <cc>glebfm</cc>
    
    <cc>imz</cc>
    
    <cc>ldv</cc>
    
    <cc>placeholder</cc>
    
    <cc>vt</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>282927</commentid>
    <comment_count>0</comment_count>
    <who name="Sergey Y. Afonin">asy</who>
    <bug_when>2026-02-28 21:00:38 +0300</bug_when>
    <thetext>Не плохо было бы сбрасывать дисковый кэш после скачивания пакетов. Например, это может помочь в принудительной установке пакетов из /var/cache/apt/archives в случае проблем с питанием при установке пакетов (rpm -Uvh --force *.rpm).

Можно, конечно, и самостоятельно подстраховываться посредством apt-get dist-upgrade -d предварительным.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282928</commentid>
    <comment_count>1</comment_count>
    <who name="Vitaly Chikunov">vt</who>
    <bug_when>2026-02-28 22:04:42 +0300</bug_when>
    <thetext>Интересно конечно, но не известно на сколько это поможет в реальных жизненных ситуациях. (Тем более sync можно делать по-разному.) Лично мне бы нужно было проводить эксперименты, чтоб все понять.

ps. И ещё - нет ли этого уже в апстримном apt?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282935</commentid>
    <comment_count>2</comment_count>
    <who name="Sergey Y. Afonin">asy</who>
    <bug_when>2026-03-01 14:05:51 +0300</bug_when>
    <thetext>&gt; Интересно конечно, но не известно на сколько это поможет в реальных жизненных ситуациях.

Мне установка посредством rpm из /var/cache/apt/archives помогала. Правда там система уходила в процессе установки в нормальную перезагрузку (баг был когда-то, с systemd связанный). 

То есть база rpm порушенной получалась, но пакеты скачанные на диске были. А в случае сбоя по питанию предполагается, что если до sync, то ещё ничего не ставилось и ничего не произойдёт, а если после, то пакеты, опять же, уже зафиксированы на локальном носителе. Такие вот мысли.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282941</commentid>
    <comment_count>3</comment_count>
    <who name="Vitaly Chikunov">vt</who>
    <bug_when>2026-03-01 17:15:23 +0300</bug_when>
    <thetext>Сравнил у нас и в Дебиане.

[root@alt /]# strace -yf -o a apt-get install pgpdump
[root@alt /]# grep sync a
65    fdatasync(5&lt;/var/lib/rpm/Sigmd5&gt;) = 0
65    fdatasync(5&lt;/var/lib/rpm/Name&gt;)   = 0
65    fdatasync(5&lt;/var/lib/rpm/Requirename&gt;) = 0
65    fdatasync(5&lt;/var/lib/rpm/Sha1header&gt;) = 0
65    fdatasync(5&lt;/var/lib/rpm/Group&gt;)  = 0
65    fdatasync(5&lt;/var/lib/rpm/Dirnames&gt;) = 0
65    fdatasync(5&lt;/var/lib/rpm/Providename&gt;) = 0
65    fdatasync(5&lt;/var/lib/rpm/Installtid&gt;) = 0
65    fdatasync(5&lt;/var/lib/rpm/Basenames&gt;) = 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&lt;/var/lib/rpm/Packages&gt;) = 0
65    fdatasync(4&lt;/var/lib/rpm/Packages&gt;) = 0
65    fdatasync(4&lt;/var/lib/rpm/Packages&gt;) = 0
65    fdatasync(9&lt;/var/lib/rpm/Name&gt;)   = 0
65    fdatasync(11&lt;/var/lib/rpm/Basenames&gt;) = 0
65    fdatasync(12&lt;/var/lib/rpm/Group&gt;) = 0
65    fdatasync(13&lt;/var/lib/rpm/Requirename&gt;) = 0
65    fdatasync(14&lt;/var/lib/rpm/Providename&gt;) = 0
65    fdatasync(19&lt;/var/lib/rpm/Dirnames&gt;) = 0
65    fdatasync(20&lt;/var/lib/rpm/Installtid&gt;) = 0
65    fdatasync(21&lt;/var/lib/rpm/Sigmd5&gt;) = 0
65    fdatasync(22&lt;/var/lib/rpm/Sha1header&gt;) = 0
65    fdatasync(4&lt;/var/lib/rpm/Packages&gt;) = 0
65    fdatasync(22&lt;/var/lib/rpm/Sha1header&gt;) = 0
65    fdatasync(21&lt;/var/lib/rpm/Sigmd5&gt;) = 0
65    fdatasync(20&lt;/var/lib/rpm/Installtid&gt;) = 0
65    fdatasync(19&lt;/var/lib/rpm/Dirnames&gt;) = 0
65    fdatasync(14&lt;/var/lib/rpm/Providename&gt;) = 0
65    fdatasync(13&lt;/var/lib/rpm/Requirename&gt;) = 0
65    fdatasync(12&lt;/var/lib/rpm/Group&gt;) = 0
65    fdatasync(11&lt;/var/lib/rpm/Basenames&gt;) = 0
65    fdatasync(9&lt;/var/lib/rpm/Name&gt;)   = 0
[root@alt /]#

Действительно, ничего нет кроме того, что делает rpm для rpmdb.

root@deb:/# strace -fy -o a apt-get install gum
root@deb:/# grep sync a
100   fsync(10&lt;/var/lib/dpkg/tmp.ci/md5sums&gt;) = 0
100   fsync(10&lt;/var/lib/dpkg/tmp.ci/control&gt;) = 0
100   fsync(9&lt;/var/lib/dpkg/tmp.ci&gt;)    = 0
100   fsync(4&lt;/var/lib/dpkg/updates/tmp.i&gt;) = 0
100   fsync(4&lt;/var/lib/dpkg/updates&gt;)   = 0
100   sync_file_range(10&lt;/usr/bin/gum.dpkg-new&gt;, 0, 0, SYNC_FILE_RANGE_WRITE) = 0
100   sync_file_range(10&lt;/usr/share/doc/gum/changelog.Debian.gz.dpkg-new&gt;, 0, 0, SYNC_FILE_RANGE_WRITE) = 0
100   sync_file_range(10&lt;/usr/share/doc/gum/copyright.dpkg-new&gt;, 0, 0, SYNC_FILE_RANGE_WRITE) = 0
100   sync_file_range(10&lt;/usr/share/doc/gum/examples/README.md.dpkg-new&gt;, 0, 0, SYNC_FILE_RANGE_WRITE) = 0
100   sync_file_range(10&lt;/usr/share/doc/gum/examples/choose.tape.dpkg-new&gt;, 0, 0, SYNC_FILE_RANGE_WRITE) = 0
100   sync_file_range(10&lt;/usr/share/doc/gum/examples/commit.sh.dpkg-new&gt;, 0, 0, SYNC_FILE_RANGE_WRITE) = 0
100   sync_file_range(10&lt;/usr/share/doc/gum/examples/commit.tape.dpkg-new&gt;, 0, 0, SYNC_FILE_RANGE_WRITE) = 0
100   sync_file_range(10&lt;/usr/share/doc/gum/examples/confirm.tape.dpkg-new&gt;, 0, 0, SYNC_FILE_RANGE_WRITE) = 0
100   sync_file_range(10&lt;/usr/share/doc/gum/examples/convert-to-gif.sh.dpkg-new&gt;, 0, 0, SYNC_FILE_RANGE_WRITE) = 0
100   sync_file_range(10&lt;/usr/share/doc/gum/examples/customize.tape.dpkg-new&gt;, 0, 0, SYNC_FILE_RANGE_WRITE) = 0
100   sync_file_range(10&lt;/usr/share/doc/gum/examples/demo.sh.dpkg-new&gt;, 0, 0, SYNC_FILE_RANGE_WRITE) = 0
100   sync_file_range(10&lt;/usr/share/doc/gum/examples/demo.tape.dpkg-new&gt;, 0, 0, SYNC_FILE_RANGE_WRITE) = 0
100   sync_file_range(10&lt;/usr/share/doc/gum/examples/diyfetch.dpkg-new&gt;, 0, 0, SYNC_FILE_RANGE_WRITE) = 0
100   sync_file_range(10&lt;/usr/share/doc/gum/examples/fav.txt.dpkg-new&gt;, 0, 0, SYNC_FILE_RANGE_WRITE) = 0
100   sync_file_range(10&lt;/usr/share/doc/gum/examples/file.tape.dpkg-new&gt;, 0, 0, SYNC_FILE_RANGE_WRITE) = 0
100   sync_file_range(10&lt;/usr/share/doc/gum/examples/filter-key-value.sh.dpkg-new&gt;, 0, 0, SYNC_FILE_RANGE_WRITE) = 0
100   sync_file_range(10&lt;/usr/share/doc/gum/examples/flavors.txt.dpkg-new&gt;, 0, 0, SYNC_FILE_RANGE_WRITE) = 0
100   sync_file_range(10&lt;/usr/share/doc/gum/examples/format.ansi.dpkg-new&gt;, 0, 0, SYNC_FILE_RANGE_WRITE) = 0
100   sync_file_range(10&lt;/usr/share/doc/gum/examples/git-branch-manager.sh.dpkg-new&gt;, 0, 0, SYNC_FILE_RANGE_WRITE) = 0
100   sync_file_range(10&lt;/usr/share/doc/gum/examples/git-stage.sh.dpkg-new&gt;, 0, 0, SYNC_FILE_RANGE_WRITE) = 0
100   sync_file_range(10&lt;/usr/share/doc/gum/examples/gum.js.dpkg-new&gt;, 0, 0, SYNC_FILE_RANGE_WRITE) = 0
100   sync_file_range(10&lt;/usr/share/doc/gum/examples/gum.py.dpkg-new&gt;, 0, 0, SYNC_FILE_RANGE_WRITE) = 0
100   sync_file_range(10&lt;/usr/share/doc/gum/examples/gum.rb.dpkg-new&gt;, 0, 0, SYNC_FILE_RANGE_WRITE) = 0
100   sync_file_range(10&lt;/usr/share/doc/gum/examples/input.tape.dpkg-new&gt;, 0, 0, SYNC_FILE_RANGE_WRITE) = 0
100   sync_file_range(10&lt;/usr/share/doc/gum/examples/kaomoji.sh.dpkg-new&gt;, 0, 0, SYNC_FILE_RANGE_WRITE) = 0
100   sync_file_range(10&lt;/usr/share/doc/gum/examples/magic.sh.dpkg-new&gt;, 0, 0, SYNC_FILE_RANGE_WRITE) = 0
100   sync_file_range(10&lt;/usr/share/doc/gum/examples/pager.tape.dpkg-new&gt;, 0, 0, SYNC_FILE_RANGE_WRITE) = 0
100   sync_file_range(10&lt;/usr/share/doc/gum/examples/posix.sh.dpkg-new&gt;, 0, 0, SYNC_FILE_RANGE_WRITE) = 0
100   sync_file_range(10&lt;/usr/share/doc/gum/examples/skate.sh.dpkg-new&gt;, 0, 0, SYNC_FILE_RANGE_WRITE) = 0
100   sync_file_range(10&lt;/usr/share/doc/gum/examples/spin.tape.dpkg-new&gt;, 0, 0, SYNC_FILE_RANGE_WRITE) = 0
100   sync_file_range(10&lt;/usr/share/doc/gum/examples/story.txt.dpkg-new&gt;, 0, 0, SYNC_FILE_RANGE_WRITE) = 0
100   sync_file_range(10&lt;/usr/share/doc/gum/examples/test.sh.dpkg-new&gt;, 0, 0, SYNC_FILE_RANGE_WRITE) = 0
100   sync_file_range(10&lt;/usr/share/doc/gum/examples/write.tape.dpkg-new&gt;, 0, 0, SYNC_FILE_RANGE_WRITE) = 0
100   sync_file_range(10&lt;/usr/share/gum/completion/gum.bash.dpkg-new&gt;, 0, 0, SYNC_FILE_RANGE_WRITE &lt;unfinished ...&gt;
100   &lt;... sync_file_range resumed&gt;)    = 0
100   sync_file_range(10&lt;/usr/share/gum/completion/gum.fish.dpkg-new&gt;, 0, 0, SYNC_FILE_RANGE_WRITE) = 0
100   sync_file_range(10&lt;/usr/share/gum/completion/gum.zsh.dpkg-new&gt;, 0, 0, SYNC_FILE_RANGE_WRITE) = 0
100   sync_file_range(10&lt;/usr/share/man/man1/gum.1.gz.dpkg-new&gt;, 0, 0, SYNC_FILE_RANGE_WRITE) = 0
100   fsync(9&lt;/var/lib/dpkg/info/gum.list-new&gt;) = 0
100   fsync(9&lt;/var/lib/dpkg/info&gt;)      = 0
100   fsync(9&lt;/var/lib/dpkg/info&gt;)      = 0
100   fsync(4&lt;/var/lib/dpkg/updates/tmp.i&gt; &lt;unfinished ...&gt;
100   &lt;... fsync resumed&gt;)              = 0
100   fsync(4&lt;/var/lib/dpkg/updates&gt;)   = 0
100   fsync(4&lt;/var/lib/dpkg/updates/tmp.i&gt;) = 0
100   fsync(4&lt;/var/lib/dpkg/updates&gt;)   = 0
100   fsync(9&lt;/var/lib/dpkg/status-new&gt;) = 0
100   fsync(9&lt;/var/lib/dpkg&gt;)           = 0
100   fsync(9&lt;/var/lib/dpkg/updates&gt;)   = 0
112   fsync(4&lt;/var/lib/dpkg/updates/tmp.i&gt; &lt;unfinished ...&gt;
112   &lt;... fsync resumed&gt;)              = 0
112   fsync(4&lt;/var/lib/dpkg/updates&gt;)   = 0
112   fsync(4&lt;/var/lib/dpkg/updates/tmp.i&gt;) = 0
112   fsync(4&lt;/var/lib/dpkg/updates&gt;)   = 0
112   fsync(4&lt;/var/lib/dpkg/updates/tmp.i&gt;) = 0
112   fsync(4&lt;/var/lib/dpkg/updates&gt;)   = 0
112   fsync(9&lt;/var/lib/dpkg/status-new&gt;) = 0
112   fsync(9&lt;/var/lib/dpkg&gt;)           = 0
112   fsync(9&lt;/var/lib/dpkg/updates&gt;)   = 0
root@deb:/#

Синкают через sync_file_range каждый распакованный файл перед переименованием (плюс свою базу данных), но скачанный dpkg архив тоже нет.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282945</commentid>
    <comment_count>4</comment_count>
    <who name="Sergey Y. Afonin">asy</who>
    <bug_when>2026-03-01 18:23:02 +0300</bug_when>
    <thetext>И я имею ввиду один sync делать, перед началом установки. После каждого скачивания наверное не нужно.</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>