Bagaimana cara memutakhirkan perangkat lunak yang diinstal dari sumber?

10

Saya menginstal NGinx dari sumber karena paket dari repositori ubuntu sudah cukup tua. Saya bertanya-tanya apa metode terbaik untuk meningkatkan jenis instalasi ini?

Alur kerja saya saat ini melibatkan.

  • Mengunduh sumber baru
  • Instal perangkat lunak dengan jalur yang sama.
  • Mulai ulang perangkat lunak.

Sesuatu memberi tahu saya ini bukan rute terbaik.

Saran?

Pengembang Pixel
sumber

Jawaban:

9

Anda benar berpikir ini bukan rute terbaik. Rute ini membutuhkan banyak langkah manual, dan sangat rawan kesalahan, dan tidak skala dengan baik.

Ketika bekerja dengan distribusi linux, Anda harus tetap menggunakan manajemen paket sebanyak mungkin.

Keuntungan menggunakan manajemen paket:

  • Dukungan ketergantungan
  • Instalasi / penghapusan mudah
  • Persediaan perangkat lunak
  • Dukungan upgrade / downgrade, termasuk penanganan file konfigurasi
  • Paket sumber pada dasarnya mendokumentasikan proses pembuatan Anda, dan mengotomatiskannya untuk Anda setelah ditulis.
  • Penandatanganan paket
  • dan lainnya.

Ketika Anda mulai bekerja dari sumber saja, Anda kehilangan semua fitur hebat ini, dan semuanya mulai menjadi berantakan dengan cepat.

Untuk menyelesaikan masalah spesifik Anda, Anda harus memeriksa repositori backports ubuntu , mungkin mereka memiliki versi terbaru untuk NGinx yang dapat Anda gunakan.

Jika mereka tidak memiliki versi yang sesuai, maka solusi terbaik adalah membuat sendiri paket ubuntu backport. Ini sebenarnya tidak terlalu sulit, dan itu kurang bekerja daripada mengkompilasinya dari sumber secara manual setiap kali. Backporting membutuhkan, pada dasarnya, mengambil paket sumber dari ubuntu, mengganti file tar.gz upsteam lama dengan yang terbaru yang Anda inginkan, dan membangun kembali paket.

Anda dapat menggunakan panduan ini untuk membantu Anda mendukung paket.

Tom Feiner
sumber
8

Saya merasa cukup nyaman untuk menginstal versi yang berbeda di lokasi yang terpisah dan hanya symlink ke versi yang ingin Anda gunakan, seperti:

lrwxr-xr-x  1 root  wheel     7B Jun  7 18:26 /usr/local/foo -> foo-1.0
drwxr-xr-x  2 root  wheel   512B Jun  7 18:26 /usr/local/foo-1.0
drwxr-xr-x  2 root  wheel   512B Jun  7 18:26 /usr/local/foo-1.1

Manfaatnya adalah:

  • meminimalkan waktu henti layanan selama peningkatan
  • rollback mudah
  • Anda masih dapat menggunakan jalur yang sama, misalnya /usr/local/foo/bin/bar

Tentu saja Anda masih harus menerapkan kembali perubahan konfigurasi yang telah Anda lakukan ke versi sebelumnya, tetapi untuk itu Anda dapat menggunakan beberapa sistem versi (RCS / SVN / GIT) atau alat manajemen konfigurasi seperti Bcfg2 .

Dan, tentu saja ini hanya cocok untuk beberapa host atau kurang.

ada
sumber
Inilah yang saya lakukan dalam beberapa kasus di mana paket-paket bangunan bukanlah jawaban yang cocok, kecuali saya biasanya menggunakan / memilih bukan / usr / lokal.
freiheit
2

Lain kali ... bagaimana mengompilasinya menjadi * .rpm atau * .deb?

elcuco
sumber
1

Jika Anda akan menginstal ini pada satu mesin, maka melakukannya dari sumber setiap kali merupakan masalah cara terbaik. Jika Anda akan menginstal ini pada beberapa mesin dan Anda ingin memastikan itu konsisten, mungkin perlu belajar cara membuat paket Debian. Anda mungkin bisa menggunakan kemasan di Ubuntu sebagai basis.

David Pashley
sumber
1

Tidak ada cara yang bagus. Alasan mengapa manajemen paket yang efektif dibuat adalah untuk menyelesaikan masalah ini. Memutakhirkan dan menghapus instalan hal-hal yang dikompilasi sumber sulit.

Saya setuju dengan Tom dan David.

Jika ini adalah kasus sekali saja, maka kompilasi ulang dari sumber mungkin merupakan taruhan terbaik Anda. Jika ada di array mesin, sudah pasti saatnya untuk pindah ke manajemen paket yang didukung.

Matt Simmons
sumber
0

Saya khawatir ini satu-satunya cara. jika Anda memiliki lebih banyak server untuk dipelihara - pertimbangkan untuk memiliki lingkungan pengujian terpisah tempat Anda menyusun dan mungkin mengemas hasil kompilasi Anda.

ini akan sedikit menstandarkan pengaturan Anda dan memudahkan penyebaran di banyak server. Anda juga tidak akan memerlukan gcc pada mesin produksi [yang banyak akan dianggap sebagai manfaat keamanan].

pQd
sumber