Я установил программу, получив ее исходный код, а затем запустив «sudo make install»; как сделать «apt-get» знать об этом?

44

Я установил программу (назовите ее, например, progA ), построив ее из исходного кода, а затем, наконец, вызовите sudo make install и sudo ldconfig .

Однако, похоже, что apt-get не получил заметку, потому что при установке progB , которая зависит от progA , apt-get рекомендует также установить progA . Почему это и что я могу сделать?

    
задан Braiam 03.12.2015 в 07:41
источник

3 ответа

53

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 позволят вам выбрать (очевидно, что выбор там, поэтому вы можете использовать его на индивидуальной основе)

Бонус: вы также можете удалить пакет (снова наберите progA ), установленный с помощью make install , что odes не поддерживают make uninstall , следуя процессу checkinstall , описанному до сих пор, а затем просто выполните:

dpkg -r progA
    
ответ дан A.B. 03.12.2015 в 08:30
источник
13

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

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

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

  3. Создайте также progB из источников.

ответ дан Rmano 03.12.2015 в 07:51
1

Я бы рекомендовал использовать uupdate из devscripts и создать пакет, как ранее был создан оригинал.

Установите требуемые пакеты

$ sudo apt-get install build-essential devscripts

Загрузите старый пакет из официального репозитория (используйте пример MediaWiki в качестве примера) и новый tar-мяч с восходящего потока.

$ 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-шара и старого 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 etc. Если вы закончите, вы можете создать пакет deb и установить его

$ dpkg-buildpackage -us -uc
$ cd ..
$ sudo dpkg -i *.deb
    
ответ дан Germar 04.12.2015 в 02:54