对于 12.04

对于 12.04

软件中心有一个部分购买程序——见下面的截图——
每次我想要安装某些东西时,这让我很烦恼。

有什么办法消除或者隐藏软件中心 中有哪些程序?

答案链接:

为了13.10 及更高版本
为了13.04
为了12.10
为了12.04
为了11.10 及更低版本
[email protected]
如果该功能对您不起作用或者您遇到了麻烦, 请发表评论或发送邮件至!

Ubuntu 软件中心的“购买”部分。

答案1

对于 12.04

源自 Pavlos G. 回答以及来自达米恩答案
版本不同?前往列表
。如果您遇到问题并想恢复更改,请参阅文章末尾。


1. 忽略需要付费的应用程序

打开终端Ctrl++ AltT并输入:

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

笔记:如果您想保留不需要花钱但必须“购买”的东西
(例如试用版、杂志和其他专有的东西),请将其替换("")("0.00", "")

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

2. 删除“待购买”频道(可选)

要删除菜单中的“待购买”项,请打开终端并输入:

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。如果输入时没有出现任何内容,请不要担心,这是为了隐藏您的密码。
完成后终端将自动关闭。

答案2

适用于 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会覆盖脚本......

看看这个关联更多细节 ;-)

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

答案3

我找到了一种隐藏 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)]

它应该只会改变显示的内容,但我还没有进行太多测试,因此使用时请自担风险。并享受无广告的软件中心。

答案4

我尝试了这个它对我有用:仅免费(价格不超过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

相关内容