Лучший способ вручную удалить пин-код пакета apt-listbugs
— это удалить его из /etc/apt/preferences.d/apt-listbugs
. Это единственное место, где apt-listbugs
хранит информацию о пинах, поэтому нет риска несогласованности в результате удаления пинов там. Убедитесь, что вы удалили строки Package
, Pin
и Pin-Priority
вместе со всеми соответствующими строками Explanation
.
apt-listbugs
принимает во внимание ignore_bugs
перед тем, как спрашивает пользователя, что делать с ошибками, присутствующими в пакетах, которые нужно установить (или обновить ), он не обрабатывает это при проверке того, осталась ли ошибка в закрепленном пакете. применяется.
Ваш файл stable.txt
, вероятно, был создан или отредактирован в системе Windows, где новая строка представлена последовательностью возврата каретки + перевода строки (, часто упоминаемой с использованием аббревиатурыCR
LF
или escape-последовательность\r\n
).
Например, предположим, что этот образец файла:
printf '%s\r\n' P_76 P_201 >stable.txt
После того, как скрипт прочитает первую строку, подстановочное выражение *"$P"*.img
ничему не соответствует (, если имена ваших файлов на самом деле не содержат символы возврата каретки )и, если параметрnullglob
(или эквивалентный параметр )не указан на самом деле значение f
равно *P_76\r*.img
. Когда отображается mv - "$f" "./stable/$f"
, два символа CR
заставляют последующий текст вставляться в начало строки, перезаписывая то, что уже было там.
Вы можете проверить свои файлы на наличиеCR
LF
последовательностей новой строки с помощью
$ cat -v stable.txt
P_76^M
P_201^M
или
$ od -An -c stable.txt
P _ 7 6 \r \n P _ 2 0 1 \r \n
или
$ file stable.txt
stable.txt: ASCII text, with CRLF line terminators
И вы можете преобразовать их в формат Unix, LF -с завершением с помощью (среди других способов):
$ dos2unix stable.txt