Як видалити розділ «Придбання» з Центру програмного забезпечення?


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

Похідний від Pavlos Г. відповіді і натхнення від 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), відкрийте Програмний центр та… voila!
Комерційних програм немає!
Ви можете закрити редактор та термінал зараз.

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

1
Якщо ви заміните програмний центр на стару версію askubuntu.com/questions/95497/…, тоді ви можете виконати ці кроки.
Матео

12.04 в цих кроках буде приховано канал "Для придбання", але не всі комерційні записи. Щоб їх також приховати, знадобиться щось на зразок рішення Дармієна. (Але я хочу знайти спосіб змінити логіку не 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)]

Він повинен змінити лише те, що відображається, але я його ще не дуже перевіряв, тому використовуйте на свій страх і ризик. І насолоджуйтесь програмним центром без реклами.


Чудово! Не можна чекати, щоб протестувати. :)
Альба Мендес

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

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

До речі, це був мій перший пітон евар :-)


+1 Неможливо перевірити зараз, але також додано до TOC. Спасибі!
Альба Мендес

Працює до 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

Натисніть 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, який робить відповідне виправлення залежно від версії.
Альба Мендес

Зробимо тест на 12.10, якщо все буде готово, я зв'язатиму вашу відповідь вгорі і внесу будь-які інші зміни.
Альба Мендес

Щойно зробив це на моїй
новій

@jmendeth Я люблю допомогти вам написати цей сценарій
blvdeer

Вибачте за затримку. На жаль, він не працює на моєму 64-бітному Ubuntu 12.10. Я побачу, чи зможу я щось зробити ...
Альба Мендес

-2

Це можна зробити простіше, вибравши View -> Canonical Maintenance Software замість All Software. Це має перевагу в тому, що не буде перезаписано оновленнями програмного забезпечення.

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


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