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


35

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

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

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

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

Раздел «Для покупки» в Центре программного обеспечения Ubuntu.


что значит 13.10 и выше?
Авинаш Радж

@AvinashRaj Это для самой последней версии Ubuntu, такой как прямо сейчас 13.10, и скоро 14.04 верят, что альфа / бета 14.04 тоже скоро выйдет.
Алвар

Ответы:


17

За 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

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


2
Как я уже говорил другим, лучше всего сделать резервную копию, прежде чем редактировать что-либо критическое для программы.
ζ--

1
@ObsessiveFOSS хорошая мысль. Но имейте в виду, что: 1) Изменения тривиальны и их легко отменить. Вряд ли люди когда-либо будут потеряны. : D 2) Эти файлы упакованы, поэтому, если вы допустили ошибку, вы можете просто переустановить пакет.
Альба Мендес

@ObsessiveFOSS Я добавил инструкции, чтобы вернуться, на всякий случай;)
Альба Мендес

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? :)
Саввас Радевич

1
Если вы замените центр программного обеспечения старой версией askubuntu.com/questions/95497/…, вы можете выполнить следующие действия.
Матео

12.04 эти шаги будут скрывать канал «Для покупки», но не все коммерческие записи. Чтобы скрыть их, понадобится что-то вроде решения Дармиена. (Но я хочу найти способ изменить логику, а не графический интерфейс ).
Альба Мендес

Я нашел это! Скрыть ВСЕ коммерческие записи от ВЕЗДЕ!
Альба Мендес

@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)]

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


Большой! Не могу дождаться, чтобы проверить это. :)
Альба Мендес

Не проверял, но сделаю. Спасибо за попытку!
Саввас Радевич

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

Кстати, это был мой первый питон evar :-)


+1 Не могу подтвердить прямо сейчас, но также добавлено в оглавление. Благодарность!
Альба Мендес

Работает на 14.04, но было бы лучше, если бы его можно было включить / выключить из пользовательского интерфейса. Это решение довольно постоянное. Никогда не видеть приложения для покупки снова.
VlatkoB

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

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

        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, который сделает соответствующее исправление в зависимости от версии.
Альба Мендес

Собираюсь проверить мой 12.10, если все будет готово, я свяжу ваш ответ вверху и внесу любые другие изменения.
Альба Мендес

Только что сделал это на моей новой установке Ubuntu 12.10
blvdeer

@jmendeth Я буду рад помочь вам написать этот сценарий
бульвар

Извините за задержку. К сожалению, это не работает на моем 64-битном Ubuntu 12.10. Я посмотрю, смогу ли я что-нибудь сделать ...
Альба Мендес

-2

Вы можете сделать это проще, выбрав View -> Canonical Maintained Software вместо All Software. Преимущество заключается в том, что вы не перезаписываетесь обновлениями программного обеспечения.

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


2
Затем вы скрываете 90% всего программного обеспечения, показывая только программное обеспечение (коммерческое или нет), которое поддерживает Canonical. То , что я хочу сделать , это удалить propietary программного обеспечения только .
Альба Мендес
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.