diff options
-rw-r--r-- | .lgtm.yml | 10 | ||||
-rw-r--r-- | NEWS | 2 | ||||
-rw-r--r-- | hwdb.d/60-keyboard.hwdb | 13 | ||||
-rw-r--r-- | hwdb.d/60-sensor.hwdb | 4 | ||||
-rwxr-xr-x | hwdb.d/parse_hwdb.py | 1 | ||||
-rw-r--r-- | man/portablectl.xml | 13 | ||||
-rw-r--r-- | po/ru.po | 378 | ||||
-rw-r--r-- | src/basic/selinux-util.c | 6 | ||||
-rw-r--r-- | src/portable/portablectl.c | 45 |
9 files changed, 390 insertions, 82 deletions
@@ -9,16 +9,6 @@ extraction: - libfdisk-dev - libp11-kit-dev - libssl-dev - before_index: - # /tmp has `noexec` set in the LGTM infra which breaks meson's - # compilation checks. Let's temporarily override TMPDIR to /var/tmp which - # should work as expected - # See: https://discuss.lgtm.com/t/meson-fails-to-determine-sizes-of-basic-data-types/2639 - - export TMPDIR=/var/tmp - index: - build_command: - - meson build - - ninja -C build python: python_setup: version: 3 @@ -251,7 +251,7 @@ CHANGES WITH 245: * networkctl gained support for showing per-interface logs in its "status" output. - * systemd-networkd-wait-online gain support for specifying the maximum + * systemd-networkd-wait-online gained support for specifying the maximum operational state to wait for, and to wait for interfaces to disappear. diff --git a/hwdb.d/60-keyboard.hwdb b/hwdb.d/60-keyboard.hwdb index ccd67e2658..fae0ecc0fa 100644 --- a/hwdb.d/60-keyboard.hwdb +++ b/hwdb.d/60-keyboard.hwdb @@ -1201,6 +1201,19 @@ evdev:name:MSI Laptop hotkeys:dmi:bvn*:bvr*:bd*:svn*:pnM[iI][cC][rR][oO]-S[tT][a KEYBOARD_KEY_0214=f23 ########################################################### +# Olimex +########################################################### + +# Teres-I +evdev:input:b0003v15BAp003C* + KEYBOARD_KEY_70066=sleep # Fn+F1 + KEYBOARD_KEY_700f6=wlan # Fn+F2 + KEYBOARD_KEY_700c7=f21 # Fn+F3 touchpad toggle + KEYBOARD_KEY_7006f=brightnessdown # Fn+F7 + KEYBOARD_KEY_70070=brightnessup # Fn+F8 + KEYBOARD_KEY_7006e=switchvideomode # Fn+F9 + +########################################################### # OLPC ########################################################### diff --git a/hwdb.d/60-sensor.hwdb b/hwdb.d/60-sensor.hwdb index b57662afb1..abedbaca81 100644 --- a/hwdb.d/60-sensor.hwdb +++ b/hwdb.d/60-sensor.hwdb @@ -41,11 +41,15 @@ # # Allowed properties are: # ACCEL_MOUNT_MATRIX=<matrix> +# PROXIMITY_NEAR_LEVEL=<value> # # where <matrix> is a mount-matrix in the format specified in the IIO # subsystem[1]. The default, when unset, is equivalent to: # ACCEL_MOUNT_MATRIX=1, 0, 0; 0, 1, 0; 0, 0, 1 # eg. the identity matrix. +# and <value> is an integer value above which an object is considered +# close by a proximity sensor: +# PROXIMITY_NEAR_LEVEL=100 # # [1]: https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=dfc57732ad38f93ae6232a3b4e64fd077383a0f1 # diff --git a/hwdb.d/parse_hwdb.py b/hwdb.d/parse_hwdb.py index b5395b11fe..579c45fda0 100755 --- a/hwdb.d/parse_hwdb.py +++ b/hwdb.d/parse_hwdb.py @@ -128,6 +128,7 @@ def property_grammar(): ('KEYBOARD_LED_CAPSLOCK', Literal('0')), ('ACCEL_MOUNT_MATRIX', mount_matrix), ('ACCEL_LOCATION', Or(('display', 'base'))), + ('PROXIMITY_NEAR_LEVEL', INTEGER), ) fixed_props = [Literal(name)('NAME') - Suppress('=') - val('VALUE') for name, val in props] diff --git a/man/portablectl.xml b/man/portablectl.xml index d1790db2fa..f2d8da40c4 100644 --- a/man/portablectl.xml +++ b/man/portablectl.xml @@ -135,7 +135,8 @@ the service manager are seen by it.</para> <para>If <option>--now</option> and/or <option>--enable</option> are passed, the portable service(s) are - immediately started and/or enabled after attaching the image.</para> + immediately started (blocking operation unless <option>--no-block</option> is passed) and/or enabled after + attaching the image.</para> </listitem> </varlistentry> @@ -150,8 +151,8 @@ <command>detach</command>.</para></listitem> <para>If <option>--now</option> and/or <option>--enable</option> are passed, the portable service(s) are - immediately started and/or enabled before detaching the image. Prefix(es) are also accepted, to be used in - case the unit names do not match the image name as described in the <command>attach</command>.</para> + immediately stopped (blocking operation) and/or disabled before detaching the image. Prefix(es) are also accepted, + to be used in case the unit names do not match the image name as described in the <command>attach</command>.</para> </varlistentry> <varlistentry> @@ -330,6 +331,12 @@ <listitem><para>Immediately start/stop the portable service after attaching/before detaching.</para></listitem> </varlistentry> + <varlistentry> + <term><option>--no-block</option></term> + + <listitem><para>Don't block waiting for attach --now to complete.</para></listitem> + </varlistentry> + <xi:include href="user-system-options.xml" xpointer="host" /> <xi:include href="user-system-options.xml" xpointer="machine" /> @@ -1,22 +1,24 @@ # SPDX-License-Identifier: LGPL-2.1+ # # translation of ru.po to Rissian +# # Julia Dronova <juliette.tux@gmail.com>, 2013. # Sergey Ptashnick <0comffdiz@inbox.ru>, 2013-2018. -# +# Vladimir Yerilov <openmindead@gmail.com>, 2020. msgid "" msgstr "" "Project-Id-Version: systemd\n" -"Report-Msgid-Bugs-To: https://github.com/systemd/systemd/issues\n" -"POT-Creation-Date: 2015-11-22 16:37+0100\n" -"PO-Revision-Date: 2018-09-01 18:46+0300\n" -"Last-Translator: Sergey Ptashnick <0comffdiz@inbox.ru>\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-03-03 00:56+1000\n" +"PO-Revision-Date: 2020-03-03 16:05+1000\n" +"Last-Translator: Vladimir Yerilov <openmindead@gmail.com>\n" "Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" -"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<" +"=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" +"X-Generator: Lokalize 19.12.2\n" #: src/core/org.freedesktop.systemd1.policy.in:22 msgid "Send passphrase back to system" @@ -69,6 +71,68 @@ msgstr "" "Чтобы заставить systemd перечитать конфигурацию, необходимо пройти " "аутентификацию." +#: src/home/org.freedesktop.home1.policy:13 +msgid "Create a home area" +msgstr "Создать домашнее пространство" + +#: src/home/org.freedesktop.home1.policy:14 +msgid "Authentication is required to create a user's home area." +msgstr "" +"Чтобы создать домашнее пространство пользователя, необходимо пройти" +" аутентификацию." + +#: src/home/org.freedesktop.home1.policy:23 +msgid "Remove a home area" +msgstr "Удалить домашнее пространство" + +#: src/home/org.freedesktop.home1.policy:24 +msgid "Authentication is required to remove a user's home area." +msgstr "" +"Чтобы удалить домашнее пространство пользователя, необходимо пройти" +" аутентификацию." + +#: src/home/org.freedesktop.home1.policy:33 +msgid "Check credentials of a home area" +msgstr "Проверить учётные данные домашнего пространства" + +#: src/home/org.freedesktop.home1.policy:34 +msgid "" +"Authentication is required to check credentials against a user's home area." +msgstr "" +"Чтобы проверить учётные данные для домашнего пространства пользователя," +" необходимо пройти аутентификацию." + +#: src/home/org.freedesktop.home1.policy:43 +msgid "Update a home area" +msgstr "Обновить домашнее пространство" + +#: src/home/org.freedesktop.home1.policy:44 +msgid "Authentication is required to update a user's home area." +msgstr "" +"Чтобы обновить домашнее пространство пользователя, необходимо пройти" +" аутентификацию." + +#: src/home/org.freedesktop.home1.policy:53 +msgid "Resize a home area" +msgstr "Изменить размер домашнего пространства" + +#: src/home/org.freedesktop.home1.policy:54 +msgid "Authentication is required to resize a user's home area." +msgstr "" +"Чтобы изменить размер домашнего пространства пользователя, необходимо пройти" +" аутентификацию." + +#: src/home/org.freedesktop.home1.policy:63 +msgid "Change password of a home area" +msgstr "Изменить пароль для домашнего пространства" + +#: src/home/org.freedesktop.home1.policy:64 +msgid "" +"Authentication is required to change the password of a user's home area." +msgstr "" +"Чтобы изменить пароль для домашнего пространства пользователя, необходимо" +" пройти аутентификацию." + #: src/hostname/org.freedesktop.hostname1.policy:20 msgid "Set host name" msgstr "Настроить имя компьютера" @@ -266,8 +330,7 @@ msgstr "" #: src/login/org.freedesktop.login1.policy:117 msgid "Allow non-logged-in user to run programs" -msgstr "" -"Разрешить работу программ в фоновом режиме после завершения сеанса" +msgstr "Разрешить работу программ в фоновом режиме после завершения сеанса" #: src/login/org.freedesktop.login1.policy:118 msgid "Explicit request is required to run programs as a non-logged-in user." @@ -302,8 +365,7 @@ msgid "Flush device to seat attachments" msgstr "Сбросить привязки устройств к рабочим местам" #: src/login/org.freedesktop.login1.policy:149 -msgid "" -"Authentication is required to reset how devices are attached to seats." +msgid "Authentication is required to reset how devices are attached to seats." msgstr "" "Чтобы сбросить привязки устройств к рабочим местам, необходимо пройти " "аутентификацию." @@ -337,8 +399,8 @@ msgstr "" #: src/login/org.freedesktop.login1.policy:181 msgid "" -"Authentication is required to power off the system while an application " -"is inhibiting this." +"Authentication is required to power off the system while an application is " +"inhibiting this." msgstr "" "Чтобы выключить систему, несмотря на то, что приложение запросило блокировку " "выключения, необходимо пройти аутентификацию." @@ -358,8 +420,8 @@ msgstr "" #: src/login/org.freedesktop.login1.policy:203 msgid "" -"Authentication is required to reboot the system while other users are " -"logged in." +"Authentication is required to reboot the system while other users are logged " +"in." msgstr "" "Чтобы перезагрузить систему, несмотря на то, что в ней работают другие " "пользователи, необходимо пройти аутентификацию." @@ -372,8 +434,8 @@ msgstr "" #: src/login/org.freedesktop.login1.policy:214 msgid "" -"Authentication is required to reboot the system while an application " -"is inhibiting this." +"Authentication is required to reboot the system while an application is " +"inhibiting this." msgstr "" "Чтобы перезагрузить систему, несмотря на то, что приложение запросило " "блокировку выключения, необходимо пройти аутентификацию." @@ -393,8 +455,8 @@ msgstr "" #: src/login/org.freedesktop.login1.policy:236 msgid "" -"Authentication is required to halt the system while other users are " -"logged in." +"Authentication is required to halt the system while other users are logged " +"in." msgstr "" "Чтобы остановить систему, несмотря на то, что в ней работают другие " "пользователи, необходимо пройти аутентификацию." @@ -402,16 +464,16 @@ msgstr "" #: src/login/org.freedesktop.login1.policy:246 msgid "Halt the system while an application is inhibiting this" msgstr "" -"Остановить систему, несмотря на то, что приложение запросило блокировку " +"Остановить систему несмотря на то, что приложение запросило блокировку " "выключения" #: src/login/org.freedesktop.login1.policy:247 msgid "" -"Authentication is required to halt the system while an application asked " -"to inhibit it." +"Authentication is required to halt the system while an application is " +"inhibiting this." msgstr "" -"Чтобы остановить систему, несмотря на то, что приложение запросило " -"блокировку выключения, необходимо пройти аутентификацию." +"Чтобы остановить систему несмотря на то, что приложение запросило блокировку" +" выключения, необходимо пройти аутентификацию." #: src/login/org.freedesktop.login1.policy:257 msgid "Suspend the system" @@ -444,8 +506,8 @@ msgstr "" #: src/login/org.freedesktop.login1.policy:279 msgid "" -"Authentication is required to suspend the system while an application " -"is inhibiting this." +"Authentication is required to suspend the system while an application is " +"inhibiting this." msgstr "" "Чтобы перевести систему в ждущий режим, несмотря на то, что приложение " "запросило блокировку, необходимо пройти аутентификацию." @@ -481,8 +543,8 @@ msgstr "" #: src/login/org.freedesktop.login1.policy:311 msgid "" -"Authentication is required to hibernate the system while an application " -"is inhibiting this." +"Authentication is required to hibernate the system while an application is " +"inhibiting this." msgstr "" "Чтобы перевести систему в спящий режим, несмотря на то, что приложение " "запросило блокировку, необходимо пройти аутентификацию." @@ -492,8 +554,7 @@ msgid "Manage active sessions, users and seats" msgstr "Управление текущими сеансами, пользователями и рабочими местами" #: src/login/org.freedesktop.login1.policy:322 -msgid "" -"Authentication is required to manage active sessions, users and seats." +msgid "Authentication is required to manage active sessions, users and seats." msgstr "" "Для управления текущими сеансами, пользователями и рабочими местами, " "необходимо пройти аутентификацию." @@ -509,26 +570,68 @@ msgstr "" "аутентификацию." #: src/login/org.freedesktop.login1.policy:341 -msgid "Allow indication to the firmware to boot to setup interface" -msgstr "Разрешить загрузку в режиме настройки прошивки материнской платы" +msgid "Set the reboot \"reason\" in the kernel" +msgstr "Установить \"причину\" перезагрузки" #: src/login/org.freedesktop.login1.policy:342 +msgid "Authentication is required to set the reboot \"reason\" in the kernel." +msgstr "" +"Чтобы установить \"причину\" перезагрузки, необходимо пройти аутентификацию." + +#: src/login/org.freedesktop.login1.policy:352 +msgid "Indicate to the firmware to boot to setup interface" +msgstr "" +"Запустить режим настройки прошивки материнской платы при следующей загрузке" + +#: src/login/org.freedesktop.login1.policy:353 msgid "" "Authentication is required to indicate to the firmware to boot to setup " "interface." msgstr "" -"Чтобы разрешить загрузку в режиме настройки прошивки материнской платы, " +"Чтобы запустить режим настройки прошивки материнской платы, " +"необходимо пройти аутентификацию." + +#: src/login/org.freedesktop.login1.policy:363 +msgid "Indicate to the boot loader to boot to the boot loader menu" +msgstr "Отобразить меню загрузчика при следующей загрузке" + +#: src/login/org.freedesktop.login1.policy:364 +msgid "" +"Authentication is required to indicate to the boot loader to boot to the " +"boot loader menu." +msgstr "" +"Чтобы отобразить меню загрузчика при следующей загрузке, " +"необходимо пройти аутентификацию." + +#: src/login/org.freedesktop.login1.policy:374 +msgid "Indicate to the boot loader to boot a specific entry" +msgstr "Выбрать определённую загрузочную запись при следующем запуске" + +#: src/login/org.freedesktop.login1.policy:375 +msgid "" +"Authentication is required to indicate to the boot loader to boot into a " +"specific boot loader entry." +msgstr "" +"Чтобы установить определённую загрузочную запись для загрузки, " "необходимо пройти аутентификацию." -#: src/login/org.freedesktop.login1.policy:351 +#: src/login/org.freedesktop.login1.policy:385 msgid "Set a wall message" msgstr "Отправить сообщение на все терминалы" -#: src/login/org.freedesktop.login1.policy:352 +#: src/login/org.freedesktop.login1.policy:386 msgid "Authentication is required to set a wall message" msgstr "" "Чтобы отправить сообщение на все терминалы, необходимо пройти аутентификацию." +#: src/login/org.freedesktop.login1.policy:395 +msgid "Change Session" +msgstr "Сменить сессию" + +#: src/login/org.freedesktop.login1.policy:396 +msgid "Authentication is required to change the virtual terminal." +msgstr "Чтобы сменить виртуальный терминал, необходимо пройти аутентификацию." + #: src/machine/org.freedesktop.machine1.policy:22 msgid "Log into a local container" msgstr "Зайти в локальный контейнер" @@ -609,14 +712,151 @@ msgstr "" "Для управления образами виртуальных машин и контейнеров, необходимо пройти " "аутентификацию." +#: src/network/org.freedesktop.network1.policy:22 +msgid "Set NTP servers" +msgstr "Задать NTP-серверы" + +#: src/network/org.freedesktop.network1.policy:23 +msgid "Authentication is required to set NTP servers." +msgstr "Чтобы задать NTP-серверы, необходимо пройти аутентификацию." + +#: src/network/org.freedesktop.network1.policy:33 +#: src/resolve/org.freedesktop.resolve1.policy:44 +msgid "Set DNS servers" +msgstr "Задать DNS-серверы" + +#: src/network/org.freedesktop.network1.policy:34 +#: src/resolve/org.freedesktop.resolve1.policy:45 +msgid "Authentication is required to set DNS servers." +msgstr "Чтобы задать DNS-серверы, необходимо пройти аутентификацию." + +#: src/network/org.freedesktop.network1.policy:44 +#: src/resolve/org.freedesktop.resolve1.policy:55 +msgid "Set domains" +msgstr "Задать домены" + +#: src/network/org.freedesktop.network1.policy:45 +#: src/resolve/org.freedesktop.resolve1.policy:56 +msgid "Authentication is required to set domains." +msgstr "Чтобы задать домены, необходимо пройти аутентификацию." + +#: src/network/org.freedesktop.network1.policy:55 +#: src/resolve/org.freedesktop.resolve1.policy:66 +msgid "Set default route" +msgstr "Задать маршрут по умолчанию" + +#: src/network/org.freedesktop.network1.policy:56 +#: src/resolve/org.freedesktop.resolve1.policy:67 +msgid "Authentication is required to set default route." +msgstr "Чтобы задать маршрут по умолчанию, необходимо пройти аутентификацию." + +#: src/network/org.freedesktop.network1.policy:66 +#: src/resolve/org.freedesktop.resolve1.policy:77 +msgid "Enable/disable LLMNR" +msgstr "Включить/отключить LLMNR" + +#: src/network/org.freedesktop.network1.policy:67 +#: src/resolve/org.freedesktop.resolve1.policy:78 +msgid "Authentication is required to enable or disable LLMNR." +msgstr "Чтобы включить или отключить LLMNR, необходимо пройти аутентификацию." + +#: src/network/org.freedesktop.network1.policy:77 +#: src/resolve/org.freedesktop.resolve1.policy:88 +msgid "Enable/disable multicast DNS" +msgstr "Включить/отключить multicast DNS" + +#: src/network/org.freedesktop.network1.policy:78 +#: src/resolve/org.freedesktop.resolve1.policy:89 +msgid "Authentication is required to enable or disable multicast DNS." +msgstr "" +"Чтобы включить или отключить multicast DNS, необходимо пройти аутентификацию." + +#: src/network/org.freedesktop.network1.policy:88 +#: src/resolve/org.freedesktop.resolve1.policy:99 +msgid "Enable/disable DNS over TLS" +msgstr "Включить/отключить DNS поверх TLS" + +#: src/network/org.freedesktop.network1.policy:89 +#: src/resolve/org.freedesktop.resolve1.policy:100 +msgid "Authentication is required to enable or disable DNS over TLS." +msgstr "" +"Чтобы включить или отключить DNS поверх TLS, необходимо пройти аутентификацию." + +#: src/network/org.freedesktop.network1.policy:99 +#: src/resolve/org.freedesktop.resolve1.policy:110 +msgid "Enable/disable DNSSEC" +msgstr "Включить/отключить DNSSEC" + +#: src/network/org.freedesktop.network1.policy:100 +#: src/resolve/org.freedesktop.resolve1.policy:111 +msgid "Authentication is required to enable or disable DNSSEC." +msgstr "Чтобы включить или отключить DNSSEC, необходимо пройти аутентификацию." + +#: src/network/org.freedesktop.network1.policy:110 +#: src/resolve/org.freedesktop.resolve1.policy:121 +msgid "Set DNSSEC Negative Trust Anchors" +msgstr "Задать DNSSEC Negative Trust Anchors" + +#: src/network/org.freedesktop.network1.policy:111 +#: src/resolve/org.freedesktop.resolve1.policy:122 +msgid "Authentication is required to set DNSSEC Negative Trust Anchors." +msgstr "" +"Чтобы задать DNSSEC Negative Trust Anchors, необходимо пройти аутентификацию." + +#: src/network/org.freedesktop.network1.policy:121 +msgid "Revert NTP settings" +msgstr "Восстановить настройки NTP по умолчанию" + +#: src/network/org.freedesktop.network1.policy:122 +msgid "Authentication is required to reset NTP settings." +msgstr "" +"Чтобы сбросить локальные настройки NTP, необходимо пройти аутентификацию." + +#: src/network/org.freedesktop.network1.policy:132 +msgid "Revert DNS settings" +msgstr "Восстановить настройки DNS по умолчанию" + +#: src/network/org.freedesktop.network1.policy:133 +msgid "Authentication is required to reset DNS settings." +msgstr "" +"Чтобы сбросить локальные настройки DNS, необходимо пройти аутентификацию." + +#: src/network/org.freedesktop.network1.policy:143 +msgid "Renew dynamic addresses" +msgstr "Обновить динамические адреса" + +#: src/network/org.freedesktop.network1.policy:144 +msgid "Authentication is required to renew dynamic addresses." +msgstr "Чтобы обновить динамические адреса, необходимо пройти аутентификацию." + +#: src/network/org.freedesktop.network1.policy:154 +msgid "Reload network settings" +msgstr "Перечитать настройки сети" + +#: src/network/org.freedesktop.network1.policy:155 +msgid "Authentication is required to reload network settings." +msgstr "" +"Чтобы заставить systemd перечитать настройки сети, необходимо пройти " +"аутентификацию." + +#: src/network/org.freedesktop.network1.policy:165 +msgid "Reconfigure network interface" +msgstr "Изменить конфигурацию сетевого интерфейса" + +#: src/network/org.freedesktop.network1.policy:166 +msgid "Authentication is required to reconfigure network interface." +msgstr "" +"Чтобы изменить конфигурацию сетевого интерфейса, необходимо пройти" +" аутентификацию." + #: src/portable/org.freedesktop.portable1.policy:13 msgid "Inspect a portable service image" msgstr "Прочитать образ переносимой службы" #: src/portable/org.freedesktop.portable1.policy:14 msgid "Authentication is required to inspect a portable service image." -msgstr "Чтобы прочитать образ переносимой службы, необходимо пройти " -"аутентификацию." +msgstr "" +"Чтобы прочитать образ переносимой службы, необходимо пройти аутентификацию." #: src/portable/org.freedesktop.portable1.policy:23 msgid "Attach or detach a portable service image" @@ -625,8 +865,9 @@ msgstr "Подключить или отключить образ перенос #: src/portable/org.freedesktop.portable1.policy:24 msgid "" "Authentication is required to attach or detach a portable service image." -msgstr "Чтобы подключить или отключить образ переносимой службы, необходимо " -"пройти аутентификацию." +msgstr "" +"Чтобы подключить или отключить образ переносимой службы, необходимо пройти " +"аутентификацию." #: src/portable/org.freedesktop.portable1.policy:34 msgid "Delete or modify portable service image" @@ -645,8 +886,8 @@ msgstr "Зарегистрировать службу в DNS-SD" #: src/resolve/org.freedesktop.resolve1.policy:23 msgid "Authentication is required to register a DNS-SD service" -msgstr "Чтобы зарегистрировать службу в DNS-SD, необходимо пройти " -"аутентификацию." +msgstr "" +"Чтобы зарегистрировать службу в DNS-SD, необходимо пройти аутентификацию." #: src/resolve/org.freedesktop.resolve1.policy:33 msgid "Unregister a DNS-SD service" @@ -656,6 +897,15 @@ msgstr "Удалить службу из DNS-SD" msgid "Authentication is required to unregister a DNS-SD service" msgstr "Чтобы удалить службу из DNS-SD, необходимо пройти аутентификацию." +#: src/resolve/org.freedesktop.resolve1.policy:132 +msgid "Revert name resolution settings" +msgstr "Вернуть настройки разрешения имён по умолчанию" + +#: src/resolve/org.freedesktop.resolve1.policy:133 +msgid "Authentication is required to reset name resolution settings." +msgstr "" +"Чтобы сбросить настройки разрешения имён, необходимо пройти аутентификацию." + #: src/timedate/org.freedesktop.timedate1.policy:22 msgid "Set system time" msgstr "Настроить системное время" @@ -696,49 +946,47 @@ msgstr "" "Чтобы включить или выключить синхронизацию времени по сети, необходимо " "пройти аутентификацию." -#: src/core/dbus-unit.c:326 +#: src/core/dbus-unit.c:356 msgid "Authentication is required to start '$(unit)'." msgstr "Чтобы запустить «$(unit)», необходимо пройти аутентификацию." -#: src/core/dbus-unit.c:327 +#: src/core/dbus-unit.c:357 msgid "Authentication is required to stop '$(unit)'." msgstr "Чтобы остановить «$(unit)», необходимо пройти аутентификацию." -#: src/core/dbus-unit.c:328 +#: src/core/dbus-unit.c:358 msgid "Authentication is required to reload '$(unit)'." msgstr "" "Чтобы заставить «$(unit)» перечитать конфигурацию, необходимо пройти " "аутентификацию." -#: src/core/dbus-unit.c:329 src/core/dbus-unit.c:330 +#: src/core/dbus-unit.c:359 src/core/dbus-unit.c:360 msgid "Authentication is required to restart '$(unit)'." msgstr "Чтобы перезапустить «$(unit)», необходимо пройти аутентификацию." -#: src/core/dbus-unit.c:437 -msgid "Authentication is required to kill '$(unit)'." -msgstr "Чтобы убить юнит «$(unit)», необходимо пройти аутентификацию." +#: src/core/dbus-unit.c:532 +msgid "" +"Authentication is required to send a UNIX signal to the processes of " +"'$(unit)'." +msgstr "" +"Чтобы отправить сигнал UNIX процессам юнита «$(unit)», необходимо пройти" +" аутентификацию." -#: src/core/dbus-unit.c:468 +#: src/core/dbus-unit.c:563 msgid "Authentication is required to reset the \"failed\" state of '$(unit)'." msgstr "" "Чтобы сбросить состояние «failed» у юнита «$(unit)», необходимо пройти " "аутентификацию." -#: src/core/dbus-unit.c:501 +#: src/core/dbus-unit.c:596 msgid "Authentication is required to set properties on '$(unit)'." -msgstr "Чтобы изменить параметры юнита «$(unit)», необходимо пройти " -"аутентификацию." +msgstr "" +"Чтобы изменить параметры юнита «$(unit)», необходимо пройти аутентификацию." -#~ msgid "Press Ctrl+C to cancel all filesystem checks in progress" -#~ msgstr "" -#~ "Чтобы прервать все запущенные проверки файловых систем, нажмите Ctrl+C" - -# There is no difference between "на 2 дисках" (plural==1) and "на 5 дисках" (plural==2) -#~ msgid "Checking in progress on %d disk (%3.1f%% complete)" -#~ msgid_plural "Checking in progress on %d disks (%3.1f%% complete)" -#~ msgstr[0] "" -#~ "Проверяется целостность файловой системы на %d диске (выполнено %3.1f%%)" -#~ msgstr[1] "" -#~ "Проверяется целостность файловых систем на %d дисках (выполнено %3.1f%%)" -#~ msgstr[2] "" -#~ "Проверяется целостность файловых систем на %d дисках (выполнено %3.1f%%)" +#: src/core/dbus-unit.c:705 +msgid "" +"Authentication is required to delete files and directories associated with " +"'$(unit)'." +msgstr "" +"Чтобы удалить файлы и директории, относящиеся к юниту «$(unit)», необходимо" +" пройти аутентификацию." diff --git a/src/basic/selinux-util.c b/src/basic/selinux-util.c index 90bb93ed0b..1095cb426c 100644 --- a/src/basic/selinux-util.c +++ b/src/basic/selinux-util.c @@ -233,6 +233,9 @@ int mac_selinux_get_create_label_from_exe(const char *exe, char **label) { return -errno; sclass = string_to_security_class("process"); + if (sclass == 0) + return -ENOSYS; + r = security_compute_create_raw(mycon, fcon, sclass, label); if (r < 0) return -errno; @@ -312,6 +315,9 @@ int mac_selinux_get_child_mls_label(int socket_fd, const char *exe, const char * return -ENOMEM; sclass = string_to_security_class("process"); + if (sclass == 0) + return -ENOSYS; + r = security_compute_create_raw(mycon, fcon, sclass, label); if (r < 0) return -errno; diff --git a/src/portable/portablectl.c b/src/portable/portablectl.c index deaad0a0b0..bf5badd699 100644 --- a/src/portable/portablectl.c +++ b/src/portable/portablectl.c @@ -9,6 +9,7 @@ #include "bus-error.h" #include "bus-unit-util.h" #include "bus-util.h" +#include "bus-wait-for-jobs.h" #include "def.h" #include "dirent-util.h" #include "env-file.h" @@ -42,6 +43,7 @@ static BusTransport arg_transport = BUS_TRANSPORT_LOCAL; static const char *arg_host = NULL; static bool arg_enable = false; static bool arg_now = false; +static bool arg_no_block = false; static int determine_image(const char *image, bool permit_non_existing, char **ret) { int r; @@ -445,7 +447,7 @@ static int maybe_enable_disable(sd_bus *bus, const char *path, bool enable) { return 0; } -static int maybe_start_stop(sd_bus *bus, const char *path, bool start) { +static int maybe_start_stop(sd_bus *bus, const char *path, bool start, BusWaitForJobs *wait) { _cleanup_(sd_bus_message_unrefp) sd_bus_message *reply = NULL; _cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL; char *name = (char *)basename(path), *job = NULL; @@ -476,15 +478,29 @@ static int maybe_start_stop(sd_bus *bus, const char *path, bool start) { if (!arg_quiet) log_info("Queued %s to %s portable service %s.", job, start ? "start" : "stop", name); + if (wait) { + r = bus_wait_for_jobs_add(wait, job); + if (r < 0) + return log_error_errno(r, "Failed to watch %s job for %s %s: %m", + job, start ? "starting" : "stopping", name); + } + return 0; } static int maybe_enable_start(sd_bus *bus, sd_bus_message *reply) { + _cleanup_(bus_wait_for_jobs_freep) BusWaitForJobs *wait = NULL; int r; if (!arg_enable && !arg_now) return 0; + if (!arg_no_block) { + r = bus_wait_for_jobs_new(bus, &wait); + if (r < 0) + return log_error_errno(r, "Could not watch jobs: %m"); + } + r = sd_bus_message_rewind(reply, true); if (r < 0) return r; @@ -503,7 +519,7 @@ static int maybe_enable_start(sd_bus *bus, sd_bus_message *reply) { if (STR_IN_SET(type, "symlink", "copy") && ENDSWITH_SET(path, ".service", ".target", ".socket")) { (void) maybe_enable_disable(bus, path, true); - (void) maybe_start_stop(bus, path, true); + (void) maybe_start_stop(bus, path, true, wait); } } @@ -511,10 +527,17 @@ static int maybe_enable_start(sd_bus *bus, sd_bus_message *reply) { if (r < 0) return r; + if (!arg_no_block) { + r = bus_wait_for_jobs(wait, arg_quiet, NULL); + if (r < 0) + return r; + } + return 0; } static int maybe_stop_disable(sd_bus *bus, char *image, char *argv[]) { + _cleanup_(bus_wait_for_jobs_freep) BusWaitForJobs *wait = NULL; _cleanup_(sd_bus_message_unrefp) sd_bus_message *m = NULL, *reply = NULL; _cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL; _cleanup_strv_free_ char **matches = NULL; @@ -527,6 +550,10 @@ static int maybe_stop_disable(sd_bus *bus, char *image, char *argv[]) { if (r < 0) return r; + r = bus_wait_for_jobs_new(bus, &wait); + if (r < 0) + return log_error_errno(r, "Could not watch jobs: %m"); + r = sd_bus_message_new_method_call( bus, &m, @@ -578,7 +605,7 @@ static int maybe_stop_disable(sd_bus *bus, char *image, char *argv[]) { if (r < 0) return bus_log_parse_error(r); - (void) maybe_start_stop(bus, name, false); + (void) maybe_start_stop(bus, name, false, wait); (void) maybe_enable_disable(bus, name, false); } @@ -586,6 +613,11 @@ static int maybe_stop_disable(sd_bus *bus, char *image, char *argv[]) { if (r < 0) return bus_log_parse_error(r); + /* Stopping must always block or the detach will fail if the unit is still running */ + r = bus_wait_for_jobs(wait, arg_quiet, NULL); + if (r < 0) + return r; + return 0; } @@ -997,6 +1029,7 @@ static int help(int argc, char *argv[], void *userdata) { " after attach/detach\n" " --now Immediately start/stop the portable service after\n" " attach/before detach\n" + " --no-block Don't block waiting for attach --now to complete\n" "\nSee the %s for details.\n" , program_invocation_short_name , ansi_highlight() @@ -1020,6 +1053,7 @@ static int parse_argv(int argc, char *argv[]) { ARG_CAT, ARG_ENABLE, ARG_NOW, + ARG_NO_BLOCK, }; static const struct option options[] = { @@ -1038,6 +1072,7 @@ static int parse_argv(int argc, char *argv[]) { { "cat", no_argument, NULL, ARG_CAT }, { "enable", no_argument, NULL, ARG_ENABLE }, { "now", no_argument, NULL, ARG_NOW }, + { "no-block", no_argument, NULL, ARG_NO_BLOCK }, {} }; @@ -1132,6 +1167,10 @@ static int parse_argv(int argc, char *argv[]) { arg_now = true; break; + case ARG_NO_BLOCK: + arg_no_block = true; + break; + case '?': return -EINVAL; |