ubuntuでpostgresqlを完全にパージして再インストールする方法は?[閉まっている]


221

どういうわけか、私はUbuntu karmicへのpostgresqlのインストールを完全に盗聴することに成功しました。最初からやり直したいのですが、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ユーザーがいます。消去スクリプトがそれに触れていないようです。私が次の症状を明らかにするためだけに取り組む症状はたくさんあります。

この2番目のコマンド「pg_createcluster ...」を実行すると、「/ var / lib / postgresql / 8.4 / main / postgresql.confが存在しない」というメッセージが表示されるので、そのうちの1つを探しに行きますが、 mそれで終わりではないことを確認してください。

それを完全に燃やして最初からやり直すことができる簡単なワンライナー(または2つ)はありませんか?


2
ワンクリックインストーラーを試してみてください。もっと簡単です。そのディレクトリは/ etc /と/ varに分散されていません。これらはすべて一つのディレクトリに格納されている
マイケル・ブエン

2
これは一般的なコンピューティングの問題ではなく、postgresqlは標準のstackoverflowトピックです。質問を再開する必要があります。
Andrew

回答:


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より安全なの賛成userdelgroupdel。また、dselectパッケージを手動で選択するのではなく、aptワイルドカードを使用して確実に一致させます。
クレイグリンガー

11
+1 for pg_dropcluster!! (使用例:pg_dropcluster --stop 9.1 main
Anuj Gupta 2013

5
libpq5とlibpq-devをそのパージリストに追加します。正しいバージョンに再インストールするまで、そのlibによって多くの問題が発生しました
Rogerio Chaves 14年

Debian 8とPostgreSQL 9.4でも動作します。

2
私も追加しrm -r /var/log/postgresqlます。
グレゴリーアレニウス2017年

45

私も同様の状況でした:debian wheezyでpostgresql 9.1をパージする必要がありました(以前に8.4から移行していて、エラーが発生していました)。

私がしたこと:

まず、設定とデータベースを削除しました

$ 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も何も返されない

だから、もっとググった後、私はこのコマンドに行きました:

$ 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

ワイルドカードを使用する方がはるかに簡単です。更新された最初の回答を参照してください。
クレイグリンガー


9

aeに従って、私がアンインストールして再インストールした手順に従いました。それは私のために働いた。

まず、インストールされている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

おそらく2番目のコマンドだけが必要であると思いますが、そこからPostgres 9.2インストールできました(sudo apt-get install postgresql-9.2)。


0

/ etc / groupを編集するときに、次の行も削除しました。

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で大混乱を引き起こす可能性があります。代わりに、ssl-certグループからpostgresを削除するには、コロンの後ろから「postgres」を削除します。
ジョンミー

2
元の説明では、手動で編集するようにアドバイスしていました/etc/passwd絶対しないでuserdelおよびgroupdelコマンドを使用すれば、今後その問題は発生しなくなります。
クレイグリンガー

-2

私のubuntu 16.04でも同じ問題に直面していました

しかし、私はその問題を修正しました、そしてそれはこれらのステップに従うだけでとても簡単です、そしてあなたはあなたのシステムにpostgresql 10をインストールすることができるでしょう:

これをsources.listに追加します。

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.