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

软件中心有一部分For Purchase程序 – 见下面的截图 –
每当我想要安装东西时,它就是在宣传我。

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

答案链接:

对于13.10及更高版本
对于13.04
对于12.10
对于12.04
对于11.10和更低的
请发表评论或发送邮件至jmendeth@gmail.com
如果它不适合你或你遇到麻烦!

Ubuntu软件中心的“For purchase”部分。

12.04

源自Pavlos G.来自Darmien的答案和灵感回答 。
不同的版本? 转到列表 。
如果您遇到麻烦并希望还原更改,请参阅post的结尾。


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.删除“购买”频道(可选)

要同时删除菜单中的“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后续更新可能会覆盖脚本……

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

注意:对于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)] 

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

为了完整起见,这是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 答案 。
不同的版本? 转到列表 。
如果您遇到麻烦并希望还原更改,请参阅post的结尾。

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

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

您可以通过选择View – > Canonical Maintained Software而不是All Software来更简单地完成此操作。 这样做的好处是不会被软件更新覆盖。

这可能隐藏了一些额外的项目,但至少它根据我的经验摆脱了烦人的杂志和销售软件。