Начиная с версии 1.1 ~exp1, apt
и apt-get
поддерживают установку из файлов пакетов, доступных через файловую систему, а не только из репозиториев. Однако, чтобы сохранить обратную совместимость, эта функция работает только для спецификаторов пакетов, которые являются безошибочно файлами, т. е. , которые содержат /
. Все остальное обрабатывается как пакет имя , а не пакет файл , с использованием ранее -существующих механизмов.
Итак,
sudo apt install wkhtmltox_0.12.5-0.20180604.140.rc~6f77c46~bionic_amd64.deb
обрабатывается как запрос на установку пакета с именем «wkhtmltox _0.12.5 -0.20180604.140.rc ~6f77c46 ~bionic _amd64.deb», а apt
идет ищет это в своих репозиториях и терпит неудачу.
Но
sudo apt install./wkhtmltox_0.12.5-0.20180604.140.rc~6f77c46~bionic_amd64.deb
обрабатывается как запрос на установку пакета, содержащегося в файле с именем «./wkhtmltox _0.12.5 -0.20180604.140.rc ~6f77c46 ~bionic _amd64.deb» (вместе со своими зависимостями, если необходимо ). Это также работает для абсолютных путей.
Я не могу найти никаких следов этого в документации apt
, кроме краткого упоминания в журнале изменений:
- add support for "apt-get install foo_1.0_all.deb"
Существует ошибка, требующая документирования этой функции .
Одна вещь, которую нужно попробовать для достижения степени асинхронной установки переменной, это:
#!/usr/bin/env bash
async() {
while :; do
# send SIGUSR1 to "parent" script
kill -USR1 "$1"
sleep 1
done
}
# provide PID of script to async
async $$ &
async_pid=$!
declare -i i=0
update() {
i=42
}
cleanup() {
kill ${async_pid}
}
trap update USR1
trap cleanup EXIT
echo $i
sleep 2
echo $i
Одно предостережение при таком подходе: :если сценарий находится в спящем режиме и сигнал поднят, команда update
выполняется только один раз, когда сценарий снова «бодрствует».