Ich habe ein Programm installiert, indem ich den Quellcode abgerufen und dann "sudo make install" ausgeführt habe. Wie kann man "Apt-Get" darüber informieren?

46

Ich habe das Programm installiert (zum Beispiel aufgerufen progA), indem ich es aus dem Quellcode erstellt und dann sudo make installund aufgerufen habe sudo ldconfig.

Allerdings scheint apt-getes nicht das Memo bekommen zu haben, denn bei der Installation progB, was davon abhängt progA, apt-getempfehle ich auch zu installieren progA. Warum ist das so und was könnte ich tun?

Braiam
quelle
Ich denke, Sie müssen auch progBmanuell installieren ...
Parto
11
Es kann nicht davon ausgegangen werden, dass die von Ihnen erstellte "benutzerdefinierte" Version mit dem Paket identisch ist, das ist eine Abhängigkeit. Eine Abkürzung (nicht empfohlen) wäre, das echte Paket zu installieren und dann die Binärdatei mit Ihrem 'Special' zu überschreiben. Da Sie nicht konkret waren, kann ich Sie nicht weiter beraten.
David6
6
Tu das einfach nicht. Halten Sie die von Ihrer Paketverwaltung verwaltete Software immer streng getrennt von der von Ihnen selbst kompilierten Software.
Reinier Post

Antworten:

56

TL; DR checkinstall ist dein Freund ;)

sudo apt-get install checkinstall

Nach einer Installation mit sudo make installIhrem Paketmanager weiß absolut nichts über diese Installation. Aber es weiß alles über ein Paket mit dem gleichen Namen in den Ubuntu-Repositories oder in einem PPA.

Verwenden Sie sudo checkinstallanstelle von sudo make installund eine höhere Version als die Version im Repository, um sicherzustellen, dass Ihr Paketmanager diese Version als korrekte Abhängigkeit für akzeptiert ProgB.


Weitere Informationen:

checkinstallist wirklich raffiniert, denn es folgt, was der make installBefehl tun würde, um herauszufinden, wie ein Paket erstellt wird.

Dies bedeutet, dass Sie, wenn Sie ein Programm mithilfe von installieren make install, aber dann Ihre Sünden bereuen möchten, nur noch Folgendes tun sudo checkinstall -D make installmüssen:

  1. Folgen Sie, make installum herauszufinden, was es tut

  2. copy-cat make install, außer in * .deb-Paketform

  3. Installieren Sie vom Paket aus (genau wie make installunter Punkt 1 angegeben), lassen Sie apt-getes sich aber auch darüber in Kenntnis setzen, und überschreiben Sie so alle Dateien genau dort, wo make installsie abgelegt wurden, solange Sie JA wählen, um die von make installin das Ausgangsverzeichnis abgelegten Dateien einzuschließen auch im Paket - einige Optionen während des checkinstallVorgangs ermöglichen Ihnen die Auswahl (natürlich ist die Auswahl jedoch vorhanden, sodass Sie sie von Fall zu Fall ausüben können)

Bonus: Sie können auch ein Paket entfernen (erneut aufrufen progA), das mit make installdiesen Oden ohne make uninstallSupport installiert wurde , indem Sie den bisher beschriebenen checkinstallVorgang ausführen und dann einfach Folgendes ausführen:

dpkg -r progA
AB
quelle
18
Wow checkinstall- DIE WELT muss das wissen!
Ich habe Ihrer Antwort einige Details hinzugefügt, basierend auf dem Versuch, sie gestern zu implementieren, und den Empfehlungen aus dieser Meta-Frage - Sie können sie gerne weiter bearbeiten!
Welche Details meinst du?
AB
Oh, ich denke, sie sind noch nicht erschienen, weil es sich um eine bearbeitete Überprüfung handelt. Wenn Sie auf den Link zur Meta-Frage klicken, werden Sie sehen, was sie sind (ursprünglich hatte ich sie in den Fragenkörper eingefügt, aber die Empfehlung war, dass ich sie in den akzeptierten Antworttext aufnehmen sollte).
Das Paketdokumentationsverzeichnis ./doc-pak existiert nicht. Soll ich einen Standardsatz von Paketdokumenten erstellen?
n8chz
13

Drei Möglichkeiten:

  1. Erstellen Sie ein falsches Paket für progA: Wie fälsche ich eine installierte Paketversion? (Es gibt ein umfangreiches Beispiel für TeXlive) .

  2. Erstellen Sie ein Paket für progA, einfacher, wenn es eine checkinstallOption hat: Wie man passende Abhängigkeiten austrickst?

  3. Bauen Sie auch progBaus Quellen.

Rmano
quelle
1
4. Deinstallieren progASie die kompilierte apt-getVersion und installieren Sie die Version. 5. Installieren Sie das apt-getPaket über die kompilierte Version und hoffen Sie auf das Beste.
Jwodder
1

Ich würde empfehlen, uupdatefrom zu verwenden devscriptsund das Paket so zu erstellen, wie das Original zuvor erstellt wurde.

Installieren Sie die erforderlichen Pakete

$ sudo apt-get install build-essential devscripts

Laden Sie das alte Paket aus dem offiziellen Repository herunter (wird MediaWikials Beispiel verwendet) und den neuen Tar-Ball aus dem Upstream.

$ mkdir ~/Downloads/mediawiki
$ cd ~/Downloads/mediawiki
$ apt-get source mediawiki
$ wget https://releases.wikimedia.org/mediawiki/1.26/mediawiki-1.26.0.tar.gz

Führen Sie uupdateden Befehl aus, um einen neuen Quellordner aus dem vorgelagerten und dem alten zu erstellendebian/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

Jetzt sollten Sie prüfen, ob Sie Änderungen an debian/controletc-Dateien vornehmen müssen . Wenn Sie fertig sind, können Sie das Deb-Paket erstellen und installieren

$ dpkg-buildpackage -us -uc
$ cd ..
$ sudo dpkg -i *.deb
Germar
quelle