Как собрать пакет Debian с помощью dh-virtualenv? файл правил не работает с fakeroot
Я пытаюсь собрать пакет deb с помощью вспомогательного пакета Debian Spotify dh-virtualenv.
Сообщение об ошибке, которое я получаю: во время работы dpkg-buildpackage -us -uc
:
(venv) $ dpkg-buildpackage -us -uc
dpkg-buildpackage: source package ese-xlr8r
dpkg-buildpackage: source version 1.4.7
dpkg-buildpackage: source distribution UNRELEASED
dpkg-buildpackage: source changed by Special Characters <casDTV_SpecChars@echostar.com>
dpkg-buildpackage: host architecture amd64
dpkg-source --before-build active
fakeroot debian/rules clean
: No such file or directory
'. Stop. No rule to make target `
dpkg-buildpackage: error: fakeroot debian/rules clean gave error exit status 2
Я не знаю, почему он не найдет файл правил. Я могу запустить файл вручную без Fakeroot, и он работает (или, по крайней мере, он проходит эту первоначальную ошибку):
: command not found
: no such job
dh_testdir
dh_auto_clean
pyversions: missing X(S)-Python-Version in control file, fall back to debian/pyversions
pyversions: missing debian/pyversions file, fall back to supported versions
/home/echostar/projects/XLR8R/active/venv/local/lib/python2.7/site-packages/setuptools/dist.py:364: UserWarning: Normalizing '1.4.10
' to '1.4.10'
normalized_version,
running clean
'build/lib.linux-x86_64-2.7' does not exist -- can't clean it
'build/bdist.linux-x86_64' does not exist -- can't clean it
'build/scripts-2.7' does not exist -- can't clean it
dh_clean
Поскольку вы не видите ошибку "Нет такого файла или каталога". Я могу воспроизвести ошибку с помощью fakeroot:
(venv) $ fakeroot debian/rules
: No such file or directory
'. Stop. No rule to make target `
Вот мой файл правил:
(venv) $ cat debian/rules
#!/usr/bin/make -f
%:
dh $@ --with python-virtualenv
Я что-то пропустил?
Примечание: "venv" - это имя моего virtualenv, и оно активно.
ОБНОВЛЕНИЕ 23.08.2016 Я скопировал свой код на другую виртуальную машину в нашем центре обработки данных с немного более старой Ubuntu, переустановил все и выполнил команду buildpackage. На этот раз он сделал это намного дальше, но в конце все еще похожая ошибка. Я не буду публиковать весь журнал buildpackage, но вот суть в конце:
New python executable in debian/ese-xlr8r/usr/share/python/ese-xlr8r/bin/python
Installing setuptools, pip...done.
Downloading/unpacking behave==1.2.5 (from -r ./requirements.txt (line 1))
Cannot fetch index base URL https://pypi.python.org/simple/
Could not find any downloads that satisfy the requirement behave==1.2.5 (from -r ./requirements.txt (line 1))
Cleaning up...
No distributions at all found for behave==1.2.5 (from -r ./requirements.txt (line 1))
Storing debug log for failure in /home/echostar/.pip/pip.log
Traceback (most recent call last):
File "/usr/bin/dh_virtualenv", line 106, in <module>
sys.exit(main() or 0)
File "/usr/bin/dh_virtualenv", line 86, in main
deploy.install_dependencies()
File "/usr/lib/python2.7/dist-packages/dh_virtualenv/deployment.py", line 172, in install_dependencies
subprocess.check_call(self.pip('-r', requirements_path))
File "/usr/lib/python2.7/subprocess.py", line 540, in check_call
raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['/home/echostar/dan/xlr8r/debian/ese-xlr8r/usr/share/python/ese-xlr8r/bin/python', '/home/echostar/dan/xlr8r/debian/ese-xlr8r/usr/share/python/ese-xlr8r/bin/pip', 'install', '--log=/tmp/tmpNybuqh', '-r', './requirements.txt']' returned non-zero exit status 1
make: *** [binary] Error 1
dpkg-buildpackage: error: debian/rules binary gave error exit status 2
Я не знаю, почему он вызывает pip с префиксом python, например: python pip install -r./requirements.txt
Pip - это не файл Python, который нужно так называть. возможный баг в dh-virtualenv?
1 ответ
При сборке Python virtualenv pip не смог удовлетворить одну из зависимостей проекта:
Для поведения не найдено ни одного распределения ==1.2.5
Который был бы указан в requirements.txt
файл проекта.