Saya menginstal sebuah program dengan mendapatkan kode sumbernya, dan kemudian menjalankan `sudo make install`; bagaimana membuat `apt-get` tahu tentang itu?

46

Saya menginstal program (menyebutnya, misalnya, progA) dengan membangunnya dari kode sumber, dan akhirnya memanggil sudo make installdan sudo ldconfig.

Namun, sepertinya apt-getbelum mendapatkan memo, karena ketika menginstal progB, yang tergantung pada progA, apt-getmerekomendasikan saya juga menginstal progA. Mengapa ini, dan apa yang bisa saya lakukan?

Braiam
sumber
Saya pikir Anda harus menginstal progBsecara manual juga ...
Parto
11
Tidak dapat diasumsikan bahwa versi 'khusus' yang Anda buat sama dengan paket, yaitu ketergantungan. Pintasan (tidak disarankan) adalah menginstal paket yang sebenarnya, dan kemudian menimpa biner dengan 'spesial' Anda. Karena Anda belum spesifik, saya tidak bisa memberikan saran lebih lanjut.
david6
6
Hanya saja, jangan lakukan ini. Selalu menjaga perangkat lunak yang dikelola oleh manajemen paket Anda terpisah dari perangkat lunak yang Anda kompilasi sendiri.
Reinier Post

Jawaban:

56

TL; DR checkinstall adalah teman Anda ;)

sudo apt-get install checkinstall

Setelah instalasi dengan sudo make installmanajer paket Anda sama sekali tidak tahu tentang instalasi ini. Tapi ia tahu semua tentang paket dengan nama yang sama di repositori Ubuntu atau dalam PPA.

Gunakan sudo checkinstallalih-alih sudo make installdan gunakan versi yang lebih tinggi sebagai versi di repositori untuk memastikan, bahwa manajer paket Anda menerima versi ini sebagai ketergantungan yang benar untuk ProgB.


Informasi lebih lanjut:

checkinstallbenar-benar bagus, karena mengikuti apa yang make installakan dilakukan perintah, untuk mengetahui bagaimana membangun sebuah paket.

Ini berarti bahwa jika Anda menginstal sebuah program menggunakan make install, tetapi kemudian ingin bertobat atas dosa-dosa Anda, yang harus Anda lakukan adalah sudo checkinstall -D make install, dan perintah itu akan:

  1. ikuti make installuntuk mencari tahu apa fungsinya

  2. copy-cat make install, kecuali dalam bentuk paket * .deb

  3. instal dari paket (persis seperti make installseharusnya, diberikan poin 1)) kecuali juga beri apt-gettahu tentang hal itu, dan dengan demikian menimpa semua file persis di mana make installakan menempatkan mereka selama Anda memilih YA untuk memasukkan file-file yang dimasukkan ke make installdalam direktori home dalam paket juga - beberapa opsi selama checkinstallproses akan membiarkan Anda memilih (jelas meskipun, ada pilihan sehingga Anda dapat menggunakannya berdasarkan kasus per kasus)

Bonus: Anda juga dapat menghapus paket (menyebutnya progAkembali) yang diinstal menggunakan make installodes yang tidak memiliki make uninstalldukungan dengan mengikuti checkinstallproses yang diuraikan sejauh ini, dan kemudian cukup melakukan:

dpkg -r progA
AB
sumber
18
Wow checkinstall- DUNIA perlu tahu tentang ini!
Saya menambahkan beberapa detail pada jawaban Anda, berdasarkan pada mencoba mengimplementasikannya kemarin, dan rekomendasi dari pertanyaan meta ini - silakan mengeditnya lebih lanjut!
Rincian mana yang Anda maksud?
AB
Oh, saya pikir mereka belum muncul, karena itu dalam edit ulasan - jika Anda mengklik tautan ke pertanyaan meta, Anda akan melihat apa itu (awalnya, saya telah menempatkan mereka di badan pertanyaan, tetapi rekomendasi adalah bahwa saya harus meletakkannya di badan jawaban yang diterima).
Direktori dokumentasi paket ./doc-pak tidak ada. Haruskah saya membuat set dokumen paket default?
n8chz
1

Saya akan merekomendasikan menggunakan uupdatedari devscriptsdan membangun paket seperti aslinya dibuat sebelumnya.

Instal paket yang diperlukan

$ sudo apt-get install build-essential devscripts

Unduh paket lama dari repositori resmi (akan digunakan MediaWikisebagai contoh) dan tar-ball baru dari hulu.

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

Jalankan uupdateuntuk membuat folder sumber baru dari tar-ball hulu dan yang lamadebian/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

Sekarang Anda harus memeriksa apakah Anda perlu membuat perubahan pada debian/controlfile dll. Jika sudah selesai, Anda dapat membangun paket deb dan menginstalnya

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