问题描述
软件中心有一个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 tojmendeth@gmail.com
if it’s not working for you or you’re having trouble!
最佳解决方案
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
同样,系统将提示您输入密码。完成后终端将自动关闭。