Snap без Systemd |
Автор: admin Просмотров: 2140 Комментарии:
Добавлен: 5 августа 2018
Обновлено: 7.08.2018 - 22:46
Проблема: Snap-пакеты, а точнее демон snapd, который управляет пакетами Snap, зависит от systemd. Необходимо не только устанавливать систему, но и запускать ее как PID 1. Программное обеспечение snapd использует systemct-программу systemd для выполнения нескольких задач, таких как сборка и размонтирование архивов пакетов (пакеты являются файлами squashfs). Когда вызывается systemctl, когда systemd не работает как PID 1, он не работает. Этими проблемами не занимались ни разработчики systemd, ни Snap.
Потенциальное обходное решение: программное обеспечение snapd выполняет вызовы в systemctl-программу ( https://github.com/snapcore/snapd/blob/master/systemd/systemd.go ), но у нее нет конкретного пути. Это означает, что если systemctl находится где-то на нашем пути, snapd может его выполнить. Это также означает, что мы можем вставить еще один исполняемый файл под названием «systemctl» в начальную часть нашего пути и перехватить вызовы snapd. Например, на MX Linux 17 официальный путь systemctl - /bin/systemctl. Мы можем создать скрипт или программу, чтобы притворяться systemctl, создав файл /usr/bin/systemctl.
Я создал небольшой скрипт оболочки, который принимает параметры из snapd и пытается выполнить ту же задачу systemctl. Это позволяет нам, по крайней мере, успешно устанавливать пакеты Snap.
Решение: прямо сейчас мое решение грубо, но всего за один день игры с Snaps мне удалось получить два из трех пакетов, которые я тестировал, работая с этим методом.
Вот как вы можете попробовать это дома:
1. Установите snapd, запустив «sudo apt install snapd»
2. Создайте новую, поддельную программу systemctl -
sudo nano /usr/bin/systemctl
3. Вставить в этот скрипт:
----------
#!/bin/bash
# First parameter should be start or stop
# Second parameter will be the name of a unit file
if [ $# -lt 2 ]
then
echo "usage: $0 start unit-file"
exit 0
fi
if [ $1 == "start" ]
then
what=$(grep What /etc/systemd/system/"$2" | cut -f 2 -d '=')
where=$(grep Where /etc/systemd/system/"$2" | cut -f 2 -d '=')
mkdir -p "$where"
mount $what $where
exit 0
fi
if [ $1 == "stop" ]
then
where=$(grep Where /etc/systemd/system/"$2" | cut -f 2 -d '=')
umount $where
exit 0
fi
----------
4. Сохраните файл и запустите «sudo chmod 755 /usr/bin/systemctl», чтобы убедиться, что скрипт может выполнить.
5. Запустите демон snapd с помощью «cd /usr/lib/snapd && sudo ./snapd»
6. Установите простой пакет Snap. Например Hello World. "sudo snap install hello-world"
7. Запустите программу. Это сложная часть, так как разные Snaps, похоже, обрабатываются таким образом, и некоторые из них не справляются с этим красиво. (Simple Note и Hello-World работали у меня. В VLC Snap этого не было.) Новые установленные программы можно найти в каталоге /snap. Например, я могу запустить «/snap/simpleenote/33/usr/share/simpleenote/simpleenote» для запуска программы Simple Note.
Будущее: в идеале вещи могут быть немного автоматизированы. Возможно, команда MX может добавить пакет для вышеупомянутого скрипта. Может быть, некоторый код можно добавить, чтобы добавить исполняемые файлы Snap к пути пользователя и т. д. Но сейчас хорошие новости - пользователи MX могут устанавливать Snaps без замены инитов или делать другие рискованные действия. Некоторые из этих Snaps даже запускаются!
https://mxlinux.org/wiki/applications/snap-packages-mx-17
------------------------
ТРИО теплый пол отзыв
Заработок на сокращении ссылок
Earnings on reducing links
Код PHP на HTML сайты
Я уже пять лет не занимаюсь сайтом, так как работаю по 12 часов. Образование у меня среднее, и по этому нет нормальной работы. Если бы сайт приносил по 100$ в месяц, я бы добавлял по 50 статей каждый месяц. Если отправите пожертвования, я оставлю Ваши имена и фамилии в списке благодетелей !
Bitcoin: 1AP3JCZVFpHzZwcAyNztbrbFFiLdnKbY1j
Litecoin LfHXHz4k6LnDNNvCodd5pj9aW4Qk67KoUD
Dogecoin D9HHvKNFZxRhjtoh6uZYjMjgcZewwiUME9
Есть также другие кошельки.
Категория: Компьютерные советы
Комментарии |