Могу ли я использовать pkexec в скрипте python или в файле .desktop?

В моем случае команды apt и команда dpkg не могут быть завершены и не могут быть удалены. Автоудат не удалось установить 2.6.32-56-server.

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

cd /boot
du -sk *|sort -n

У меня было около 30 ядер и поддерживающих файлов.

Я сделал uname -a, чтобы получить запущенное ядро, я обнаружил, что я был на Linux alternate 2.6.32-43-server и сделал tar из 6 версий, которые не были запущены, и были старыми.

tar -cvf ~username/boot.tar *2.6.32-44-server *2.6.32-45-server *2.6.32-46-server *2.6.32-47-server *2.6.32-48-server *2.6.32-49-server

Затем я сделал rm -rf того, что я сделал резервную копию:

rm -rf *2.6.32-44-server *2.6.32-45-server *2.6.32-46-server *2.6.32-47-server *2.6.32-48-server *2.6.32-49-server

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

Теперь, когда у меня было некоторое место на /boot, я смог запустить

apt-get -f install 

Чтобы очистить неудачную установку 2.6.32-56-server.

Затем я сделал

apt-get remove linux-headers-2.6.32-38 linux-headers-2.6.32-38-server linux-image-2.6.32-38-server
apt-get remove linux-headers-2.6.32-39 linux-headers-2.6.32-39-server linux-image-2.6.32-39-server

Это дало мне возможность вернуть обратно то, что я создал.

tar -xf ~username/boot.tar
rm  ~username/boot.tar    

Чтобы очистить, я тогда мог запускать :

apt-get autoremove

Я перезагрузился и теперь дошел до использования 4% от /boot.

1
задан 13 April 2017 в 15:23

1 ответ

Еще одно исправление для пользовательских скриптов: Определите соответствующие переменные среды внутри вашего скрипта.

Для этого можно использовать фрагмент, подобный следующему:

getXuser() {
        user=`pinky -fw | awk '{ if ($2 == ":'$displaynum'" || $(NF) == ":'$displaynum'" ) { print $1; exit; } }'`
        if [ x"$user" = x"" ]; then
                startx=`pgrep -n startx`
                if [ x"$startx" != x"" ]; then
                        user=`ps -o user --no-headers $startx`
                fi
        fi
        if [ x"$user" = x"" ]; then
               user=$(pinky -fw | awk '{ print $1; exit; }')
        fi
        if [ x"$user" != x"" ]; then
                userhome=`getent passwd $user | cut -d: -f6`
                export XAUTHORITY=$userhome/.Xauthority
        else
                export XAUTHORITY=""
        fi
        export XUSER=$user
}


for x in /tmp/.X11-unix/*; do
   displaynum=`echo $x | sed s#/tmp/.X11-unix/X##`
   getXuser;
      if [ x"$XAUTHORITY" != x"" ]; then
        export DISPLAY=":$displaynum"
      fi
done

( на основе функции ACPI getXuser)

Если вы обнаружили, что ваш файл .desktop все еще не работает, вы можете попробовать обернуть ваш pkexec commandline в фрагменте sh, например:

Exec=sh -c "pkexec --user root script_that_needs_root.sh"
]

Последняя проблема - известная ошибка, по-видимому:

http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=690339

http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=690339

http://bugs.debian.org/cgi-bin/bugreport. cgi? bug = 650038

http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=650038

1
ответ дан 24 May 2018 в 22:53

Другие вопросы по тегам:

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