Как мне поступить с несовместимыми пакетами в APT, если они мне нужны оба?

Итак, я пошел установить G'MIC в свой дистрибутив Kali Linux, и мне нужно было изменить некоторые пакеты, чтобы заставить его работать. Мне пришлось добавить репозиторий Debian, чтобы найти нужные мне пакеты. Я подумал, что это будет нормально, поскольку Kali основана на Debian. В конце концов, единственное, что, казалось, сломалось, - это Blender, и я исправил это, используя версию с веб-сайта вместо APT, как раньше.

Что ж, сегодня я узнал, что в конечном итоге я также удалил настройки системы Gnome (я пытался добавить изображения, созданные с помощью G'MIC, на свой экран блокировки). Наверное, я этого не увидел, когда посмотрел на список удаленных пакетов.Теперь я знаю, что могу просто повторно добавить пакет, но это приведет к тому, что G'MIC снова сломается, и мне очень нравится этот плагин.

Итак, мой вопрос: как лучше всего справиться с этим, чтобы я мог использовать G'MIC и восстанавливать свои настройки, чтобы я мог снова использовать такие вещи, как его функция добавления на экран блокировки?

( Зависимости libopencv были тем, что мне пришлось изменить в первую очередь для установки G'MIC, а пакет gmic в Kali содержит только демонстрационную программу, а не полный плагин, который мне нужен.)

enter image description here

Изменить: Учитывая, что некоторые говорят, что Kali была ориентирована на узкую направленность и что я не должен пытаться улучшить свою систему в результате этого факта, я собираюсь заявить, что то, для чего она предназначена, меня не беспокоит, поскольку я не использую двойную загрузку просто чтобы я мог использовать G'MIC. Если бы у меня была какая-то огромная система, над которой мне нужно было работать, которая сильно отличается, я могу просто загрузить ее на виртуальную машину, как я это делаю с Windows, когда я тестирую безопасность с помощью Kali. Хорошо, теперь я избавился от этого, причина, по которой я задаю этот вопрос, заключается в том, чтобы помочь с управлением пакетами общего назначения, поскольку я уверен, что я не единственный человек, у которого была эта проблема.

Теперь, если нет хороших способов сделать это из APT, мы можем попытаться увидеть, есть ли хороший способ «виртуализировать» среду. Я имею в виду что-то вроде chroot, есть ли хороший способ сделать это с G'MIC, работающим как плагин GIMP, чтобы мне не приходилось иметь дело с удаленными пакетами, или есть лучшее решение (помимо двойной загрузки).

-1
26.01.2019, 17:36
2 ответа

Метод chroot (требуется корень)

Прежде всего, я собираюсь сказать, что моим решением является метод chroot. Это не мой любимый вариант решения этой проблемы, поскольку я действительно хочу иметь возможность инкапсулировать программу в хост-системе, а не создавать подсистему, двойную загрузку или виртуальную машину.

Приведенные ниже 3 команды выполняют 3 действия. Первый устанавливает schroot и debootstrap. Оба они необходимы для запуска среды chroot. Есть способы chroot без рута, но мне нужно было бы изучить это подробнее. Второй создает среду chroot в / srv / chroot / jessie для Debian Jessie. У меня уже был сценарий на моей машине, если окажется, что у некоторых людей его нет, я могу обновить этот ответ, чтобы создать сценарий. Третья команда позволяет вам вставить в gedit приведенную ниже конфигурацию, чтобы вы могли запустить среду chroot. Существуют также текстовые редакторы, такие как vim и nano, которые другие объяснили, как использовать, если графическое приложение недоступно.

Команды

sudo apt-get install schroot debootstrap
sudo debootstrap jessie /srv/chroot/jessie
sudo gedit /etc/schroot/chroot.d/jessie.conf

Config

[jessie]
description=Debian Jessie x64
directory=/srv/chroot/jessie
groups=sbuild-security
aliases=stable
personality=linux

Эта команда позволяет вам увидеть номер вашего дисплея, записать его или запомнить (обычно это: 0, если у вас нет специальной настройки)

echo $DISPLAY

Затем вы захотите скажите вашей основной системе, что она действительно разрешает подключения к вашей графической среде с вашей chrooted машины (на том же физическом устройстве). Эта вики должна немного помочь. Поместив эту команду в ваш .profile или .bashrc, вы сможете запустить ее, когда она вам понадобится.

xhost +local:

Предварительная загрузка Chroot Mounts

Итак, чтобы заставить G'MIC работать, я выполнил инструкции по монтированию специальных устройств хоста внутри chroot .

Вы захотите выполнить это в хост-системе, а не в системе chroot. По сути, это позволяет вам использовать специальные устройства хост-системы (мне нужно провести дополнительные исследования, чтобы увидеть, насколько это безопасно, но, поскольку сам chroot по своей сути небезопасен, вам, вероятно, понадобится лучшее решение помимо этого для безопасности).

cd /srv/chroot/jessie/
sudo mount -t proc proc proc/
sudo mount -t sysfs sys sys/
sudo mount -o bind /dev dev/

Еще лучше, вы захотите создать системную службу, которая может запускать эти команды при загрузке. Вы можете запустить их только один раз при загрузке, иначе ваша оболочка будет заблокирована до перезагрузки.

Запустите это, чтобы создать файл, затем вставьте приведенное ниже содержимое в этот файл.

sudo gedit /etc/init.d/mountChroot

Вставьте это в /etc/init.d/mountChroot

#!/bin/sh

### BEGIN INIT INFO
# Provides:          chrootMount
# Required-Start:    $local_fs
# Required-Stop:     $local_fs
# Default-Start:     5
# Default-Stop:      
# Short-Description: mounts chroot special devices
### END INIT INFO

set -e

#PATH="/sbin:/bin"

. /lib/lsb/init-functions

error=0
case "$1" in
start)
    mount -t proc proc /srv/chroot/jessie/proc/
    mount -t sysfs sys /srv/chroot/jessie/sys/
    mount -o bind /dev /srv/chroot/jessie/dev/
    ;;
stop)
    #Do Nothing!
    ;;
restart|force-reload)
    #Do Nothing!
    ;;
status)
    #Do Nothing!
    ;;
*)
    #Do Nothing!
    ;;
esac

exit 0

Теперь запустите эти команды, чтобы установить правильные разрешения и включить и запустить услуга.

sudo chmod 755 /etc/init.d/mountChroot
sudo systemctl enable mountChroot.service
sudo systemctl start mountChroot.service

Запуск среды

Эта команда используется для фактического запуска среды chroot.

sudo schroot -c jessie -u root

Ниже более подробно описано, что вы пытаетесь делать в среде chroot. В основном ваши команды могут измениться, но если вы также используете Kali и пытаетесь заставить G'MIC сотрудничать, сохраняя при этом программу настроек Gnome, то следуйте точно.

Причина, по которой вы не видите, как я добавляю gmic к команде apt, заключается в том, что в этой версии также отсутствует фактический плагин, который мне нужен, как и в репозиториях Kali. Итак, я использовал свои волшебные административные полномочия и скопировал нужный пакет со своего рабочего стола в домашнюю папку chroots.

Магические административные полномочия

sudo cp /home/senor/Desktop/gmic_debian_jessie_amd64.deb /srv/chroot/jessie/root/

Теперь предоставлено, вы не сможете использовать свои магические административные полномочия, или вы просто чувствуете, что wget лучше. Если это так, сделайте это вместо этого (в среде Chroot):

apt-get install ca-certificates
wget https://gmic.eu/files/linux/gmic_debian_jessie_amd64.deb

Установка ca-сертификатов не только установит openssl, но ино он также предоставит wget сертификаты, необходимые для установления безопасного соединения (поскольку gmic использует Let's Encrypt, но wget не осознавал, что это действительный сертификат, пока не сообщил об этом). Кроме того, wget просто загружает 64-битную версию G'MIC в любую папку, в которой вы находитесь (возможно, / root /).

Внутри Chroot

apt-get install gimp libcanberra-gtk-module
dpkg -i /root/gmic_debian_jessie_amd64.deb

Когда вы собираетесь установить G'MIC как таковой, APT может пожаловаться и сказать, что вам не хватает зависимостей и что вы должны запустить «apt-get -f install», чтобы исправить это. Когда вы это сделаете, произойдет одно из двух: либо оно установит недостающие зависимости, а затем установит G'MIC, либо второе - удалит G'MIC и позволит вам снова использовать APT для других пакетов. Для меня в Kali он удалял пакеты (G'MIC), но в Debian он устанавливал зависимости, которые требовались G'MIC перед установкой. Если вы устанавливаете недостающие пакеты вручную, имейте в виду, что он может удалить системные пакеты, если вы сообщите об этом (но только если вы вручную установите зависимости), поскольку APT будет делать именно то, что вы ему говорите. Теперь он спросит вас, хотите ли вы удалить пакеты, поэтому вы можете запустить команду и отменить ее, если она попросит удалить пакеты, которые вы хотите сохранить.

Теперь libcanberra - один из тех пакетов, которые не являются сложным требованием для установки плагина, но без него G'MIC нужен только для просмотра, он не будет фактически изменять ваш образ и просто выйдет из строя. с некоторым выводом на терминал.

Теперь, когда вы установили графическую программу, вы захотите запускать эту команду всякий раз, когда вы запускаете среду chroot (для использования с графическими программами).

export DISPLAY=":0"

Теперь вы можете запустить GIMP (набрав gimp) и фактически создавать изображения с помощью плагина G'MIC. Все, что осталось, - это упростить обмен изображениями с вашей основной (хост-системой) и упростить / автоматизировать запуск GIMP (или вы можете просто использовать свои волшебные административные полномочия).

Связывание вашей chroot-системы с хостом

Ну, сначала я собираюсь сказать, что связывание и создание хорошей ссылки немного странно из-за того, что символьная ссылка на хост-систему создает неработающую ссылку на не -существующая папка в гостевой системе (или подсистеме). Вместо этого я решил создать папку в гостевой системе и связать ее с хост-системой. Мне просто нужно иметь дело с правами доступа к файлам, так как я не хочу, чтобы / root / был доступен для чтения.

sudo mkdir -p /srv/chroot/jessie/public/photoshop
sudo ln -s /srv/chroot/jessie/public/photoshop /home/senor/.data/photoshop
sudo chmod o+r /srv/chroot/jessie/public
sudo chmod o+rw /srv/chroot/jessie/public/photoshop

Это создаст по крайней мере одну символическую ссылку на хост-систему. Я хочу создать один в chroot / root / и один на своем рабочем столе.

sudo ln -s /srv/chroot/jessie/public/photoshop /home/senor/Desktop/photoshop

Внутри Chroot:

ln -s /public/photoshop /root/photoshop

Теперь вы можете заметить, что разрешения неверны, поскольку вы работаете как root в системе chroot и как угодно на хосте. Благодаря ACL я могу автоматически устанавливать разрешения для любых будущих файлов (а не для уже созданных). Сделайте внутренний chroot.

chmod g+s /public/photoshop
setfacl -d -m g::rwx /public/photoshop
setfacl -d -m o::rwx /public/photoshop

Если вы хотите установить рекурсивно все файлы, которые уже были созданы ... Сделайте это внутри chroot.

chmod -R og+w /public/photoshop

Скрипт для запуска chroot Gimp

Ну, во-первых, чтобы упростить экспорт переменной окружения, вы можете просто запустить следующие команды в chroot.

echo -e "export DISPLAY=:0\ngimp" > /bin/run-gimp.sh
chmod +x /bin/run-gimp.sh

Чтобы запустить сценарий без пароля, введите эту команду и введите в файл строку с% sudo.

sudo visudo -f /etc/sudoers.d/02_insecurities

Поместите в терминал для разрешения доступа к команде как sudo без пароля (помните, что все, что дает root без защиты (например, пароль), по своей сути небезопасно).

%sudo   ALL=(root) NOPASSWD: /usr/bin/schroot --directory /root/ -c jessie -u root /bin/bash /bin/run-gimp.sh

Теперь вы можете ввести следующую команду без необходимости пароль (если вы являетесь частью группы, sudo).

sudo /usr/bin/schroot --directory /root/ -c jessie -u root /bin/bash /bin/run-gimp.sh

Alacarte (или другой менеджер меню)

Решил использовать sudoers вместо setuid из-за автоматической установки пути и других улучшений безопасности . Очевидно, что запускать root без пароля (даже для одной команды) по-прежнему небезопасно, и я хотел бы иметь возможность запускать без root, я просто еще не понял, как это сделать.

Вы устанавливаете alacarte, если у вас еще нет менеджера меню, и в зависимости от того, какой менеджер вы используете, есть разные способы работы с графическим интерфейсом. Вы запускаете следующую команду в хост-системе, чтобы установить alacarte.

sudo apt-get install alacarte

Теперь вы используете графический интерфейс, чтобы вставить приведенную ниже команду в командную часть alacarte, когда вы создаете пункт меню и сохраняете его. Возможно, вам придется выйти / войти в систему или перезагрузиться, чтобы изменения вступили в силу, если вы изменяете (или удаляете) существующую запись.

sudo /usr/bin/schroot --directory /root/ -c jessie -u root /bin/bash /bin/run-gimp.sh

Я оставил несколько изображений на Imgur, чтобы показать alacarte и меню приложения .

Итак, вот он, способ загрузить GIMP с G'MIC в Kali Linux.Повеселись!!!

Плюсы / Минусы

Минусы

Теперь, незначительные оговорки к этому решению: отсутствие оконного менеджера делает GIMP уродливым по сравнению с тем, что на Kali, это немного сложно только для простой настройки для художественный плагин, и это не может работать так, как если бы я мог просто загрузить программу и ожидать, что она заработает.

Плюсы

Вот некоторые преимущества: мне не нужно выполнять двойную загрузку для плагина (тем более, что я использую Kali для проверки на проникновение), и я не трачу ресурсы на полноценную виртуальную машину.

0
28.01.2020, 05:13

Цитируя документацию Kali:

Добавление репозиториев в источники программного обеспечения, которые не были протестированы командой разработчиков Kali Linux, является хорошим способом вызвать проблемы в вашей системе.

Kali Linux разработан с очень узкой направленностью. Даже если он основан на Debian, вы не можете ожидать, что сможете добавлять репозитории Debian и выбирать и смешивать пакеты.

В вашем случае вам нужно выбирать: либо вы хотите использовать G'MIC, в этом случае вам следует использовать Debian вместо Kali Linux, либо вы хотите использовать Kali Linux, в этом случае вам следует отказаться от G'MIC.

0
28.01.2020, 05:13

Теги

Похожие вопросы