I installed в program by getting its source code, and then running 'я потею make install'; how to make 'apt-get' know about it?

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?

46
задан 3 December 2015 в 18:00

3 ответа

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 и эта команда будет:

  1. следовать за make install , чтобы выяснить, что она делает

  2. copy-cat make install , за исключением формы пакета * .deb

  3. установить из пакет (точно так же, как make install , учитывая пункт 1)), за исключением того, что apt-get знает об этом и, таким образом, перезаписывает все файлы именно там, где make install поместил бы их, если вы выберете ДА, чтобы включить файлы, помещенные командой make install в домашний каталог пакета, - несколько вариантов во время checkinstall процесс позволит вам выбрать (очевидно, что выбор есть, так что вы можете использовать его в индивидуальном порядке)

Бонус: вы также можете удалить пакет (назовите его [1161 637] progA снова), установленный с использованием make install , в которых нет make uninstall support , выполнив описанный выше процесс checkinstall , и затем просто выполните:

dpkg -r progA
56
ответ дан 22 November 2019 в 23:56

Три варианта:

  1. создать поддельный пакет для progA : Как подделать установленную версию пакета? (есть подробный пример для TeXlive) .

  2. создать пакет для progA , проще, если в нем есть опция checkinstall : Как обмануть зависимости APT?

  3. Также построить progB из источников.

13
ответ дан 22 November 2019 в 23:56

Я бы порекомендовал использовать 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
1
ответ дан 22 November 2019 в 23:56

Другие вопросы по тегам:

Похожие вопросы: