วิธีลบส่วน“ การซื้อ” ออกจากศูนย์ซอฟต์แวร์


35

ศูนย์ซอฟต์แวร์มีส่วนของโปรแกรมสำหรับการซื้อ - ดูภาพหน้าจอด้านล่าง -
ซึ่งเป็นการเตือนฉันทุกครั้งที่ฉันต้องการติดตั้งบางอย่าง

มีวิธีการลบหรือซ่อนโปรแกรมเหล่านี้จาก Software Center หรือไม่?

ลิงก์ไปยังคำตอบ:

สำหรับ13.10 และสูงกว่า
สำหรับ13.04
สำหรับ12.10
สำหรับ12.04
สำหรับ11.10 และต่ำกว่า
กรุณาแสดงความคิดเห็นหรือส่งอีเมลถึงjmendeth@gmail.com
ถ้ามันไม่ได้ทำงานสำหรับคุณหรือคุณกำลังมีปัญหา!

ส่วน 'สำหรับซื้อ' ของศูนย์ซอฟต์แวร์ Ubuntu


13.10 ขึ้นไปหมายถึงอะไร
Avinash Raj

@AvinashRaj นั่นสำหรับอูบุนตูเวอร์ชันล่าสุดตอนนี้ 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) เปิด Software Center และ… 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)ไฟล์นี้ได้รับการบรรจุดังนั้นหากคุณทำผิดพลาดคุณสามารถติดตั้งแพ็คเกจใหม่ได้
Alba Mendez

@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 หรือไม่? :)
Savvas Radevic

1
หากคุณเปลี่ยนศูนย์ซอฟต์แวร์ด้วยaskubuntu.com/questions/95497/เวอร์ชั่นเก่าคุณสามารถทำตามขั้นตอนเหล่านี้ได้
Mateo

ในวันที่ 12.04 ขั้นตอนเหล่านี้จะซ่อนช่อง "ซื้อ" แต่ไม่ใช่รายการเชิงพาณิชย์ทั้งหมด ในการซ่อนพวกเขาจะต้องมีวิธีการแก้ปัญหาเช่น Darmien (แต่ฉันต้องการหาวิธีที่จะเปลี่ยนลอจิกไม่ใช่GUI )
Alba Mendez

เจอแล้ว! ซ่อนรายการเชิงพาณิชย์ทั้งหมดจากทุกที่!
Alba Mendez

ดู @medigeek ที่คำตอบของฉัน ถ้ามันใช้ไม่ได้บอกฉันที ฉันทดสอบในคอมพิวเตอร์สามเครื่อง
Alba Mendez

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

มันควรเปลี่ยนเฉพาะสิ่งที่แสดง แต่ฉันยังไม่ได้ทดสอบมากนักดังนั้นใช้ความเสี่ยงของคุณเอง และเพลิดเพลินกับศูนย์ซอฟต์แวร์ที่ไม่มีโฆษณา


ที่ดี! แทบรอไม่ไหวที่จะทำการทดสอบ :)
Alba Mendez

ยังไม่ได้ทดสอบ แต่จะทำ ขอบคุณที่ลอง!
Savvas Radevic

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 (หลามต้องการสิ่งนี้):

if self.has_option_desktop("X-AppInstall-Price"):
    if self.get_desktop("X-AppInstall-Price") > 0: return

BTW นี่เป็น python ตัวแรกของฉัน :-)


+1 ไม่สามารถยืนยันได้ในตอนนี้ แต่เพิ่มไปยัง TOC เช่นกัน ขอบคุณ!
Alba Mendez

ใช้งานได้ 14.04 แต่มันจะดีกว่าถ้ามันสามารถเปิด / ปิดได้จาก UI การแก้ปัญหานี้ค่อนข้างถาวร ไม่เห็นแอพสำหรับซื้ออีกครั้ง
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

รอสักครู่เทอร์มินัลจะปิดโดยอัตโนมัติเมื่อเสร็จแล้ว ...
จากนั้นเปิด Software Center และ ... voila!
ไม่มีโปรแกรมเชิงพาณิชย์!

หมายเหตุด้าน: ไฟล์ เป็น แพคเกจ

คุณถามว่าอะไร ซึ่งหมายความว่า
เมื่อใดก็ตามที่คุณอัพเกรดศูนย์ซอฟต์แวร์การเปลี่ยนแปลง
จะถูกเปลี่ยนกลับและคุณจะต้องทำตามขั้นตอนนี้อีกครั้ง

เลิกทำการแก้ไข

หากคุณต้องการกู้คืนสถานะดั้งเดิมของไฟล์ให้
เปิดเทอร์มินัลแล้วพิมพ์:

gksu echo; sudo apt-get install --reinstall software-center && exit

อีกครั้งคุณจะได้รับแจ้งรหัสผ่านของคุณ
เครื่องจะปิดโดยอัตโนมัติเมื่อเสร็จสิ้น


+1 ขอบคุณที่ร่วมให้ข้อมูล! นี่มันใกล้จะหมดแล้วดังนั้นฉันคิดว่าฉันจะสร้างสคริปต์ Python ที่ทำให้การแก้ไขที่เหมาะสมขึ้นอยู่กับรุ่น
Alba Mendez

จะทดสอบใน 12.10 ของฉันหากทุกอย่างพร้อมฉันจะเชื่อมโยงคำตอบของคุณที่ด้านบนและทำการแก้ไขอื่น ๆ
Alba Mendez

เพิ่งติดตั้ง Ubuntu 12.10 ใหม่ล่าสุดของฉัน
blvdeer

@jmendeth ฉันจะรักที่จะช่วยคุณเขียนสคริปต์ว่า
blvdeer

ขออภัยเกี่ยวกับความล่าช้า น่าเสียดายที่มันใช้งานไม่ได้กับ Ubuntu 64 บิตแบบ 64 บิต ฉันจะดูว่าฉันจะทำอะไรบางอย่าง ...
อัลเม็นเดส

-2

คุณสามารถทำสิ่งนี้ได้ง่ายขึ้นโดยเลือกมุมมอง -> ซอฟต์แวร์ดูแลรักษา Canonical แทนซอฟต์แวร์ทั้งหมด สิ่งนี้มีประโยชน์ในการไม่ถูกเขียนทับโดยการอัพเดตซอฟต์แวร์

นี่อาจซ่อนบางรายการเพิ่มเติม แต่อย่างน้อยก็กำจัดนิตยสารที่น่ารำคาญและขายซอฟต์แวร์ในประสบการณ์ของฉัน


2
จากนั้นคุณกำลังซ่อน 90% ของซอฟต์แวร์ทั้งหมดแสดงเฉพาะซอฟต์แวร์ (เชิงพาณิชย์หรือไม่) ที่ Canonical สนับสนุน สิ่งที่ฉันต้องการจะทำคือเอาซอฟต์แวร์กรรมสิทธิ์เท่านั้น
Alba Mendez
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.