Я не вижу записи для репозитория stretch/main
в вашем выводе apt policy
, который необходим для установки пакета libgif7 .
Попробуйте это:
добавить основной репозиторий в свой/etc/apt/sources.list
:
deb http://ftp.de.debian.org/debian stretch main
затем запустите
apt-get update
apt-get -t stretch-backports install openjdk-11-jdk
Ваши кавычки не влияют на команду $(date)
, поэтому она всегда вычисляется ровно один раз непосредственно перед выполнением команды socat
.
Упрощение вашей команды в иллюстративных целях. Я надеюсь, что это немного более простое представление, которое показывает, как $(date)
не находится внутри кавычек
socat TCP4-LISTEN:flags SYSTEM:"sed | gpcl6 file-"$(date)"-suffix"
# ^in quotes ^out ^in ^out
Если вы поместите его в двойные -кавычки, он будет оцениваться так же, как сейчас (, за исключением того, что любые пробелы в результирующем выводе останутся пробелами, а не точками разделения слов ). Если вы поместите его в одинарные -кавычки, оболочка, которую socat
вызывает для оценки параметра SYSTEM
, будет оценивать его каждый раз, когда он вызывается :
socat TCP4-LISTEN:flags SYSTEM:'sed | gpcl6 file-$(date)-suffix'
Вы можете увидеть это в действии с помощью этой пары команд, запущенных в двух разных системах:
# Server
socat TCP4-LISTEN:4178,fork,reuseaddr SYSTEM:'cat >socat.$(date +%H%M%S).txt'
# Client
echo boo | nc remoteServer 4178
# Sever
ls șocat.*.txt
Вставив это изменение обратно в исходный код, вы должны получить это (уведомление о том, что для удобства я также поменял местами тип кавычек, используемых командой sed
):
HPNP=4178 socat TCP4-LISTEN:4178,bind=192.168.216.179,fork,reuseaddr,su=hp3000 SYSTEM:'sed -r "1s/^.{42}//" | cat /var/spool/hp3000/forms/hll_inv_ljiii_85.ovl - | gpcl6 -dNOSAFE -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile=/var/spool/hp3000/np4178/HP3000-INV-$(date -Iseconds)-%03u.pdf -' &