Paul Eggert <eggert@HIDDEN>
to control <at> debbugs.gnu.org.
Full text available.
Received: (at submit) by debbugs.gnu.org; 25 Mar 2021 10:10:22 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Mar 25 06:10:21 2021
Received: from localhost ([127.0.0.1]:37194 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1lPMwX-0008KT-Ms
for submit <at> debbugs.gnu.org; Thu, 25 Mar 2021 06:10:21 -0400
Received: from lists.gnu.org ([209.51.188.17]:44902)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <dilyan.palauzov@HIDDEN>) id 1lPMwW-0008KM-Fn
for submit <at> debbugs.gnu.org; Thu, 25 Mar 2021 06:10:20 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10]:42938)
by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.90_1) (envelope-from <dilyan.palauzov@HIDDEN>)
id 1lPMwT-0000it-Jg
for bug-coreutils@HIDDEN; Thu, 25 Mar 2021 06:10:18 -0400
Received: from mail.aegee.org ([144.76.142.78]:47160)
by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.90_1) (envelope-from <dilyan.palauzov@HIDDEN>)
id 1lPMwP-0000f4-3o
for bug-coreutils@HIDDEN; Thu, 25 Mar 2021 06:10:17 -0400
Authentication-Results: mail.aegee.org/12PA93uC2908071;
auth=pass (LOGIN) smtp.auth=didopalauzov@HIDDEN
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=aegee.org; s=k4096;
t=1616666949; i=dkim+MSA-tls@HIDDEN;
bh=1g2jlbpgXfU42pSmrTT1YxRtTg71liJS6pcywbT7Mf0=;
h=Subject:From:To:Date;
b=qcWjVL0Sl/2yuvOHweihr0Im6Hitqvq0ItJGtii8rVJVbZh5liddBfjdFieivH9rU
/CxVaqTPLFlN2DgpVZ2u6567LbDU5uUOSCivsAIPJb705cDNSpG/35Qz3zxXyk1Arc
STwE9FSqn0lbP6UztzjE4kiYOdpx58F+MCN6QBXbFTb1q/08kz65xl/tTiHRLm0Ah6
8k1NVOSmCmKs1GnYT3TUWO38zmaSStmVz8qrrY+7e5Pth99jxX0FNUUqeye+cSXdSv
kIoqFqsiSX1urFSXYQ/Wg9OQdw/TNOtPY6jE0FgAFsfeuNT7Cc3aJG/Q1oFKLncOUu
jM2KS9OArINDGUkr/6/6Fko7WO8yW2fAyM4EtO9i4c9niR485CrUr0b1XuyRmCqGK+
P9O6UIhwYZH90+q8P7tQzeN3XvjpmfjQg8E5R3LhZ4aVPnsbZjk65+CemKB9Dy9s9T
9pUoOgjNiTzdWrQRwwBKSH/GW4c//QekTbYSLa8XK4ILa0YPmVeIwUacf/biOrvklM
pj6GDimqD2tbXlidtapbCWxr3nmrkM1THKOvUV3S+q1PO5tI1clrCZlglngmjHpFe5
XM+BiVDrW2E4aTuIuwm+chYoQFqd3xy/7sj59SVeXH0KlraFgSBUjF7/TnfmrcivMn
rkX4k/9EyTuq8g/U+b93utpA=
Authentication-Results: mail.aegee.org/12PA93uC2908071; dkim=none
Received: from [192.168.0.199] (87.118.146.153.topnet.bg [87.118.146.153] (may
be forged)) (authenticated bits=0)
by mail.aegee.org (8.15.2/8.15.2) with ESMTPSA id 12PA93uC2908071
(version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NO)
for <bug-coreutils@HIDDEN>; Thu, 25 Mar 2021 10:09:08 GMT
Message-ID: <33860614a8b0e453f5ad1ab7718d14cc30a4b139.camel@HIDDEN>
Subject: Atomic install of files
From: =?UTF-8?Q?=D0=94=D0=B8=D0=BB=D1=8F=D0=BD_?=
=?UTF-8?Q?=D0=9F=D0=B0=D0=BB=D0=B0=D1=83=D0=B7=D0=BE=D0=B2?=
<dilyan.palauzov@HIDDEN>
To: bug-coreutils@HIDDEN
Date: Thu, 25 Mar 2021 12:09:03 +0200
Content-Type: text/plain; charset="UTF-8"
User-Agent: Evolution 3.41.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Received-SPF: none client-ip=144.76.142.78;
envelope-from=dilyan.palauzov@HIDDEN; helo=mail.aegee.org
X-Spam_score_int: -20
X-Spam_score: -2.1
X-Spam_bar: --
X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1,
DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_PASS=-0.001,
SPF_NONE=0.001 autolearn=ham autolearn_force=no
X-Spam_action: no action
X-Spam-Score: 0.3 (/)
X-Debbugs-Envelope-To: submit
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)
Hello,
`make install` calls:
/usr/bin/install -c imap/.libs/httpd /usr/local/libexec/
and the syscalls behind are:
newfstatat(AT_FDCWD, "imap/.libs/httpd", {st_mode=S_IFREG|0755,
st_size=3362912, ...}, 0) = 0
newfstatat(AT_FDCWD, "/usr/local/libexec/httpd", {st_mode=S_IFREG|0755,
st_size=3362912, ...}, AT_SYMLINK_NOFOLLOW) = 0
unlink("/usr/local/libexec/httpd") = 0
openat(AT_FDCWD, "imap/.libs/httpd", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0755, st_size=3362912, ...}) = 0
openat(AT_FDCWD, "/usr/local/libexec/httpd", O_WRONLY|O_CREAT|O_EXCL,
0600) = 4
fstat(4, {st_mode=S_IFREG|0600, st_size=0, ...}) = 0
ioctl(4, BTRFS_IOC_CLONE or FICLONE, 3) = -1 EOPNOTSUPP (Operation not
supported)
fadvise64(3, 0, 0, POSIX_FADV_SEQUENTIAL) = 0
mmap(NULL, 139264, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
0) = 0x7ff6aad05000
read(3,
"\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\2\0>\0\1\0\0\0\260\343A\0\0\0\0\0"...,
131072) = 131072
write(4,
"\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\2\0>\0\1\0\0\0\260\343A\0\0\0\0\0"...,
131072) = 131072
read(3,
"\377H\211\302H\213\205h\372\377\377\211\331H\211\306H\307\307\4\252\35
3\212\350t\0\6\0H\213E\340"..., 131072) = 131072
close(4) = 0
close(3) = 0
munmap(0x7ff6aad05000, 139264) = 0
lstat("/usr/local/libexec/httpd", {st_mode=S_IFREG|0600,
st_size=3362912, ...}) = 0
chmod("/usr/local/libexec/httpd", 0755) = 0
lstat("/usr/local/libexec/httpd", {st_mode=S_IFREG|0755,
st_size=3362912, ...}) = 0
That said, the installation is not atomic: the destination file is
opened, truncated, then bytes are written to it. During the
installation process, the initially executable file is not executable.
Cyrus IMAP is a server-software, which detect whenever its executable
files have changed, terminates the processes with the changed files and
starts the processes again, by re-executing the executables.
This does not work, if the file shall be started, while its content is
being copied: at this time the file is not executable and this is not
good.
• Please adjust `install` to first write the data to a temporary file
and at the end rename(2) the file to the destination, so that the
installation is atomic: the destination file is at all times
executable. (Or provide any means to achieve the atomic copy effect by
Automake)
Kind regards
Дилян
Дилян Палаузов <dilyan.palauzov@HIDDEN>:bug-coreutils@HIDDEN.
Full text available.bug-coreutils@HIDDEN:bug#47380; Package coreutils.
Full text available.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997 nCipher Corporation Ltd,
1994-97 Ian Jackson.