PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Mengembangkan PostgreSQL untuk Windows, Bagian 2

Dalam posting blog sebelumnya, kami membahas berbagai varian build Windows yang didukung PostgreSQL. Dalam posting ini, kami akan membahas bagaimana, sebagai pengembang berbasis Unix, Anda dapat memeriksa apakah tambalan Anda dapat berfungsi di Windows. (Untuk mempermudah, saya akan mengatakan “Unix” yang berarti Linux, BSD, macOS, dan sejenisnya.)

Pertama, ada beberapa cara untuk memeriksa patch Anda tanpa harus memiliki Windows sama sekali.

Jika patch Anda menyentuh sistem build, misalnya dengan menambahkan file baru, atau lebih mungkin dengan menambahkan kondisional, opsi build baru, atau logika ad-hoc tambahan, itu mungkin merusak skrip build MSVC, yang mengurai makefile Unix, seperti yang telah kita bahas terakhir kali. Tetapi Anda sebenarnya dapat menjalankan skrip tersebut di Unix juga. Tidak ada (hampir) khusus untuk Windows di dalamnya, karena yang mereka lakukan hanyalah mengurai satu set file dan menghasilkan yang lain. Anda cukup menjalankan

perl src/tools/msvc/mkvcbuild.pl

dan lihat apa yang terjadi. Ini berfungsi pada komit 73c8596. (Mungkin simpan pekerjaan Anda sebelumnya, karena ini mungkin menimpa beberapa file yang dihasilkan untuk digunakan oleh konfigurasi non-Windows lokal Anda). Ini akan menghasilkan file proyek untuk Visual Studio yang tidak dapat Anda lakukan banyak, tetapi Anda dapat memeriksa apakah skrip berjalan sama sekali, Anda dapat membandingkan output sebelum dan sesudah, atau jika Anda telah membuat "blind edits" ke salah satu dari file di bawah src/tools/msvc/ Anda dapat memverifikasinya sampai batas tertentu.

Cara lain adalah dengan menggunakan opsi build yang biasanya terkait dengan Windows. Yang mana dari ini yang berguna tergantung pada apa yang diubah oleh tambalan Anda. Misalnya, Windows dibuat dengan HAVE_UNIX_SOCKETS undefined, jadi mengujinya secara manual mungkin bermanfaat jika Anda membuat perubahan dalam kode jaringan. (Tapi ini akan hilang, karena Windows sebenarnya mendukung soket domain Unix sekarang.) Demikian pula, HAVE_WORKING_LINK tidak terdefinisi di Windows, meskipun dampaknya kecil (dan itu juga akan hilang; terkadang konsekuensi dari menulis posting blog seperti ini adalah menemukan bahwa masalah yang ingin Anda gambarkan seharusnya tidak ada di sana, dan Anda pergi memperbaikinya). Anda dapat mengubah kedua opsi ini dengan mengedit src/include/pg_config_manual.h . Opsi penting lainnya adalah EXEC_BACKEND , yang menggantikan fork() . gaya Unix panggil dengan fork() ditambah exec() implementasi yang dapat dipetakan ke CreateProcess() pada Windows. Ini sebenarnya sangat jarang rusak, tetapi jika ya, Anda dapat men-debug dan memperbaikinya sepenuhnya pada sistem Unix. Untuk mengaktifkan EXEC_BACKEND , Anda dapat mengedit src/Makefile.global dan tambahkan -DEXEC_BACKEND ke CPPFLAGS , atau mungkin menambahkan definisi ke src/include/pg_config_manual.h . (Tidak yakin mengapa ini berbeda dari yang lain; mungkin ada hal lain yang perlu diperbaiki kapan-kapan. [update:juga diperbaiki])

Ketika opsi ini habis, mungkin inilah saatnya untuk menjalankan sistem Windows yang sebenarnya. Saya ingin membahas dua opsi yang mudah tersedia untuk pengembang kasual. Pertama, Anda dapat mengunduh gambar demo Windows dari Microsoft dan mengimpornya ke VirtualBox atau yang serupa. Tautan saat ini yang dapat saya temukan adalah:

  • https://developer.microsoft.com/en-us/windows/downloads/virtual-machines/
  • https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/

Yang kedua dimaksudkan untuk pengujian browser, jadi mungkin yang pertama lebih baik sekarang, tetapi rute pengujian browser telah populer selama beberapa waktu. Ini adalah salinan evaluasi gratis, tetapi silakan baca sendiri lisensinya.

Kedua, Anda dapat meluncurkan instans cloud di penyedia komputasi awan. Saya tidak akan menyebutkan nama mereka, tetapi Anda tahu siapa mereka.

Saat Anda menjalankan sistem operasi Windows, saya sarankan untuk menginstal MSYS2. (Tautan unduhan pertama di atas dari Microsoft juga telah menginstal Visual Studio, jika Anda mau.) Gunakan browser (mungkin Internet Explorer atau apa pun namanya sekarang) untuk pergi ke msys2.org, jalankan penginstal, dan dalam beberapa menit Anda akan memiliki lingkungan MSYS2/MinGW penuh siap. Ikuti petunjuk di situs web msys2.org untuk memperbarui pengelola paket. Kemudian, buka shell MinGW (bukan MSYS2) dari menu Start dan jalankan yang berikut untuk mendapatkan paket yang diperlukan untuk pengembangan PostgreSQL:

pacman -S git

Sekarang Anda dapat git mengkloning repositori. Sementara itu berjalan …

pacman -S ${MINGW_PACKAGE_PREFIX}-gcc ${MINGW_PACKAGE_PREFIX}-gettext ${MINGW_PACKAGE_PREFIX}-icu ${MINGW_PACKAGE_PREFIX}-libflexxml2 ${MINGW_PACKAGE_PACKAGE_PREFIX}-libxslt 

MINGW_PACKAGE_PREFIX adalah variabel lingkungan yang disetel untuk Anda, jadi ketikkan perintah seperti itu. (Ini akan berbeda untuk MinGW 32-bit dan 64-bit.) Paket tanpa awalan adalah paket MSYS2 (yaitu, Cygwin). Lihat bagian 1 lagi jika ini membingungkan. Pada titik ini, Anda akan memiliki lingkungan build MinGW lengkap untuk PostgreSQL. Anda dapat menjalankan configure, make, make check, dan sebagainya. Paket tambahan mungkin diperlukan untuk beberapa opsi build, tetapi tidak semua opsi benar-benar berfungsi; misalnya tidak ada Readline (gunakan Cygwin untuk itu).

Di bagian selanjutnya dari seri ini, saya akan melihat opsi build/continuous integration otomatis untuk Windows yang dapat digunakan untuk memverifikasi patch.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ubah hex dalam representasi teks ke angka desimal

  2. Migrasi Rails:Bigint di PostgreSQL tampaknya gagal?

  3. kesalahan menginstal psycopg2, perpustakaan tidak ditemukan untuk -lssl

  4. Python psycopg2 tidak dimasukkan ke dalam tabel postgresql

  5. Seberapa berbeda PostgreSQL dengan MySQL?