Wheezy и Jessie недавно были удалены из зеркальной сети , поэтому, если вы хотите продолжить получение бэкпортов Jessie, вам нужно вместо этого использовать archive.debian.org
:
deb [check-valid-until=no] http://archive.debian.org/debian jessie-backports main
(Необходимо отключить проверку достоверности, так как репозиторий больше не обновляется. apt
Джесси не поддерживает флаг check-valid-until
, подробности см. в ответе Иностии , а также сводную информацию о конфигурации ниже в этом ответе.)
Репозиторий jessie-updates
удален :все обновления объединены с основным репозиторием, и больше не будет обновлений безопасности, отличных от -. Поэтому любые ссылки на jessie-updates
в файлах sources.list
или sources.list.d
необходимо удалить. Обновления безопасности будут по-прежнему предоставляться для поддерживаемых LTS -архитектур в репозитории безопасности до 30 июня 2020 г.
Поскольку вы создаете образ контейнера, я настоятельно рекомендую вместо него использовать Debian 9 (Stretch ). Чтобы остаться на Debian 8 (Jessie ), ваши репозитории в конечном итоге должны выглядеть как
deb http://cdn-fastly.deb.debian.org/debian/ jessie main
deb-src http://cdn-fastly.deb.debian.org/debian/ jessie main
deb http://security.debian.org/ jessie/updates main
deb-src http://security.debian.org/ jessie/updates main
deb http://archive.debian.org/debian jessie-backports main
deb-src http://archive.debian.org/debian jessie-backports main
(без репозитория jessie-updates
).
Вам также потребуется отключить проверку достоверности в /etc/apt/apt.conf
(, которая будет применяться ко всем репозиториям):
Acquire::Check-Valid-Until "false";
Условный оператор -e
проверяет, существует ли файл с заданным именем. Он не выполняет никакого сопоставления с образцом. [[ -e fileclass1*1.txt ]]
проверяет, существует ли файл с именем fileclass1*1.txt
с буквальной звездочкой в имени, а не есть ли хотя бы один файл, соответствующий шаблону подстановки fileclass1*1.txt
.
С одной квадратной скобкой [ ! -e $name ]
, поскольку $name
не заключен в кавычки, значение name
подвергается подстановке подстановочных знаков и разбиению на слова. Если значение name
равно Directory1/fileclass1*1.txt
, эффект зависит от того, сколько файлов соответствует шаблону подстановки.
-e
видит имя файла Directory1/fileclass1*1.txt
, которого не существует, поэтому [ ! -e $name ]
верно. -e
видит это имя файла, которое существует¹, поэтому [ ! -e $name ]
ложно. [ ! -e $name ]
отображает сообщение об ошибке и возвращает статус ошибки. Эффект от [[ -e $name ]]
отличается, потому что [[ … ]]
— это специальный синтаксис (, тогда как [
— это обычная команда, аргументы которой раскрываются нормально ). Внутри [[ … ]]
не выполняется разделение слов или расширение подстановочных знаков.
Чтобы решить вашу актуальную проблему, см. Проверка наличия файлов, соответствующих шаблону, для выполнения скрипта
¹ За исключением маловероятного случая, когда из-за состояния гонки файл удаляется между моментом, когда оболочка выводит список содержимого каталога для расширения шаблона подстановки, и моментом, когда оператор -e
проверяет наличие файла существование.