当前位置: 首页>>技术教程>>正文


如何从软件中心删除“For Purchase”部分?

,

问题描述

软件中心有一个For Purchase程序部分 – 见下面的截图 – 每次我想要安装东西时都会给我。

有没有办法从软件中心删除或隐藏这些程序?

Links to answers:

For 13.10 and higher
For 13.04
For 12.10
For 12.04
For 11.10 and lower
Please leave a comment or send a mail to jmendeth@gmail.com
if it’s not working for you or you’re having trouble!

software-center,ubuntu

最佳解决方案

12.04

源自Pavlos G. answer,灵感来自Darmien answer。不同的版本?转到the list。如果您遇到麻烦并希望还原更改,请参阅帖子的结尾。


1.忽略可购买的应用程序

打开终端(Ctrl + Alt + T)并键入:

gksu gedit /usr/share/software-center/softwarecenter/db/update.py

然后按Enter键。系统将提示您输入密码。然后会出现一个编辑器。找到以下行(提示:Ctrl + F可能有帮助):

        doc = make_doc_from_parser(parser, cache)
        if not doc:
            LOG.debug("make_doc_from_parser() returned '%s', ignoring" % doc)
            return
        term_generator.set_document(doc)
        name = doc.get_data()

紧接着这些行后,粘贴以下内容(包括空格!):

        if doc.get_value(XapianValues.PRICE) not in (""): return

注意:如果你想保留不花钱的东西,但必须是”purchased”(如试验,杂志和其他专有资料),用("0.00", "")替换("")

保存文件(Ctrl + S),打开软件中心并…瞧!没有商业节目!您现在可以关闭编辑器和终端。

2.删除”For purchase”频道(可选)

要同时删除菜单中的”For purchase”项目,请打开终端并键入:

gksu gedit /usr/share/software-center/softwarecenter/backend/channel_impl/aptchannels.py

找到这些行:

        if get_distro().PURCHASE_APP_URL:
            channels.append(for_purchase_channel)

并通过在每行前面放置一个#来禁用它们:

        #if get_distro().PURCHASE_APP_URL:
        #    channels.append(for_purchase_channel)

保存并享受没有广告的软件中心!


旁注:。文件。是。包装。

这是什么意思,你问?这意味着,每当您升级软件中心时,更改都将被还原,您将不得不再次执行此步骤。

撤消修改

如果要恢复文件的原始状态,请打开终端并键入:

sudo apt-get install --reinstall software-center && exit

同样,这次会在终端上提示您输入密码。输入它,然后按ENTER键。如果键入时没有任何内容,请不要担心,这是隐藏密码。完成后终端将自动关闭。

次佳解决方案

对于11.10和更早

你可以编辑:

/usr/share/software-center/softwarecenter/backend/channel.py

并注释掉(或删除)以下行:

for_purchase_channel = None

#create a "magic" channel to display items available for purchase                                              `
        for_purchase_query = xapian.Query("AH" + AVAILABLE_FOR_PURCHASE_MAGIC_CHANNEL_NAME)
        for_purchase_channel = SoftwareChannel(self.icons, 
                                             "For Purchase", None, None, 
                                             channel_icon=None,   # FIXME:  need an icon
                                             channel_query=for_purchase_query,
                                             installed_only=installed_only)

if partner_channel is not None:
        #    channels.append(partner_channel)
        #channels.append(for_purchase_channel)

当然,您应该记住,对software-center的后续更新可能会覆盖脚本……

查看此link了解更多详情;-)

注意:对于12.04,文件名为/usr/share/software-center/softwarecenter/backend/channel_impl/aptchannels.py。适用相同的步骤。

第三种解决方案

我找到了隐藏12.04的商业结果的方法:

在/usr/share/software-center/softwarecenter/ui/gtk3/models/appstore2.py中:

线后:

def set_from_matches(self, matches):
    """ set the content of the liststore based on a list of
        xapian.MSetItems
    """
    LOG.debug("set_from_matches len(matches)='%s'" % len(matches))

添加以下行:

    matches[:] = [m for m in matches if (m.document.get_value(XapianValues.PRICE) in _FREE_AS_IN_BEER)]

它应该只改变显示的内容,但我还没有测试它,所以请自行承担风险。并享受ad-free软件中心。

第四种方案

为了完整起见,这是13.10中适合我的解决方案:

sudo aptitude install gksu
gksu gedit /usr/share/software-center/softwarecenter/db/update.py

找到这个:

def make_doc(self, cache):
    """Build a Xapian document from the desktop info."""
    doc = xapian.Document()

并添加这个(确保你有正确的TABS缩进(python需要这个):

if self.has_option_desktop("X-AppInstall-Price"):
    if self.get_desktop("X-AppInstall-Price") > 0: return

BTW这是我的第一个python evar 🙂

第五种方案

我试过它它对我有用:只显示免费(价格不超过0)的项目。

gksu gedit /usr/share/software-center/softwarecenter/db/update.py

找到这个:

def make_doc_from_parser(parser, cache):
    # XXX 2012-01-19 michaeln I'm just pulling this code out from
    # index_app_info_from_parser, but it'd be great to further
    # refactor it - it looks quite scary :-)
    doc = xapian.Document()
    # app name is the data

然后添加以下代码:

if parser.has_option_desktop("X-AppInstall-Price"):
    if parser.get_desktop("X-AppInstall-Price") > 0: return

第六种方案

12.10及以后

源自jmendeth answer。不同的版本?转到the list。如果您遇到麻烦并希望还原更改,请参阅帖子的结尾。

如果软件中心已打开,请将其关闭。现在打开一个终端(Ctrl + Alt + T)并键入:

gksu gedit /usr/share/software-center/softwarecenter/db/update.py

然后按Enter键。系统将提示您输入密码。然后会出现一个编辑器。找到以下行(提示:Ctrl + F可能有帮助):

        doc = self.make_doc(cache)
        if not doc:
            LOG.debug("%r.index_app_info: returned invalid doc %r, ignoring.",
                      self.__class__.__name__, doc)
            return
        name = doc.get_data()

紧接着这些行后,粘贴以下内容(包括空格!):

        if doc.get_value(XapianValues.PRICE) not in (""): return

保存文件(Ctrl + S)并关闭编辑器,但不关闭终端。现在输入终端:

gksu gedit /usr/share/software-center/softwarecenter/backend/channel_impl/aptchannels.py

按ENTER键。编辑器将再次出现。找到这些行:

        if get_distro().PURCHASE_APP_URL:
            channels.append(for_purchase_channel)

并通过在每行前面放置一个#来禁用它们:

        #if get_distro().PURCHASE_APP_URL:
        #    channels.append(for_purchase_channel)

保存文件,关闭编辑器但不关闭终端。在终端中,键入:

gksu echo; sudo update-software-center && exit

稍等一下,终端会在完成后自动关闭…然后打开软件中心并……瞧!没有商业节目!

旁注:。文件。是。包装。

这是什么意思,你问?这意味着,每当您升级软件中心时,更改都将被还原,您将不得不再次执行此步骤。

撤消修改

如果要恢复文件的原始状态,请打开终端并键入:

gksu echo; sudo apt-get install --reinstall software-center && exit

同样,系统将提示您输入密码。完成后终端将自动关闭。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/2104.html,未经允许,请勿转载。