วิธีการล้างและติดตั้ง postgresql ใหม่บน Ubuntu อย่างละเอียด [ปิด]


221

ยังไงก็เถอะฉันสามารถจัดการติดตั้ง postgresql บน Ubuntu karmic ได้อย่างสมบูรณ์ ฉันต้องการเริ่มต้นใหม่ตั้งแต่ต้น แต่เมื่อฉัน "ล้าง" แพ็กเกจด้วย apt-get มันยังคงทิ้งร่องรอยไว้จนทำให้การตั้งค่าการติดตั้งไม่ทำงานอย่างถูกต้อง

หลังจากทำเสร็จแล้ว:

apt-get purge postgresql
apt-get install postgresql

มันบอกว่า

Setting up postgresql-8.4 (8.4.3-0ubuntu9.10.1) ...
Configuring already existing cluster (configuration: /etc/postgresql/8.4/main, data: /var/lib/postgresql/8.4/main, owner: 108:112)
Error: move_conffile: required configuration file     /var/lib/postgresql/8.4/main/postgresql.conf does not exist
Error: could not create default cluster. Please create it manually with

  pg_createcluster 8.4 main --start

or a similar command (see 'man pg_createcluster').
update-alternatives: using /usr/share/postgresql/8.4/man/man1/postmaster.1.gz to provide /usr/share/man/man1/postmaster.1.gz (postmaster.1.gz) in auto mode.

Setting up postgresql (8.4.3-0ubuntu9.10.1) ...

ฉันมี "/ etc / postgresql" โดยไม่มีสิ่งใดอยู่ในนั้นและ "/ etc / postgresql-common /" มีไดเรกทอรี 'pg_upgradecluser.d' และไฟล์ root.crt และ user_clusters

กระบวนการ / etc / passwd มีผู้ใช้ postgres; สคริปต์ล้างไม่ปรากฏขึ้นเพื่อสัมผัส มีอาการหลายอย่างที่ฉันทำงานผ่านเพื่อเปิดเผยต่อไปเท่านั้น

ขวาวินาทีนี้เมื่อฉันเรียกใช้คำสั่ง "pg_createcluster ... " มันบ่นว่า '/var/lib/postgresql/8.4/main/postgresql.conf ไม่มีอยู่' ดังนั้นฉันจะไปหาหนึ่งในนั้น แต่ฉัน ' ฉันแน่ใจว่าจะไม่สิ้นสุด

มีซับในตัวเดียว (หรือสองอัน) ที่จะเผาไหม้อย่างสมบูรณ์และให้ฉันเริ่มต้นใหม่หรือไม่?


2
ลองใช้ตัวติดตั้งเพียงคลิกเดียวมันง่ายกว่าไดเรกทอรีของมันจะไม่กระจายอยู่ใน / etc / และ / var พวกเขาทั้งหมดจะถูกเก็บไว้ในไดเรกทอรีเดียว
Michael Buen

2
นี่ไม่ใช่คำถามการคำนวณทั่วไปและ postgresql เป็นหัวข้อสแต็คโอเวอร์โฟลว์มาตรฐาน ควรเปิดคำถามอีกครั้ง
แอนดรู

คำตอบ:


446

ตัวเลือก A

หากการติดตั้งไม่ได้รับความเสียหายแล้วคุณสามารถวางเซิร์ฟเวอร์ PostgreSQL ที่ไม่พึงประสงค์ ( "กลุ่ม") pg_dropclusterโดยใช้ ใช้การตั้งค่าเพื่อล้างข้อมูลทั้งหมดและติดตั้งใหม่หากคุณต้องการเริ่มต้นใหม่ด้วยอินสแตนซ์ PostgreSQL ใหม่

$ pg_lsclusters
Ver Cluster Port Status Owner    Data directory              Log file
11  main    5432 online postgres /var/lib/postgresql/11/main /var/log/postgresql/postgresql-11-main.log
$ sudo systemctl stop postgresql@11-main
$ sudo pg_dropcluster --stop 11 main
$ sudo pg_createcluster --start 11 main

ตัวเลือก B

หากคุณจำเป็นต้องทำการล้างแบบสมบูรณ์และติดตั้งใหม่ให้ตรวจสอบก่อนว่า PostgreSQL ไม่ทำงาน ps -C postgresไม่ควรแสดงผลลัพธ์

ตอนนี้ทำงาน:

apt-get --purge remove postgresql\*

เพื่อลบ PostgreSQL ทุกอย่างออกจากระบบของคุณ เพียงแค่กำจัดpostgresแพคเกจไม่เพียงพอเนื่องจากเป็นเพียงเมตาแพ็คเกจที่ว่างเปล่า

เมื่อลบแพ็คเกจ PostgreSQL ทั้งหมดแล้วให้รัน:

rm -r /etc/postgresql/
rm -r /etc/postgresql-common/
rm -r /var/lib/postgresql/
userdel -r postgres
groupdel postgres

ตอนนี้คุณควรจะสามารถ:

apt-get install postgresql

หรือสำหรับการติดตั้งแบบสมบูรณ์:

apt-get install postgresql-8.4 postgresql-contrib-8.4 postgresql-doc-8.4

19
ผมเคยนําคำตอบที่จะเอาคำแนะนำกับมือแก้ไข/etc/passwdและ/etc/groupในความโปรดปรานของความปลอดภัยมากขึ้นและuserdel groupdelนอกจากนี้แทนที่จะใช้dselectสำหรับแพ็กเกจที่เลือกเองให้ใช้ไวด์การ์ด apt เพื่อจับคู่แพ็กเกจเหล่านั้นอย่างน่าเชื่อถือ
Craig Ringer

11
+1 สำหรับpg_dropcluster!! (ตัวอย่างการใช้งาน: pg_dropcluster --stop 9.1 main)
Anuj Gupta

5
เพิ่ม libpq5 และ libpq-dev ไปยังรายการล้างข้อมูลนั้น lib นั้นทำให้ฉันมีปัญหามากมายจนกระทั่งฉันติดตั้งใหม่ในเวอร์ชันที่ถูกต้อง
Rogerio Chaves

ทำงานบน Debian 8 ด้วย PostgreSQL 9.4 เช่นกัน

2
rm -r /var/log/postgresqlฉันยังจะเพิ่ม
เกรกอรี่ Arenius

45

ฉันมีสถานการณ์ที่คล้ายกัน: ฉันต้องกำจัด postgresql 9.1 ในเสียงฮิปปี้เดเบียน (ก่อนหน้านี้ฉันย้ายจาก 8.4 และฉันได้รับข้อผิดพลาด)

ฉันทำอะไรลงไป:

ก่อนอื่นฉันลบ config และฐานข้อมูล

$ sudo pg_dropcluster --stop 9.1 main

จากนั้นลบ postgresql

$ sudo apt-get remove --purge postgresql postgresql-9.1 

แล้วติดตั้งใหม่

$ sudo apt-get install postgresql postgresql-9.1

ในกรณีของฉันฉันสังเกตเห็น /etc/postgresql/9.1 ว่างเปล่าและservice postgresql startไม่พบอะไรเลย

ดังนั้นหลังจาก googling เพิ่มเติมฉันได้คำสั่งนี้:

$ sudo pg_createcluster 9.1 main

เมื่อฉันเริ่มเซิร์ฟเวอร์ แต่ตอนนี้ฉันได้รับข้อผิดพลาดเกี่ยวกับบันทึก หลังจากการค้นหาเพิ่มเติมฉันลงเอยด้วยการเปลี่ยนสิทธิ์ในไดเรกทอรี / var / log / postgresql

$ sudo chown root.postgres /var/log/postgresql
$ sudo chmod g+wx /var/log/postgresql

หวังว่าจะช่วยได้


14

ขั้นตอนที่ใช้ในUbuntu 8.04.2การลบpostgres 8.3

  1. แสดงรายการแพ็คเกจทั้งหมดที่เกี่ยวข้องกับ Postgres

    dpkg -l | grep postgres
    
    ii  postgresql                            8.3.17-0ubuntu0.8.04.1           object-relational SQL database (latest versi
    ii  postgresql-8.3                        8.3.9-0ubuntu8.04                object-relational SQL database, version 8.3
    ii  postgresql-client                     8.3.9-0ubuntu8.04                front-end programs for PostgreSQL (latest ve
    ii  postgresql-client-8.3                 8.3.9-0ubuntu8.04                front-end programs for PostgreSQL 8.3
    ii  postgresql-client-common              87ubuntu2                        manager for multiple PostgreSQL client versi
    ii  postgresql-common                     87ubuntu2                        PostgreSQL database-cluster manager
    ii  postgresql-contrib                    8.3.9-0ubuntu8.04                additional facilities for PostgreSQL (latest
    ii  postgresql-contrib-8.3                8.3.9-0ubuntu8.04                additional facilities for PostgreSQL
    
  2. ลบทั้งหมดที่ระบุไว้ข้างต้น

    sudo apt-get --purge remove postgresql postgresql-8.3  postgresql-client  postgresql-client-8.3 postgresql-client-common postgresql-common  postgresql-contrib postgresql-contrib-8.3
  3. ลบโฟลเดอร์ต่อไปนี้

    sudo rm -rf /var/lib/postgresql/
    sudo rm -rf /var/log/postgresql/
    sudo rm -rf /etc/postgresql/
    

การลบแพ็คเกจที่เกี่ยวข้องกับ Postgres ทั้งหมดทำงานได้สำหรับฉัน ฉันมีแพ็คเกจ 8.4 และ 9.1 ผสมกัน เมื่อรวมกับการลบทุกอย่างทำให้ฉันติดตั้ง 9.1 ได้ในที่สุด
Nick

1
ง่ายขึ้นมากด้วยสัญลักษณ์แทน:apt-get --purge remove postgresql\*
Craig Ringer

12

ฉันรู้คำตอบแล้ว แต่ dselect ใช้งานไม่ได้สำหรับฉัน นี่คือสิ่งที่ทำงานเพื่อค้นหาแพคเกจที่จะลบ:

# search postgr  | grep ^i
i   postgresql                      - object-relational SQL database (supported 
i A postgresql-8.4                  - object-relational SQL database, version 8.
i A postgresql-client-8.4           - front-end programs for PostgreSQL 8.4     
i A postgresql-client-common        - manager for multiple PostgreSQL client ver
i A postgresql-common               - PostgreSQL database-cluster manager       

# aptitude purge postgresql-8.4 postgresql-client-8.4 postgresql-client-common postgresql-common postgresql

rm -r /etc/postgresql/
rm -r /etc/postgresql-common/
rm -r /var/lib/postgresql/

ในที่สุดการแก้ไข / etc / passwd และ / etc / group


คำแนะนำเหล่านี้ใช้ได้กับ debian squeeze / sid
Evgeny

วิธีใช้สัญลักษณ์แทนได้ง่ายกว่า ดูคำตอบแรกที่อัปเดต
Craig Ringer


9

ทำตามขั้นตอนที่ฉันทำตามเพื่อถอนการติดตั้งและติดตั้งใหม่ ซึ่งใช้ได้สำหรับฉัน

ก่อนอื่นให้ลบ postgres ที่ติดตั้งไว้: -

sudo apt-get purge postgr *

sudo apt-get autoremove

จากนั้นติดตั้ง 'synaptic':

sudo apt-get install synaptic

sudo apt-get update

จากนั้นติดตั้ง postgres

sudo apt-get install postgresql postgresql-contrib


2

ฉันเพิ่งพบปัญหาเดียวกันสำหรับ Ubuntu 13.04 คำสั่งเหล่านี้ลบ Postgres 9.1:

sudo apt-get purge postgresql
sudo apt-get autoremove postgresql

มันเกิดขึ้นกับฉันว่าบางทีอาจจำเป็นต้องใช้คำสั่งที่สอง แต่จากนั้นฉันก็สามารถติดตั้ง Postgres 9.2 (sudo apt-get install postgresql-9.2)


0

ฉันทำตามคำตอบเมื่อแก้ไข / etc / กลุ่มฉันลบบรรทัดนี้ด้วย:

ssl-cert:x:112:postgres

จากนั้นเมื่อพยายามติดตั้ง postgresql ฉันพบข้อผิดพลาดนี้

Preconfiguring packages ...
dpkg: unrecoverable fatal error, aborting:
 syntax error: unknown group 'ssl-cert' in statoverride file
E: Sub-process /usr/bin/dpkg returned an error code (2)

การใส่บรรทัด "ssl-cert: x: 112: postgres" กลับมาใน / etc / group ดูเหมือนจะแก้ไขได้ (ดังนั้นฉันจึงสามารถติดตั้ง postgresql ได้)


2
ในการลบบรรทัดคุณลบกลุ่ม "ssl-cert" ทั้งหมดซึ่งสามารถสร้างความเสียหายด้วย ssl หากต้องการลบ postgres ออกจากกลุ่ม ssl-cert ให้ลบ "postgres" ออกจากหลังเครื่องหมายโคลอน
John Mee

2
คำแนะนำดั้งเดิมถูกเข้าใจผิดอย่างมากในการแนะนำให้คุณแก้ไข/etc/passwdด้วยตนเอง ไม่เคยทำอย่างนั้น ใช้userdelและgroupdelคำสั่งและคุณจะไม่ต้องมีปัญหาในอนาคตว่า
Craig Ringer

-2

ฉันประสบปัญหาเดียวกันใน Ubuntu 16.04 ของฉัน

แต่ฉันแก้ไขปัญหานั้นและมันง่ายมากเพียงแค่ทำตามขั้นตอนเหล่านี้และคุณจะสามารถติดตั้ง postgresql 10 ในระบบของคุณ:

เพิ่มสิ่งนี้ไปยังแหล่งรายการของคุณ:

sudo vim /etc/apt/sources.list

deb http://ftp.de.debian.org/debian/ wheezy main non-free contrib

deb-src http://ftp.de.debian.org/debian/ wheezy main non-free contrib

หลังจากนั้นเพิ่มลิงค์เหล่านี้ไปยังไฟล์ pgdg.list ของคุณหากยังไม่มีคุณต้องสร้าง && เพิ่มลิงค์ && บันทึก

sudo vim /etc/apt/sources.list.d/pgdg.list

deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main

deb http://apt.postgresql.org/pub/repos/apt/ precise-pgdg main

จากนั้นอัปเดตระบบของคุณ

sudo apt-get update

sudo apt-get upgrade

และติดตั้งการพึ่งพาที่ไม่คาดคิด:

apt-get install ssl-cert

แค่นั้นแหละ. ตอนนี้ติดตั้ง postgresql โดยใช้คำสั่งเหล่านี้

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