Мне нужно передать параметр командной строки 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 работает.
Когда я проверяю существующую конфигурацию 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
Когда я проверяю существующую конфигурацию 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
Когда я проверяю существующую конфигурацию 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