apt-get install没有依赖项

时间:2016-03-20 19:14:44

标签: debian apt dpkg

我正在尝试在我从源码安装的Maraiadb上的vps上安装phpmyadmin。 Mariadb 10.1.12运行正常。 当我尝试安装phpmyadmin

apt-get install phpmyadmin

然后显示

The following extra packages will be installed:
  libdbd-mysql-perl libmysqlclient18 mysql-client mysql-client-5.5 mysql-common php5-mysql
Suggested packages:
  mysql-server maridadb-server virtual-mysql-server www-browser
The following NEW packages will be installed:
  libdbd-mysql-perl libmysqlclient18 mysql-client mysql-client-5.5 mysql-common php5-mysql phpmyadmin
0 upgraded, 7 newly installed, 0 to remove and 0 not upgraded.
1 not fully installed or removed.

如果我按y键去,那么之后我的Mariadb不能正常工作就会出现套接字问题,

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2 "No such file or directory")
也许是因为mysql-client安装了phpmyadmin,然后修复它我清除mysql包,

sudo apt-get --purge remove "mysql*"

然后mariadb再次开始正常工作。

所以我想知道无论如何我可以安装没有这些依赖的phpmyadmin,我试图找到phpmyadmin

/var/lib/dpkg/status

所以我可以删除它的依赖项,但phpmyadmin不在列表中:(

我正在使用debian 8 jessie

1 个答案:

答案 0 :(得分:1)

phpmyadmin似乎有一个sql server作为依赖项,因此它默认安装mysql。由于您已经安装了Mariadb的自编译版本,因此会导致问题。在你的情况下,mysql似乎使用你真正想要用于Mariadb的套接字。 您当然可以更改这两个sql服务器的端口/套接字,以便它们可以同时运行,但在同一台服务器上同时运行两个sql服务器没有多大意义。

更好的方式......

所以更好的方法是创建一个已安装的mysql服务器的假包。您可以使用equivs执行此操作。更多信息:How to tell apt that dependencies are resolved manually?

因此,在您的情况下,您应该了解Debian安装了哪些maraiadb软件包,并伪造您知道已在服务器上安装了内容的每个软件包。

以下是

的一般指南

如何使用equivs

我建议你在使用假包时使用新文件夹。 (mkdir ~/fakepackages && cd ~/fakepackages

  1. 获取您要伪造的程序的原始包:apt-get download mypackage
  2. 获取.deb文件的控制文件。 您可以通过解压缩.deb文件并找到控制文件来完成此操作。

    我建议采取以下步骤:

    1. 创建一个新目录并移入其中:mkdir package&&cd package(您可以在下载.deb文件之前执行此操作)
    2. ar xv package.deb
    3. tar xzf control.tar.gz
    4. 将控制文件复制到您找到它的位置:cp control ../mypackage.ctl.orig
    5. 退出目录并将其删除:cd ..rm -rf package
  3. 保持控制文件处于打开状态。
  4. 创建新的控制文件:equivs-control mypackage.ctl
  5. 它会为您提供一个模板。现在结合您所知道的有关已安装和想要伪造的(自编译)程序的信息以及原始控制文件的信息来创建伪控制文件。您应该尝试添加尽可能多的真值。至少提供这些值非常重要:

    • 封装
    • 提供(如果原始控制文件有)
    • 描述

    在说明中你应该明确说明包装是假的。

  6. 构建假包:equivs-build mypackage.ctl
  7. 安装假包:sudo dpkg -i mypackage_1.0.deb