ответ тердона хорош, но я бы избегал раздувания сети,
но сначала в сторону ; ping
может занять всего 0,002 с до 8.8.8.8, поэтому, если вы хотите протестировать сеть с низкой задержкой,
$ timeout 0.1 ping -c 1 8.8.8.8
можно использовать, чтобы гарантировать 1/10 секунды времени тестирования (, поскольку время ожидания ping не составляет доли секунды ).
Теперь ответ на оптимизацию скорости и использования сети; вы должны сделать так, чтобы ваши скрипты передавали параметры;
#!/bin/bash
usage() {
echo "Usage: $0 [OPTIONS]"
echo " OPTIONS:"
echo " -h this Help message"
echo " -n do Not re-test network connectivity"
}
NO_TEST=false
while getopts "nh" OPT; do
case "$OPT" in
n)
NO_TEST=true
;;
h)
usage
exit 0
;;
*)
echo "unsupported option $OPT" >&2
usage
exit 1
;;
esac
done
shift $((OPTIND - 1))
if ! $NO_TEST && ! ping -c 1 -w 3 8.8.8.8; then
echo "no connection" >&2
exit 2
fi
echo "do stuff";
Кажется, ошибки были вызваны файлами и каталогами.deb, которые make deb-pkg
были установлены в /usr/src, я исправил это, удалив их, и теперь компилируется нормально
Исследуя этот ответ, я ответил на это для не -собственных пакетов, но обнаружил, что linux-signed-amd64
исходный пакет (, который, вероятно, является тем, что вы собираете ), является собственным пакетом. К сожалению, это сводит на нет многое из того, что я сказал в разделе Non -Native packages , но я думаю, что это все еще полезно для всех, кто сталкивается с этим вопросом.
Обычно такая проблема возникает из-за того, что мы внесли неотслеживаемые изменения в -не родной пакет. Это применимо, когда debian/source/format
равно 3.0 (quilt)
. Например:
apt source <package>
cd <package>_<version>
# make changes to sources
dpkg-buildpackage
apt source
загружает нетронутый tar-архив основной ветки (оригинального авторского релиза, если только +dfsg
не находится в версии ), распаковывает его, затем добавляет содержимое пакета debian (, найденное в каталоге debian/
).
Когда мы используемdpkg-buildpackage
(или debuild
), первое, что делается, это то, что dpkg-source
вызывается для проверки того, что все, что находится за пределами пакета debian/
, точно соответствует первозданному исходному tarball. Это гарантирует, что никто в Debian не добавит никаких недокументированных изменений.
Любые изменения исходного содержимого необходимо применять независимо в виде исправления. quilt
используется для этого. Патч хранится в debian/patches
и применяется dpkg-source
после проверки. Это гарантирует, что любой контент -, относящийся к дистрибутиву, будет должным образом задокументирован. Это также помогает отслеживать, какие исправления были отправлены вверх по течению (первоначальным разработчикам ), поскольку в формате исправления есть место для метаданных -содержимого (или заголовков ).
Эта проблема может возникнуть и в другом случае, если сборка происходит в -источнике (, что означает, что артефакты сборки не изолированы от каталога сборки или сценарии будут изменять исходные файлы в -месте ). Будем надеяться, что debuild -T clean
восстановит все в исходное состояние, в противном случае это нужно делать вручную.
В этом случае apt source
загрузил собственный linux-signed-amd64_*.tar.xz
исходный пакет, а затем распаковал его. Когда мы используем debuild
или dpkg-buildpackage
, мы обычно генерируем исходный пакет и все бинарные пакеты. Поскольку исходный пакет уже существовал, debuild
пропустил этот шаг, но проверил, что исходный пакет соответствует текущему исходному дереву. Вот и все провалилось. Вместо того, чтобы заменить исходный пакет, который у вас был, он решил выдать ошибку. Удаление исходного пакета (с помощьюdebuild -T clean
)разрешает этот конфликт.
Верно, исходный код dpkg -не игнорирует некоторые из ранее собранных файлов, и вы увидите подобные ошибки.
make -j `getconf _NPROCESSORS_ONLN` deb-pkg LOCALVERSION=-custom
Это позволяет мне выполнить сборку ровно один раз после чистого клонирования. Последующая сборка всегда завершалась неудачей из-за проблем с debpkg
.Следовательно, make bindeb -pkg может помочь в следующей сборке. Команда:
make -j `getconf _NPROCESSORS_ONLN` bindeb-pkg LOCALVERSION=-custom
Это работает нормально, и теперь сборка выполняется успешно