如何从软件中心删除“购买”部分?


35

软件中心有一个用于购买程序的部分(请参见下面的屏幕截图),
每次我要安装某些东西时,这都会使我烦恼。

有什么方法可以从软件中心删除隐藏这些程序?

答案链接:

对于13.10及更高版本
对于13.04
对于12.10
对于12.04
对于11.10及更低版本 如果对您不起作用或遇到问题,
请发表评论或发送邮件给jmendeth@gmail.com

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


13.10和更高的平均值是多少?
Avinash Raj

@AvinashRaj这是适用于最新版本的Ubuntu(如现在的13.10),很快14.04相信14.04的alpha / beta也即将推出。
Alvar 2014年

Answers:


17

对于12.04

源自 Pavlos G.答案Darmien答案的启示。
不同的版本?转到列表
如果您遇到麻烦并想还原更改,请参阅文章末尾。


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

注意:如果您想保留不花钱但必须“购买”的东西
(例如试用版,杂志和其他专有东西),请替换("")("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
正如我对其他人说的,最好在编辑对程序至关重要的任何内容之前进行备份。
ζ--

1
@ObsessiveFOSS好点。但请记住:1)更改是微不足道的,并且很容易撤消。人们不太可能迷路。:D 2)此文件已打包,因此,如果您输入有误,可以重新安装该软件包。
阿尔巴·门德斯

@ObsessiveFOSS我已添加了还原说明,以防万一;)
Alba Mendez

12

对于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。相同的步骤适用。


1
想要找到12.04的解决方案?:)
Savvas Radevic

1
如果将软件中心替换为旧版本askubuntu.com/questions/95497/…,则可以按照以下步骤操作。
Mateo

在12.04,这些步骤将隐藏“用于购买”频道,但不会隐藏所有商业条目。要隐藏它们,还需要类似Darmien的解决方案。(但是我想找到一种改变逻辑而不是GUI的方法)。
阿尔巴·门德斯

我找到了!隐藏任何地方的所有商业条目!
阿尔巴·门德斯

@medigeek看看我的回答。如果不起作用,请告诉我。我在三台不同的计算机上进行了测试。
阿尔巴·门德斯

6

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

它只应更改显示的内容,但我还没有对其进行太多测试,因此使用时后果自负。并享受无广告的软件中心。


大!等不及要测试了。:)
阿尔巴·门德斯

尚未测试,但可以。感谢您的尝试!
Savvas Radevic

6

为了完整起见,以下是在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

顺便说一句,这是我的第一个python evar :-)


+1目前无法验证,但也已添加到目录中。谢谢!
阿尔巴·门德斯

适用于14.04,但最好能从UI上打开/关闭它。该解决方案是永久性的。再也不会看到要购买的应用。
VlatkoB 2014年

3

我试了一下,它对我有用:仅显示免费(价格不超过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

2

对于12.10及更高版本

源自jmendeth的 答案
不同的版本?转到列表
如果您遇到麻烦并想还原更改,请参阅文章末尾。

关闭软件中心(如果已打开)。
现在打开一个终端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

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


+1 感谢您的贡献!好吧,这变得越来越广泛了,所以我想我要制作一个Python脚本,该脚本根据版本进行适当的修复。
Alba Mendez 2013年

要测试我的12.10,如果一切准备就绪,我会在顶部链接您的答案并进行其他修改。
Alba Mendez 2013年

刚在我全新安装的Ubuntu 12.10上
做到了

@jmendeth我很乐意协助您编写该脚本
blvdeer 2013年

很抱歉延迟。不幸的是,它在我的64位Ubuntu 12.10上不起作用。我会看看我是否可以做点什么...
Alba Mendez 2013年

-2

通过选择查看->规范维护的软件而不是所有软件,可以更简单地执行此操作。这样的好处是不会被软件更新覆盖。

这可能会隐藏一些其他项目,但至少从我的经验来看,它摆脱了烦人的杂志和销售软件。


2
然后,您将隐藏所有软件的90%,仅显示Canonical支持的软件(无论是否商业)。我想要做的就是删除propietary软件
阿尔巴·门德斯
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.