Как я могу удалить все зависимости сборки для определенного пакета?


10

Когда я хочу скомпилировать что-либо из исходного кода в Ubuntu / Debian, я обычно получаю build-зависимости, выполняя " sudo apt-get build-dep PACKAGE_NAME" в терминале.

Они (обычно) бесполезны после завершения работы по компиляции.

Итак, как мне удалить все зависимости сборки для определенного пакета?

Ответы:


5

Чтобы выяснить зависимости сборки программы, которую вы можете запустить, apt-cache showsrc pkgnameи она перечислит среди другой информации Build-Depends, которые часто являются файлами, оканчивающимися на -dev; хотя стоит проверить -dev, требуются ли какие-либо файлы (особенно те, которые не отмечены ) другими программами. Вы можете узнать это с помощью apt-cache depends fileи apt-cache rdepends file. Следующий пример для Shotwell:

apt-cache showsrc shotwell

Зависит от сборки: debhelper (> = 7.0.50 ~), m4, valac-0.16 (> = 0.15), libgee-dev (> = 0.5.0), libgtk-3-dev (> = 3.0.11), libexif -dev (> = 0.6.16), libsqlite3-dev (> = 3.5.9), libgexiv2-dev (> = 0.4.1-1build1), libgnomevfs2-dev (> = 2.24.2), libgphoto2-2-dev (> = 2.4.2), libsoup2.4-dev (> = 2.26.0), libxml2 (> = 2.6.32), libunique-3.0-dev (> = 1.0.0), libwebkitgtk-3.0-dev (> = 1.1.5), libgudev-1.0-dev (> = 145), libdbus-glib-1-dev (> = 0.80), libraw-dev (> = 0.13.1-2), libusb-dev, libjson-glib -dev (> = 0.7.6), libgstreamer0.10-dev (> = 0.10.28), libgstreamer-plugins-base0.10-dev (> = 0.10.32), python-scour, libunity-dev, liblaunchpad- интеграция-3.0-dev (> = 0.1.36), librest-dev

Есть команда сделать все это за один раз на сайте webupd8 , но я обнаружил, что он не работает надежно с текущей версией Ubuntu, поскольку кажется, что он удаляет слишком много. Я попробовал это с Пинтой, и он предложил удалить всю моно библиотеку. На Launchpad обсуждаются такие проблемы с использованием таких команд, как webupd8 . Будьте очень осторожны, экспериментируя с любыми «решениями», которые вы можете найти.

Обидно, что нет autoremoveкоманды для build-depустановленных пакетов.


1
Я попробовал метод aptitude и да, вы правы, он слишком много удаляет ... может из-за взаимозависимостей. Одна другой Mothod я нашел, чтобы пройти следующий вариант (при использовании команды сборки-DEP) sudo apt-get build-dep -o APT::Get::Build-Dep-Automatic=true PACKAGE_NAME. Теперь их можно удалить с помощью apt-get autoremove. Но это работает только после удаления основного пакета.
Хуршид Алам

2
Во всяком случае, я только что узнал, что правильный способ сделать это - использовать pbuilder. Так что никто не должен беспокоиться об установке / удалении зависимостей.
Хуршид Алам

6

Тумбли пишет :

В будущем я настоятельно рекомендую использовать mk-build-deps... вместо aptitude build-dep. Это оставляет пакет ... в вашей системе, [который имеет зависимости] от build-deps, который вы можете легко удалить позже.

mk-build-deps может быть установлен с sudo apt install devscripts


4

Опция 1:

Запомните, какие пакеты были установлены, sudo apt-get build-dep PACKAGE_NAMEи удалите их после сборки.

Вариант 2:

apt-cache showsrc дает много информации об исходных пакетах, в том числе список build-зависит.

apt-cache showsrc PACKAGE_NAME

Например:

$ apt-cache showsrc pithos
Package: pithos
Binary: pithos
Version: 0.3.17~git07dcbd86a1
Section: python
Maintainer: Kevin Mehall <km@kevinmehall.net>
Build-Depends: cdbs (>= 0.4.43), debhelper (>= 6), python, python-central (>= 0.6.11), python-distutils-extra (>= 2.10)
Architecture: all
Standards-Version: 3.8.2
Format: 1.0
Directory: pool/main/p/pithos
Files:
 cdf2129923e62bb62c246965453b40bd 2023031 pithos_0.3.17~git07dcbd86a1.tar.gz
 97689e8ada8be527d689f2c83415d3b0 1544 pithos_0.3.17~git07dcbd86a1.dsc
Python-Version: current
Checksums-Sha1: 35cbf3ae52922e50a0b81afcce2cd97a86afb254 2023031 pithos_0.3.17~git07dcbd86a1.tar.gz
Package-List: pithos deb python extra
Checksums-Sha256: 2b704d86f3dc1d36d180177d11e578bdcf74ea97b09b530144afe754e570b262 2023031 pithos_0.3.17~git07dcbd86a1.tar.gz
$ sudo apt-get remove cdbs debhelper python python-central python-distutils-extra

Риск с этой опцией заключается в том, что вы можете удалить пакет, который важен для чего-то, кроме сборки PACKAGE_NAME. Просто прочитайте список пакетов, которые нужно удалить, прежде чем идти дальше.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.