【问题标题】:Cannot install MySQL-python package无法安装 MySQL-python 包
【发布时间】:2019-07-18 06:49:59
【问题描述】:

我刚刚在托管公司创建了 CentOS 7。

我需要安装一个依赖于 MySQL-python 包的应用程序。

我尝试安装该软件包,但它不可用:

root@vps [/var/frappe]# yum install MySQL-python
Loaded plugins: fastestmirror, universal-hooks
Loading mirror speeds from cached hostfile
 * EA4: 208.100.0.204
 * base: ftpmirror.your.org
 * epel: mirror.steadfastnet.com
 * extras: ftpmirror.your.org
 * ius: muug.ca
 * updates: ftpmirror.your.org
No package MySQL-python available.
Error: Nothing to do
root@vps [/var/frappe]#

为什么我不能安装它?一些解决方法?

编辑:

/etc/yum.conf

[main]
exclude=courier* dovecot* exim* filesystem httpd* mod_ssl* mydns* mysql* nsd* p0f php* proftpd* pure-ftpd* spamassassin* squirrelmail*
tolerant=1
errorlevel=1
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=5
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release


#  This is the default, if you make this bigger yum won't see if the metadata
# is newer on the remote and so you'll "gain" the bandwidth of not having to
# download the new metadata and "pay" for it by yum not having correct
# information.
#  It is esp. important, to have correct metadata, for distributions like
# Fedora which don't keep old packages around. If you don't like this checking
# interupting your command line usage, it's much better to have something
# manually check the metadata once an hour (yum-updatesd will do this).
# metadata_expire=90m

# PUT YOUR REPOS HERE OR IN separate files named file.repo
# in /etc/yum.repos.d

【问题讨论】:

  • 试试yum update。检查镜像实际上正在更新。甚至docker run centos:7 yum search MySQL-python 也为我找到了它。所以托管/默认回购问题。
  • 它也不起作用......什么是docker.....?
  • 什么是 'it' - 'yum update' 或 'checking the mirrors' ?而不是像“没有工作”这样无意义的陈述显示实际结果/观察结果,如果需要,显示预期结果?在这种情况下,docker 是一种运行相当原始的操作系统的方法,用于演示目的。
  • 我已经运行了“yum update”...我不知道如何检查镜像。假设所有存储库都配置良好。
  • 鉴于安装包失败,我怀疑它没有正确配置。将您在问题中隐藏的 url 与公共 centos 的目录(如mirror.centos.org/centos-7/7)进行比较,或设置您的镜像like this answer,然后重试。或联系您的托管服务提供商,以获取其服务中断所带来的支持。

标签: mysql centos7 mysql-python


【解决方案1】:

此软件包将在 base 存储库中提供:

$ yum whatprovides MySQL-python
MySQL-python-1.2.5-1.el7.x86_64 : An interface to MySQL
Repo        : base

供参考:

$ cat /etc/yum.repos.d/centos.repo 
[base]
name=CentOS-$releasever - Base
baseurl=http://mirror.centos.org/centos/7/os/$basearch/
gpgcheck=1
enabled=1
protect=1
priority=5
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

在提供的yum.conf 中看起来很可疑的是配置exclude=mysql* 精确匹配所需的包名称。您要么必须删除那个exclude 模式才能安装。或安装包MySQL-pythonpip install MySQL-python


MySQL-pythonRPM 依赖项确认不需要额外的 MySQL 包:

$ repoquery --requires --resolve MySQL-python
python-0:2.7.5-76.el7.x86_64
python-libs-0:2.7.5-76.el7.x86_64
MariaDB-compat-0:10.2.22-1.el7.centos.x86_64
glibc-0:2.17-260.el7.i686
mariadb-libs-1:5.5.60-1.el7_5.x86_64
zlib-0:1.2.7-18.el7.x86_64
glibc-0:2.17-260.el7.x86_64
openssl-libs-1:1.0.2k-16.el7.x86_64

documentation 也解释了,我想说的是:

exclude 要从所有存储库中排除的软件包列表,因此yum 的工作方式就像该软件包从未在存储库中一样。这应该是一个空格分隔的列表。这是常用的,因此不会意外升级或安装包,但可用于以yum list 将显示包的任何方式删除包。允许使用通配符(例如 *?)的 Shell glob。

最佳解决方案是:编辑/etc/yum.conf,然后将exclude 模式mysql* 替换为类似的mysql-server* mysql-client* mysql-libs* - 这样MySQL 服务器、客户端和库仍将被排除,但安装包MySQL-python 将被允许。


甚至有一个非常简单的方法来解决这个问题(请注意,以后不会找到更新):

sudo yum install MySQL-python --disableexcludes=all

【讨论】:

  • “yum whatprovides MySQL-python”显示消息“未找到匹配项”
  • 并且我已经使用pip安装了它,但是依赖它的软件并没有将其识别为已安装。
  • @jstuardo 然后你必须用yum 安装它(通过删除排除,它可能由于某种原因仍然存在,可能是MariaDB) - pip 安装需要禁用依赖项-查看。 MariaDB 至少提供(大多数)mySQL 兼容性库,因此使用它们中的任何一个都不是问题。实际的问题是,exclude 模式也匹配所需的包名称,尽管它不是 mySQL 服务器的一部分。添加了依赖项列表。
  • @jstuardo 除非你从/etc/yum.conf 中删除exclude 模式mysql*...它不会找到包,因为它也匹配MySQL-python。这似乎是试图排除MySQL 服务器的副作用;他们应该使用类似mysql-server* mysql-client* mysql-libs* 的模式,这样它就不会匹配MySQL-python(您可以通知他们这个问题,他们在不知不觉中产生了)。
  • 谢谢!!我可以按照您的建议安装该软件包
【解决方案2】:

您最好使用pip 作为Python 的包管理器,而不是yumCreate a Python virtual environment,激活它,然后使用pip安装MySQL-python

python -m venv ~/mysqlstuff
source ~/mysqlstuff/bin/activate
pip install MySQL-python

【讨论】:

    【解决方案3】:

    首先更新你的包管理器:

    sudo yum update
    

    然后安装 pip 包:

    sudo yum install epel-release
    sudo yum install python-pip
    

    然后更新 pip:

    pip install --upgrade pip
    

    最后安装MYSQL-python包:

    pip install --user MySQL-python # user only
    

    sudo pip install MySQL-python # system wide
    

    【讨论】:

      猜你喜欢
      • 2012-10-11
      • 1970-01-01
      • 1970-01-01
      • 2011-06-14
      • 2021-01-23
      • 2018-09-19
      相关资源
      最近更新 更多