postgres 卸載失敗

postgres 卸載失敗

在嘗試卸載 postgresql 時

sudo apt-get remove postgresql

我收到以下錯誤訊息

Reading package lists... Done
Building dependency tree       
Reading state information... Done
Package 'postgresql' is not installed, so not removed
The following packages were automatically installed and are no longer required:
  account-plugin-windows-live libupstart1
Use 'apt-get autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 17 not upgraded.
2 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
Setting up postgresql-common (154ubuntu1) ...
 * Starting PostgreSQL 9.3 database server                                                                                                       * The PostgreSQL server failed to start. Please check the log output:
2015-07-08 11:16:50 PDT FATAL:  could not create lock file "/var/run/postgresql/.s.PGSQL.5432.lock": Permission denied
                                                                                                                                         [fail]
invoke-rc.d: initscript postgresql, action "start" failed.
dpkg: error processing package postgresql-common (--configure):
 subprocess installed post-installation script returned error exit status 1
dpkg: dependency problems prevent configuration of postgresql-9.3:
 postgresql-9.3 depends on postgresql-common (>= 142~); however:
  Package postgresql-common is not configured yet.

dpkg: error processing package postgresql-9.3 (--configure):
 dependency problems - leaving unconfigured
No apport report written because the error message indicates its a followup error from a previous failure.
                                                                                                          Errors were encountered while processing:
 postgresql-common
 postgresql-9.3
E: Sub-process /usr/bin/dpkg returned an error code (1)

當我嘗試清除 postgres 時,也會發生相同的情況,這裡發生了什麼以及如何正確刪除 postgres?

答案1

你的問題

invoke-rc.d: initscript postgresql, action "start" failed.
dpkg: error processing package postgresql-common (--configure):
 subprocess installed post-installation script returned error exit status 1

我的解決方案

短途

sudo rm /etc/init.d/postgresql
sudo rm /etc/init/postgresql.conf
sudo apt-get remove postgresql

或者很長的路要走

  • 開啟文件/var/lib/dpkg/info/postgresql-common.postinst

    sudo nano /var/lib/dpkg/info/postgresql-common.postinst
    
  • 使用啟動命令搜尋行:

    if [ -x "/etc/init.d/postgresql" ] || [ -e "/etc/init/postgresql.conf" ]; then
            invoke-rc.d postgresql start || exit $?
    fi
    
  • 評論封鎖

    # if [ -x "/etc/init.d/postgresql" ] || [ -e "/etc/init/postgresql.conf" ]; then
    #        invoke-rc.d postgresql start || exit $?
    # fi
    
  • 再次取出包裝。

    sudo apt-get remove postgresql
    

解釋

在刪除 的過程中,會呼叫postgresql該腳本。postgresql-common.postinst該腳本嘗試啟動服務postgresql,但會失敗invoke-rc.d postgresql start(不要問我為什麼)。

必須防止這種情況發生。透過更改程式碼的執行條件。或透過刪除程式碼本身。

相關內容