เรียกใช้สร้างส่วนขยาย postgis ให้ ERROR ไม่สามารถเปิดไฟล์ควบคุมส่วนขยายได้หรือไม่


51

ฉันได้ติดตั้ง PostgreSQL 9.x และ PostGIS 1.5 / 2.0 หลายครั้งและไม่เคยมีปัญหานี้

ฉันเพิ่งได้รับ CentOS 6.3 เซิร์ฟเวอร์ใหม่และทำงานและฉันมี Postgres 9.3 ทำงานตามที่คาดไว้ ฉันวิ่งแล้ว

yum install postgis2_93

และฉันสามารถดูไฟล์ใน

/usr/pgsql-9.3/share/contrib/

อย่างไรก็ตามเมื่อฉันวิ่ง

CREATE EXTENSION postgis;

ฉันได้รับ

ERROR:  could not open extension control file "/usr/pgsql-9.3/share/extension/postgis.control": No such file or directory

บทช่วยสอน ( # 1 , # 2 ) ฉันเคยใช้ไม่แสดงขั้นตอนใด ๆ ระหว่างการติดตั้ง PostGIS และสร้างส่วนขยาย

ฉันพลาดอะไรไป


สิ่งที่คุณพลาดคือ 'postgis.control' :) คำถามคือ 'ทำไม' หรือ 'ที่ไหน' ขั้นแรกดูว่าคุณมีสำเนาหรือไม่โดยเรียกใช้ 'find / usr -name postgis.control' ถ้าคุณทำไม่ได้แสดงว่าเป็นปัญหาเกี่ยวกับบรรจุภัณฑ์กับแพ็คเกจ postgis2_93 ใหม่ที่ต้องได้รับการแก้ไข
Paul Ramsey

โอ้คุณสามารถดูไฟล์ (รวมถึง 'postgis.control'?) แชร์ / contrib แต่จากข้อความแสดงข้อผิดพลาด pgsql กำลังค้นหาในส่วนแบ่ง / ส่วนขยาย อาจมีการเปลี่ยนแปลงตำแหน่งส่วนขยายเริ่มต้นจาก 9.2 เป็น 9.3 ที่ผู้ทำแพ็กเกจพลาด
Paul Ramsey

@ PaulRamsey - ฉันวิ่งfind /usr -name postgis.controlและมันไม่ได้อยู่ ฉันสามารถดูไฟล์บางไฟล์ในส่วนแบ่ง / contrib; อย่างไรก็ตามการควบคุม postgis ไม่ได้อยู่ในหมู่พวกเขา ... คุณแนะนำให้ฉันทำอะไร? รอการแก้ไขทำด้วยตัวเองมีอะไรอีกไหม
แพ้

@PaulRamsey - ฉันเพิ่งตรวจสอบว่าpostgis-2.1.soมีอยู่ในที่/libนี้หมายความว่าฉันสามารถสร้างไฟล์ postgis.control ของตัวเองได้หรือไม่
แพ้

หากคุณสามารถค้นหาไฟล์ postgis.sql คุณสามารถเรียกใช้ไฟล์นั้นในฐานข้อมูลของคุณ (และไฟล์ spatial_ref_sys.sql) เพื่อกระจายฐานข้อมูลของคุณด้วยตนเอง รายงานไฟล์ควบคุมที่ขาดหายไปยังเครื่องบรรจุซึ่งเป็นปัญหาใหญ่
พอลแรมซีย์

คำตอบ:


12

หากคุณสามารถค้นหาไฟล์ postgis.sql คุณสามารถเรียกใช้ไฟล์นั้นในฐานข้อมูลของคุณ (และไฟล์ spatial_ref_sys.sql) เพื่อกระจายฐานข้อมูลของคุณด้วยตนเอง รายงานไฟล์ควบคุมที่ขาดหายไปยังเครื่องบรรจุซึ่งเป็นปัญหาใหญ่


54

ฉันเพิ่งมีปัญหาเดียวกันบน Ubuntu Server 14.04 ผมติดตั้งส่วนขยายจากที่เก็บอย่างเป็นทางการโดยใช้อูบุนตูpostgisapt-get install postgis

จากนั้นfind /usr -name postgis.controlไม่ส่งคืนผลลัพธ์ใด ๆ

เหตุผลextension/postgis.controlไม่ได้รับการติดตั้งเนื่องจากไม่มีสคริปต์ postgis

$ aptitude search postgis
i   libpostgis-java                                  - Geographic objects support for PostgreSQL -- JDBC support 
i   postgis                                          - Geographic objects support for PostgreSQL                 
p   postgis:i386                                     - Geographic objects support for PostgreSQL                 
i   postgis-doc                                      - Geographic objects support for PostgreSQL -- documentation
i   postgresql-9.3-postgis-2.1                       - Geographic objects support for PostgreSQL 9.3             
p   postgresql-9.3-postgis-2.1:i386                  - Geographic objects support for PostgreSQL 9.3             
i   postgresql-9.3-postgis-2.1-scripts               - PostGIS for PostgreSQL 9.3 -- scripts -- dummy package    
i   postgresql-9.3-postgis-scripts                   - Geographic objects support for PostgreSQL 9.3 -- scripts 

ทางออกคือการติดตั้ง

บน Distros ที่มีลักษณะคล้ายเดเบียน:

apt-get install postgis*

ตัวจัดการแพกเกจความถนัดจะกำหนดเวอร์ชั่นแพ็กเกจที่ถูกต้องที่จะติดตั้งโดยอัตโนมัติ postgis-doc ก็จะถูกติดตั้งเช่นกัน

แก้ไข

เช่นเดียวกับบางคนที่สังเกตเห็นในความคิดเห็นpostgis*ไม่จำเป็นเพราะมันติดตั้งแพคเกจบางอย่างที่ไม่จำเป็นอย่างเคร่งครัดเพียงแค่ให้มันทำงาน

แพคเกจที่จำเป็นคือpostgisและpostgresql-9.x-postgis-scriptsแพ็คเกจเมตา พวกเขาเลือกเวอร์ชั่นจริงที่ถูกต้องสำหรับระบบของคุณ ดังนั้นคำสั่งในการติดตั้งแพ็คเกจที่จำเป็นคือ

 $ sudo apt-get install postgis postgresql-9.3-postgis-scripts

postgresql-9.3สำหรับ Ubuntu 16.04ทำงานpostgresql-9.5เพื่อให้คำสั่งนั้นกลายเป็น:

 $ sudo apt-get install postgis postgresql-9.5-postgis-scripts

คุณสามารถตรวจสอบความสำเร็จของการดำเนินการได้โดยใช้คำสั่งต่อไปนี้:

find /usr -name postgis.control

บนเซิร์ฟเวอร์ของฉันตอนนี้มันกลับมา:

/usr/share/postgresql/9.3/extension/postgis.control

ตอนนี้คุณสามารถเปิดใช้งานส่วนขยายในฐานข้อมูลใด ๆ บนเซิร์ฟเวอร์ postgres ของคุณ:

  • เชื่อมต่อ db ของคุณด้วย superuser (postgres โดยค่าเริ่มต้น)
  • วิ่ง CREATE EXTENSION postgis;

ตอนนี้สคีมาสาธารณะของคุณมีออบเจ็กต์และฟังก์ชัน postgis ทั้งหมด


... หวังว่าคุณจะมีทิศทางของ Windows ด้วย
CodyBugstein

...ไม่เป็นไร! แก้ไขได้ใน Windows โดยติดตั้ง PostGIS ใหม่อีกครั้งผ่าน StackBuilder
CodyBugstein

4
ขอบคุณนี้แก้ไขปัญหา Ubuntu ของฉัน! "postgis *" รับสิ่งที่คุณไม่ต้องการ ฉันคิดว่า "apt-get install postgis postgresql-9.3-postgis-2.1" ก็เพียงพอแล้ว
เนลสัน

คุณอาจพูดถูก ในกรณีของฉันการติดตั้งแบบเต็มจะดีกว่า แต่ไม่ใช่กฎ
Rémi B.

กฎ "apt-get install postgis *" ขอบคุณ!
nemesisdesign

18

ใน Ubuntu 14.04 คุณต้องติดตั้งpostgresql-9.3-postgis-scriptsแพ็คเกจด้วย หลังจากฉันวิ่ง

sudo apt-get install postgis postgresql-9.3-postgis-scripts

ฉันสามารถวิ่งได้สำเร็จ

สร้างส่วนต่อขยาย postgis;

ในฐานข้อมูลของฉันเพื่อเริ่มต้น PostGIS



2

แหล่งอื่นที่ทำให้เกิดปัญหาอาจเป็นชุด PostGIS ที่ขาดหายไปซึ่งสามารถกำหนดได้ในเมนูติดตั้งหรือในกรณีของคุณในภายหลัง ดังนั้น, หน้าต่างเปิดได้เริ่มต้นหัวกับ PostgreSQL เริ่มต้นการประยุกต์ใช้กอง Builder จากนั้นเลือก PostgreSQL โดยโหลดแอปพลิเคชันที่เป็นไปได้ สำหรับ PostGIS กำคุณเพียงแค่ต้องติดตั้งส่วนขยายที่เหมาะสมกับระบบปฏิบัติการของคุณ (32 หรือ 64 บิต) ก็ตรงไปยังเชิงพื้นที่ส่วนขยาย

หลังจากทั้งหมดที่นี่ขั้นตอนที่แนะนำ:

  1. เริ่มต้น Application Stack Builder
  2. ตรงไปยังส่วนขยายเชิงพื้นที่
  3. ติดตั้งชุดข้อมูล PostGIS

ตอนนี้คุณสามารถเพิ่มส่วนขยายด้วยCREATE EXTENSION postgis;ใน SQL Query ของคุณ


1

ฉันพบปัญหาเดียวกันฉันคิดว่าปัญหาคือแพคเกจ postgis2_93 ไม่ได้ติดตั้งในตำแหน่งที่คาดไว้เนื่องจาก postgresql คาดว่าจะเกิดขึ้น คุณสามารถลองใช้ repo อื่นซึ่งอาจทำให้คุณถูกที่ หรือคุณสามารถค้นหาเพื่อเพิ่มส่วนขยายด้วยตนเองโดยระบุสถานที่ ในกรณีของฉันไฟล์อยู่ใน /usr/pgsql-9.4/


1

ฉันมีฝันร้ายที่เลวร้ายที่สุดขณะติดตั้ง Postgis 2.X ใน SLES 12 SP1 ซึ่งไม่ได้มีแพคเกจที่รองรับใน repo zypper

นี่คือวิธีแก้ไขบนอินสแตนซ์ของเซิร์ฟเวอร์ Postgres ที่รัน 9.4.X

แพ็คเกจ Prerequsite ที่ฉันติดตั้งไว้ก่อนหน้า PostGis ตามข้อผิดพลาด

  1. Proj 4 Download source cold, Build -> ทำการติดตั้ง
  2. ติดตั้ง Gdal andjibson โดยเพิ่ม zypper repo zypper addrepo http://download.opensuse.org/repositories/Application:Geo/SLE_12_SP1_Backports/Application:Geo.repo
  3. zypper ติดตั้ง gdal gdal-devel libjson-c-devel libjson

การติดตั้ง Postgis

  • ดาวน์โหลดซอร์สโค้ด postgis ( http://download.osgeo.org/postgis/source/postgis-2.3.0rc1.tar.gz )

  • ไปที่โพสต์โฟลเดอร์ gis ./configure - ด้วย -pgconfig = / usr / lib / postgresql94 / bin / pg_config - ด้วย -gososconfig = / usr / local / bin / geos-config ทำการติดตั้ง

ตอนนี้ถ้าคุณได้รับ postgress และสร้าง postgis ส่วนขยาย; จะทำงาน

สิ่งสำคัญ ในขณะที่กำหนดค่าคุณควรระบุเส้นทาง pg-config และเส้นทาง geosconfig และคุณไม่ควรรวม "ไม่มี Raster" เนื่องจาก Raster มีบทบาทหลักในการสร้างส่วนขยาย postgis


1

สำหรับ Ubuntu 16.04 ให้รันคำสั่งนี้:

sudo apt-get install postgis postgresql-9.6-postgis-2.3-scripts

โปรดทราบว่าคุณควรระบุหมายเลขรุ่นของคุณสำหรับทั้ง postgresql (9.6 ในกรณีของฉัน) และ Postgis (2.3 ในกรณีของฉัน)


0

หากคุณใช้การชงให้ถอนการติดตั้ง PostGIS และติดตั้งใหม่ สิ่งนี้จะสร้างไฟล์นามสกุล


สิ่งนี้ไม่ได้ผลสำหรับฉันแม้ว่าฉันจะเห็นพวกเขาในbrew ls --verbose postgis
dps

0

ในการกระจายบางส่วนขยายได้รับการบรรจุในแพ็คเกจ postgresql-contrib สิ่งนี้ถือเป็นจริงใน RedHat / CenOS ที่ส่วนขยายอยู่ใน postgresql-contrib โดยที่ xx เป็น magor และหมายเลขรีลีสเล็กน้อยโดยไม่หยุดเต็ม (postgresql95-contrib สำหรับ postgres 9.5)


0

สำหรับฉันใช้ Fedora 25 และ pg 9.5 มันทำงานได้เมื่อฉันทำการเปลี่ยนแปลงต่อไปนี้:

  • ติดตั้งแพ็คเกจ yum postgis

    $ yum ติดตั้ง postgis2_95

  • ดาวน์โหลดแพ็คเกจ postgis สคริปต์. deb

  • แยกและคัดลอกไดเรกทอรี 'contrib' และ 'ส่วนขยาย' ใน usr / share / postgresql / 9.5 ที่แยกไปยังพา ธ เดียวกันใน pgsql ของคุณ (อาจเปลี่ยนสิทธิ์เป็น)

  • รีสตาร์ทเซิร์ฟเวอร์


0

ในกรณีของฉัน (Linux Mint 18.1 Serena) ฉันต้องลบposgresql-9.5และpostgisติดตั้งใหม่จากพื้นที่เก็บข้อมูลเริ่มต้น

sudo apt remove postgis*
sudo apt remove postgresql*

และติดตั้งเวอร์ชั่น 9.6 จากที่เก็บ PosgreSQL :

sudo apt install postgresql-9.6 postgresql-9.6-postgis-2.3 postgresql-9.6-postgis-2.3-scripts postgresql-contrib-9.6

ฉันไม่แน่ใจรุ่นมีส่วนเกี่ยวข้องกับpostgis.controlไฟล์ที่หายไป แต่ฉันต้องการรุ่น 9.6 อยู่ดี

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.