Не удалось передать apt-get -o APT :: Update :: Post-Invoke-Success или аналогичный вариант apt-apt

Мне нужно передать параметр командной строки apt, чтобы связать выполнение apt-get install / update.

Я знаю, что это можно сделать, изменив файлы конфигурации в /etc/apt/apt.conf, но я хочу иметь возможность сделать это из командной строки, потому что мне это нужно всего несколько раз.

В частности, я хочу иметь возможность выполнить скрипт, который для целей тестирования я нашел в /home/jake/agio.

К сожалению, apt-get, похоже, не очень подвержен печати ошибок или причине, почему это не работает. И, очевидно, я тестировал скрипт и работаю.

Я думаю, что я пробовал все возможные комбинации опций для apt-get:

apt-get -y remove youtube-dl && apt-get -o Debug::pkgProblemResolver=yes -o APT::Update::Post-Invoke-Success="/home/jake/agio" update apt-get -y remove youtube-dl && apt-get -o Debug::pkgProblemResolver=yes -o APT::Update::Post-Invoke-Success={"/home/jake/agio"} update apt-get -y remove youtube-dl && apt-get -o Debug::pkgProblemResolver=yes -o APT::Update::Post-Invoke-Success={"/home/jake/agio"\;} update apt-get -y remove youtube-dl && apt-get -o Debug::pkgProblemResolver=yes -o APT::Update::Post-Invoke-Success={"/home/jake/agio "} update apt-get -y remove youtube-dl && apt-get -o Debug::pkgProblemResolver=yes -o APT::Update::Post-Invoke-Success=/home/jake/agio update apt-get -y remove youtube-dl && apt-get -o Debug::pkgProblemResolver=yes -o APT::Update::Post-Invoke-Success=/home/jake/agio update apt-get -y remove youtube-dl && apt-get -o Debug::pkgProblemResolver=yes -o DPkg::Post-Invoke="/home/jake/agio" install youtube-dl apt-get -y remove youtube-dl && apt-get -o Debug::pkgProblemResolver=yes -o DPkg::Post-Invoke={"/home/jake/agio"} install youtube-dl apt-get -y remove youtube-dl && apt-get -o Debug::pkgProblemResolver=yes -o DPkg::Post-Invoke={"/home/jake/agio"\;} install youtube-dl apt-get -y remove youtube-dl && apt-get -o Debug::pkgProblemResolver=yes -o DPkg::Post-Invoke={"/home/jake/agio "} install youtube-dl apt-get -y remove youtube-dl && apt-get -o Debug::pkgProblemResolver=yes -o DPkg::Post-Invoke=/home/jake/agio install youtube-dl apt-get -y remove youtube-dl && apt-get -o Debug::pkgProblemResolver=yes -o DPkg::Post-Invoke=/home/jake/agio install youtube-dl apt-get -y remove youtube-dl && apt-get -o Debug::pkgProblemResolver=yes -o DPkg::Post-Invoke="/home/jake/agio" update apt-get -y remove youtube-dl && apt-get -o Debug::pkgProblemResolver=yes -o DPkg::Post-Invoke={"/home/jake/agio"} update apt-get -y remove youtube-dl && apt-get -o Debug::pkgProblemResolver=yes -o DPkg::Post-Invoke={"/home/jake/agio"\;} update apt-get -y remove youtube-dl && apt-get -o Debug::pkgProblemResolver=yes -o DPkg::Post-Invoke={"/home/jake/agio "} update apt-get -y remove youtube-dl && apt-get -o Debug::pkgProblemResolver=yes -o DPkg::Post-Invoke=/home/jake/agio update apt-get -y remove youtube-dl && apt-get -o Debug::pkgProblemResolver=yes -o DPkg::Post-Invoke=/home/jake/agio update

Можете ли вы мне помочь?!

-o Debug::pkgProblemResolver=yes работает.

0
задан 20 April 2018 в 16:28

3 ответа

Когда я проверяю существующую конфигурацию apt, я вижу:

~ apt-config dump | grep -i dpkg::post
DPkg::Post-Invoke "";
DPkg::Post-Invoke:: "if [ -d /var/lib/update-notifier ]; then touch /var/lib/update-notifier/dpkg-run-stamp; fi; /usr/lib/update-notifier/update-motd-updates-available 2>/dev/null || true";

И так, чтобы попробовать варианты, похоже, что правильная форма будет -o DPkg::Post-Invoke::=/home/jake/agio:

$ apt-config -o DPKG::Post-invoke::='foo bar' dump | grep -i DPkg::Post
DPkg::Post-Invoke "";
DPkg::Post-Invoke:: "if [ -d /var/lib/update-notifier ]; then touch /var/lib/update-notifier/dpkg-run-stamp; fi; /usr/lib/update-notifier/update-motd-updates-available 2>/dev/null || true";
DPkg::Post-Invoke:: "foo bar";

И действительно:

~ sudo apt-get -o DPkg::Post-Invoke::='foo bar' install snapd-          
Reading package lists... Done
[...]
Processing triggers for man-db (2.7.5-1) ...
sh: 1: foo: not found
E: Problem executing scripts DPkg::Post-Invoke 'foo bar'
E: Sub-process returned an error code
2
ответ дан 22 May 2018 в 11:20
  • 1
    Я пришел к такому же выводу - однако я все еще смущен, почему DPKG::Post-invoke='foo bar' не работает, поскольку он, кажется, вставляет foo bar в качестве первого элемента в списке (заменяя пустую строку) , – steeldriver 20 April 2018 в 17:12
  • 2
    @steeldriver, как выглядит вывод, я думаю, что члены списка все входят в подраздел ::, поэтому, возможно, пустая строка не является первым элементом в списке или части списка вообще, но какой-то другой атрибут , который не имеет никакого значения. – muru 20 April 2018 в 17:43

Когда я проверяю существующую конфигурацию apt, я вижу:

~ apt-config dump | grep -i dpkg::post DPkg::Post-Invoke ""; DPkg::Post-Invoke:: "if [ -d /var/lib/update-notifier ]; then touch /var/lib/update-notifier/dpkg-run-stamp; fi; /usr/lib/update-notifier/update-motd-updates-available 2>/dev/null || true";

И так, чтобы попробовать варианты, похоже, что правильная форма будет -o DPkg::Post-Invoke::=/home/jake/agio:

$ apt-config -o DPKG::Post-invoke::='foo bar' dump | grep -i DPkg::Post DPkg::Post-Invoke ""; DPkg::Post-Invoke:: "if [ -d /var/lib/update-notifier ]; then touch /var/lib/update-notifier/dpkg-run-stamp; fi; /usr/lib/update-notifier/update-motd-updates-available 2>/dev/null || true"; DPkg::Post-Invoke:: "foo bar";

И действительно:

~ sudo apt-get -o DPkg::Post-Invoke::='foo bar' install snapd- Reading package lists... Done [...] Processing triggers for man-db (2.7.5-1) ... sh: 1: foo: not found E: Problem executing scripts DPkg::Post-Invoke 'foo bar' E: Sub-process returned an error code
2
ответ дан 17 July 2018 в 16:29

Когда я проверяю существующую конфигурацию apt, я вижу:

~ apt-config dump | grep -i dpkg::post DPkg::Post-Invoke ""; DPkg::Post-Invoke:: "if [ -d /var/lib/update-notifier ]; then touch /var/lib/update-notifier/dpkg-run-stamp; fi; /usr/lib/update-notifier/update-motd-updates-available 2>/dev/null || true";

И так, чтобы попробовать варианты, похоже, что правильная форма будет -o DPkg::Post-Invoke::=/home/jake/agio:

$ apt-config -o DPKG::Post-invoke::='foo bar' dump | grep -i DPkg::Post DPkg::Post-Invoke ""; DPkg::Post-Invoke:: "if [ -d /var/lib/update-notifier ]; then touch /var/lib/update-notifier/dpkg-run-stamp; fi; /usr/lib/update-notifier/update-motd-updates-available 2>/dev/null || true"; DPkg::Post-Invoke:: "foo bar";

И действительно:

~ sudo apt-get -o DPkg::Post-Invoke::='foo bar' install snapd- Reading package lists... Done [...] Processing triggers for man-db (2.7.5-1) ... sh: 1: foo: not found E: Problem executing scripts DPkg::Post-Invoke 'foo bar' E: Sub-process returned an error code
2
ответ дан 23 July 2018 в 17:21

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

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