Как удалить раздел "Для покупки" из Центра программного обеспечения?

В Центре программного обеспечения есть раздел "Программы для покупки" ( см. Скриншот ниже),
что раздражает меня каждый раз, когда я хочу что-то установить.

Есть ли способ удалить или скрыть эти программы из Центра программного обеспечения?

Ссылки на ответы:

Для 13.10 и выше
За 13.04
За 12.10
За 12.04
Для 11.10 и ниже
Пожалуйста, оставьте комментарий или отправьте письмо на jmendeth@gmail.com
если это не работает для вас или у вас возникли проблемы!

7 ответов

За 12.04

Полученный от Павлоса Г. ответ и вдохновение от Дармиена.
Другая версия? Перейти к списку
См. Конец поста, если у вас возникли проблемы и вы хотите отменить изменения.


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

Снова, вам будет предложено ввести пароль, на этот раз на терминале.
Введите его и нажмите клавишу ВВОД. Не волнуйтесь, если при вводе ничего не появляется, это скрыть ваш пароль.
Терминал автоматически закроется, когда закончите.

Для 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

Кстати, это был мой первый питон 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 и позже

Alba Mendez от ответа Alba Mendez.
Другая версия? Перейти к списку
См. Конец поста, если у вас возникли проблемы и вы хотите отменить изменения.

Закройте Центр программного обеспечения, если он открыт.
Теперь откройте терминал (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

Нажмите Ввод. Редактор появится снова. Найдите эти строки:

        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. Преимущество заключается в том, что вы не перезаписываетесь обновлениями программного обеспечения.

Это может скрыть некоторые дополнительные элементы, но, по крайней мере, избавит меня от надоедливых журналов и программного обеспечения для продажи по моему опыту.

Другие вопросы по тегам