Puncte:10

Cum să dezactivați definitiv actualizarea automată a cache-ului pachetului după adăugarea unui PPA?

drapel us

În versiunile recente ale Ubuntu, adăugarea unui PPA actualizează automat cache-ul pachetului imediat.

Uneori, trebuie să adaug mai multe PPA-uri (de exemplu, după o nouă instalare) și aș dori să rulez manual actualizare apt dintr-o singură mișcare, după adăugarea tuturor PPA-urilor.

Cum să faci asta?

am găsit acest întrebare, care sugerează utilizarea add-apt-repository -n ppa:user/repo.

Cum se schimbă comportamentul implicit, astfel încât memoria cache a pachetului să nu fie actualizată chiar și atunci când -n steagul nu este furnizat?

De exemplu, în Linux Mint, memoria cache a pachetului nu este niciodată actualizată automat după adăugarea unui PPA. Cum se face ca acest comportament implicit în Ubuntu?

Terrance avatar
drapel id
Minunata intrebare! Nu mă pricep foarte bine la aliasuri, dar poate am configurat un alias precum `add-apt-repository -ny`, dar nu sunt atât de bun la așa ceva.
mchid avatar
drapel bo
@Terrance Deoarece comanda folosește `sudo`, va trebui să adăugați un alias pentru comanda `sudo`: `alias sudo='sudo '` (cu un spațiu liber după sudo). În caz contrar, comenzile `sudo` nu vor folosi aliasurile dvs.
Terrance avatar
drapel id
@mchid Ți-am spus că sunt rău la asta! :) Asta are foarte mult sens. Mulțumiri! :)
muru avatar
drapel us
În ceea ce privește Linux Mint, ei folosesc [propria lor copie veche a `add-apt-repository`] (https://github.com/linuxmint/mintsources/blob/master/usr/bin/add-apt-repository).
Puncte:7
drapel bo

Pentru un anumit utilizator, puteți adăuga un alias pentru add-apt-repository.

Adăugați următoarele rânduri la sfârșitul textului dvs ~/.bashrc fişier:

alias sudo='sudo '
alias add-apt-repository='add-apt-repository -n'
alias apt-add-repository='add-apt-repository -n'

După ce salvați modificările, nu uitați să găsiți sursa dvs ~/.bashrc fişier:

. ~/.bashrc

Rețineți că prima linie este necesară pentru a utiliza aliasuri cu sudo. Dacă aveți aliasuri din care doriți să excludeți sudo folosiți, aceasta ar putea să nu fie cea mai bună metodă.

Liso avatar
drapel sd
Soluție inteligentă +1!
Puncte:5
drapel zw

Pentru metoda la nivel de sistem, aș crea un script de ambalaj local plasat în /usr/local/bin după cum urmează

pisica <<\EOF | sudo tee /usr/local/bin/add-apt-repository
#!/bin/bash
/usr/bin/add-apt-repository -n $@
EOF
sudo chmod +x /usr/local/bin/add-apt-repository

și nu uitați de apt-add-repository comanda sinonimă - rulați

sudo ln -s /usr/local/bin/add-apt-repository /usr/local/bin/apt-add-repository

Apoi utilizați oricare dintre aceste comenzi cu -n opțiune adăugată automat.

Puncte:3
drapel my

Utilizatori avansati

Puteți modifica codul sursă pentru a elimina actualizare apt comanda.

Iată blocul de cod pe care trebuie să îl eliminați din /usr/bin/add-apt-repository fişier:

        dacă se actualizează și nu opțiuni.elimină:
            os.execvp("apt-get", ["apt-get", "actualizare"])
        sys.exit(0)

Aceasta va elimina comanda de actualizare.

NOTĂ: Această bucată de cod vine de două ori în fișier, trebuie să îl eliminați pe ULTIMA. Această bucată de cod din majoritatea fișierelor ar fi undeva lângă linia 198.

Puteți deschide fișierul folosind un editor de text, cum ar fi nano și eliminați această bucată de cod.

De asemenea, puteți modifica puțin codul, ceva de genul:

        dacă se actualizează și nu opțiuni.elimină:
            os.execvp("apt-get", ["apt-get", "moo"])
        sys.exit(0)

NOTĂ: Editați acest fișier cu un editor de text terminal, cum ar fi nano în loc de editori GUI ca gedit.

Începători

Deschideți un terminal folosind Ctrl + Alt + T

  1. Mai întâi, instalați nano:

    actualizare sudo apt
    sudo apt install nano
    
  2. Editați fișierul:

    sudo nano /usr/bin/add-apt-repository
    
  3. Apăsați în mod repetat tasta săgeată în jos, cu excepția cazului în care ați ajuns la sfârșitul fișierului.

  4. Veți găsi un dacă declarație care arată exact așa:

            dacă se actualizează și nu opțiuni.elimină:
                os.execvp("apt-get", ["apt-get", "actualizare"])
            sys.exit(0)   
    
  5. Scoateți întregul dacă bloc de cod menționat mai sus.

  6. presa Ctrl + X și apoi selectați Y și apăsați INTRODUCE.

Test

Test

Restaurați fișierul

Incurcat?

Fără griji! Dacă alergăm dpkg -S pe dosar, putem vedea:

$ dpkg -S /usr/bin/add-apt-repository 
software-properties-common: /usr/bin/add-apt-repository

Așa că doar fugi:

actualizare sudo apt
sudo cp -r /usr/bin/add-apt-repository /tmp
sudo rm -rf /usr/bin/add-apt-repository
sudo apt install software-properties-common --reinstall
Someone avatar
drapel my
Pentru votantul nostru deștept: Luați în considerare explicația de ce ați votat negativ. Este exact ceea ce și-au dorit. Simțiți-vă liber să editați sau să oferiți sugestii. Spuneți cel puțin un motiv pentru votul negativ. Nu cred că ai votat negativ doar pentru a pierde 1 rep. Luați în considerare să spuneți un motiv, astfel încât pierderea dvs. de 1 rep. să nu fie irosită.
drapel ua
Rupeți o mulțime de lucruri pentru actualizările viitoare. Dacă doriți să utilizați o versiune personalizată, plasați-o în `/usr/local/bin` care ar trebui să apară în `$PATH` înainte de `/usr/bin` și nu este niciodată folosită de programele oficiale. Deci nu veți întrerupe actualizările `apt-add-repository` și revenirea modificării ar necesita doar ștergerea fișierului din `/usr/local/bin`. De asemenea, sugerați un script personalizat care nu poate fi verificat cu ușurință atunci când alte răspunsuri sugerează deja scripturi de wrapper minime, care rezolvă, de asemenea, problema, sunt ușor de înțeles și instalate într-un mod care nu întrerupe actualizările viitoare.
Someone avatar
drapel my
@allo OK, sunt de acord și accept pe deplin preocuparea ta. Cu toate acestea, încă pare să fie cel puțin un răspuns *fin* pentru mine. Deci, nu o voi șterge... Cu toate acestea, nu ezitați să editați și să introduceți îngrijorarea dvs. cu privire la `/usr/local/bin` sau să postați un răspuns nou despre același lucru. *Sugerați, de asemenea, un script personalizat care nu poate fi verificat cu ușurință* Ar fi trebuit să clarific că scriptul a eliminat doar o linie de cod din el, care elimină actualizarea apt.
drapel ua
Nu este un răspuns rău în sine. M-am gândit doar că atunci când cereți detalii de ce cineva îl poate vota negativ, voi încerca să subliniez câteva probleme care ar putea face ca acesta să aibă voturi mai mici decât celelalte răspunsuri. Dacă sugerați să eliminați câteva rânduri, încercați să explicați această schimbare și poate fi cu adevărat utilă. Când versiunea din amonte se poate modifica în viitor, modificările dvs. pot fi aplicate în continuare noii versiuni, dar copia modificată nu va conține actualizările din amonte.
Someone avatar
drapel my
@allo **Se pare că am rezolvat aceste probleme în ultima mea editare.**
drapel us
+1. Cu toate acestea, acest lucru este mult prea complicat.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.