I installed program (call it, for example,progA
) by building it from source code, and then finally calling sudo make install
and sudo ldconfig
.
However, it seems apt-get
hasn't gotten the глупец, because when installing progB
, which depends on progA
, apt-get
recommends I also install progA
. Why is this, and what could I do?
TL; DR checkinstall
ваш друг ;)
sudo apt-get install checkinstall
После установки с помощью sudo make install
ваш менеджер пакетов абсолютно ничего не знает об этой установке. Но он знает все о пакете с тем же именем в репозиториях Ubuntu или в PPA.
Используйте sudo checkinstall
вместо sudo make install
и используйте более высокую версию в качестве версии в репозитории, чтобы быть уверенным, что ваш менеджер пакетов принимает эту версию как правильную зависимость для ProgB
.
Дополнительная информация:
checkinstall
действительно изящный, поскольку он следует тому, что делает команда make install
, чтобы выяснить, как построить пакет.
Это означает, что если вы устанавливаете программу с помощью make install
, но затем хотите раскаяться в своих грехах, все, что вам нужно сделать, это sudo checkinstall -D make install
и эта команда будет:
следовать за make install
, чтобы выяснить, что она делает
copy-cat make install
, за исключением формы пакета * .deb
установить из пакет (точно так же, как make install
, учитывая пункт 1)), за исключением того, что apt-get
знает об этом и, таким образом, перезаписывает все файлы именно там, где make install
поместил бы их, если вы выберете ДА, чтобы включить файлы, помещенные командой make install
в домашний каталог пакета, - несколько вариантов во время checkinstall
процесс позволит вам выбрать (очевидно, что выбор есть, так что вы можете использовать его в индивидуальном порядке)
Бонус: вы также можете удалить пакет (назовите его [1161 637] progA снова), установленный с использованием make install
, в которых нет make uninstall
support , выполнив описанный выше процесс checkinstall
, и затем просто выполните:
dpkg -r progA
Три варианта:
создать поддельный пакет для progA
: Как подделать установленную версию пакета? (есть подробный пример для TeXlive) .
создать пакет для progA
, проще, если в нем есть опция checkinstall
: Как обмануть зависимости APT?
Также построить progB
из источников.
Я бы порекомендовал использовать uupdate
из сценариев разработчика
и собрать пакет так же, как исходный.
Установите необходимые пакеты
$ sudo apt-get install build-essential devscripts
Загрузите старый пакет из официального репозитория (будет использовать MediaWiki
в качестве примера) и новый tar-ball из восходящего потока.
$ mkdir ~/Downloads/mediawiki
$ cd ~/Downloads/mediawiki
$ apt-get source mediawiki
$ wget https://releases.wikimedia.org/mediawiki/1.26/mediawiki-1.26.0.tar.gz
Запустите uupdate
, чтобы создать новую исходную папку из исходного tar-Ball и старого debian / control
$ cd mediawiki-1.19.14+dfsg # depends on your Ubuntu version
$ uupdate ../mediawiki-1.26.0.tar.gz 1.26.0
$ cd ../mediawiki-1.26.0
Теперь вы должны проверить, нужно ли вам вносить изменения в файлы debian / control
и т.д. Если вы закончили, вы можете собрать пакет deb и установить его
$ dpkg-buildpackage -us -uc
$ cd ..
$ sudo dpkg -i *.deb