= apt-get
== apt VS apt-get
* [[https://itsfoss.com/apt-vs-apt-get-difference/]]
* [[https://itsfoss.com/apt-get-linux-guide/]]
* [[https://itsfoss.com/apt-command-guide/]]
== sources.list
* copia: **/usr/share/doc/apt/examples/sources.list**
* añadir **universe** y **multiverse**:sudo add-apt-repository universe
sudo add-apt-repository multiverse
== ignore certificate
Cuando estamos en una versión vieja de algún linux (debian 9 strech en este caso), podemos intentar encontrar la manera de actualizar los certificados o simplemente ignorarlo)
Estamos hablando de ignorar que que no se puede verificar la validez del certificado (ataques man-in-the-midle), porque no diponemos de los certificados raiz del que firma ese certificado.
=== añadir (no me funcionó)
* [[https://stackoverflow.com/questions/21181231/server-certificate-verification-failed-cafile-etc-ssl-certs-ca-certificates-c/67698986#67698986]]
* miro quien ha firmado el certificado:echo -n | openssl s_client -showcerts -servername packages.sury.org -connect packages.sury.org:443 2>/dev/null | tac | awk '/-END CERTIFICATE-/{f=1} f;/-BEGIN CERTIFICATE-/{exit}' | tac | openssl x509 -noout -subject -issuer
* respuesta:subject=C = US, O = Internet Security Research Group, CN = ISRG Root X1
issuer=O = Digital Signature Trust Co., CN = DST Root CA X3
* descargo el certificado raiz de Let's Encrypt (https://letsencrypt.org/certificates/)
* verifico e instalo:openssl x509 -noout -text -in isrgrootx1.pem
sudo mv isrgrootx1.pem /usr/local/share/ca-certificates/isrgrootx1.crt
sudo update-ca-certificates
* se supone que añade a **/etc/ssl/certs/ca-certificates.crt** ?
=== ignorar
* [[https://unix.stackexchange.com/questions/317695/is-it-possible-to-have-apt-accept-an-invalid-certificate]]
* ignora el **server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none**:
Acquire::https::packages.sury.org::Verify-Peer "false";
Acquire::https::packages.sury.org::Verify-Host "false";
* solución temporal si ficheros de configuración: apt -o "Acquire::https::Verify-Peer=false" update
== remove app
* ver paquetes instalados: ''apt list %%--%%installed''
* [[https://askubuntu.com/questions/187888/what-is-the-correct-way-to-completely-remove-an-application]]
* ''remove'' : elimina binarios pero no ficheros de configuración
* ''purge'' o '' remove %%--%%purge'' : lo elimnina todo menos las dependencias
* interesante para empezar de cero
* ''autoremove'' : elimina paquetes huérfanos que estaban instalados como dependencia de otros
* ''aptitude remove'' o ''aptitude purge'' : también elimina paquetes no ya requeridos (a menos que los necesite otro paquete). **aptitude** solo recuerda la información de dependencia de los paquetes que han sido instalados desde **aptitude**
* ''sudo apt-get remove "%%^aplicaciont.*%%''
* para averiguar a que paquete pertenece un fichero: ''dpkg -S /path/al/fichero''
== remove unused
* ''apt-get clean'' : eliminar paquetes .deb ya instalados
* ''apt-get autoclean'' : eliminar paquetes que ya no existen en el repositorio o que tienen versiones posteriores
* ''apt-get autoremove'' : eliminar paquetes vinculados a otros y que no son necesarios
* ''apt-get remove %%--%%purge linux-image-X.X.XX-XX-generic'' : eliminar versiones anteriores de kernel
* ''dpkg %%--get-selections%% | grep linux-image''
== apt-mark
marcar paquetes que no serán actualizados.
* ''apt-mark hold ...''
* ''apt-mark unhold ''
* ''apt-mark''
* **auto**: marca los paquetes como instalables automaticamente. Si ningún otro paquete depende de él, se desinstala (como la satisfacción de dependencias cuando instalas un paquete)
* **hold**: paquete retenido
* **manual**: marca los paquetes como instalables manualmente. Aunque no haya paquetes que no dependan de él, no será desinstalado automaticamente.q
* **showauto**: lista de paquetes marcados como automaticos
* **showhold**: lista de paquetes marcados como retenidos
* **showmanual**: lista de paquetes marcados como manual
* **unhold**: desmarca paquete retenido
* ansible:# Prevent nginx from being upgraded
- dpkg_selections:
name: python
selection: hold
# Kept multiple packages back (hold packages)
- dpkg_selections: name={{ item }} selection=hold
with_items:
- apache2
- php7-fpm
- nginx
- mariadb-server
# Removing hold using Ansible
- dpkg_selections:
name: python
selection: install
/via: [[https://www.cyberciti.biz/faq/apt-get-hold-back-packages-command/]]
== apt-file
* equivalente a ''yum provides''
* ''apt install apt-file''
* ''apt-file update''
* ''apt-file search ''
/via: [[https://sysadmincasts.com/episodes/41-cli-monday-apt-file-and-yum-provides]]
== comandos
=== apt-get
* ''apt-get update'' : actualiza la lista de paquetes de los repositorios indicados en sources.list. Es lo primero que se debe hacer antes de instalar nada.
* ''apt-get install '' : una vez conocemos el paquete que queremos instalar, lo indicamos y a descargar. APT-GET nos informará de que se descarga, que se actualiza, que otros paquetes se instalan relacionados con este, la cantidad de espacio que ocupará, etc...
* ''apt-get upgrade'': actualiza los paquetes de soft instalados en el sistema.
* ''apt-get dist-upgrade'' : actualiza paquetes de la distribución.
* ''apt-get remove '' : elimina el paquete del sistema
* ''apt-get clean'' : Limpiar cache de aplicaciones instaladas
* ''apt-get autoclean'' : Limpiar aplicaciones no instaladas
* ''apt-get autoremove'' : Limpiar posibles dependencias de aplicaciones desinstaladas
* ''apt-get install -d'' : %%--%%download-only %%--%%no-download
* ''apt-get download ''
* ''apt-get install -s'' : %%--%%simulate
* ''apt-get install %%--%%reinstall ''
=== apt
* ''apt list %%--%%installed | grep libc6''
=== apt-cache
* ''apt-cache search '' : sirve para buscar la en los repositorios y ver si encontramos el paquete que coincida. A veces ayuda si ya sabes el nombre del paquete ;)
* ''apt-cache policy'' : comprueba el estado de los repositorios existentes
=== apt-file
* sudo apt install apt-file
sudo apt-file update
* ''apt-file search '' : busca en que paquete está un determinado archivo
* ''apt-file list '' : lista los ficheros contenidos en un paquete
=== versiones
se puede mirar qué versión específica de un paquete hay disponible e instalarla:
apt-cache madison
apt-get install =
== otros
* herramienta que chequea todas las dependencias de un paquete : ''$ apt-rdepends ''
* se puede instalar directamente desde repositorio: ''$ apt-get install apt-rdepends''
* [[linux:aptget:repositorios]]
* ''apt-file'': busca que paquete tiene un fichero en concreto (búsqueda de comandos)
* ''sudo apt-file update''
* [[https://sysadmincasts.com/episodes/41-cli-monday-apt-file-and-yum-provides]]
== casos de uso
=== update kernel
* ''apt-cache search linux-image''
* ''sudo apt-get install ''
* forzar el repositorio que queremos usar: ''sudo apt-get install -t wheezy-backports linux-image-amd64''
=== caso de uso, comandos ejemplo
* ''apt-cache show linux-image-amd64''
* ''apt-cache policy linux-image-amd64''
/via: [[https://serverfault.com/questions/670088/install-debian-backports-kernel-automatically]]
== trucos
===solucionar bloqueo "lock"
''E: Could not get lock /var/lib/apt/lists/lock - open (11: Resource temporarily unavailable)''
-> ''sudo rm /var/lib/apt/lists/lock''
=== proxy debian 10 buster
http_proxy=ipserverproxy:Puerto
https_proxy=ipserverproxy:Puerto
ftp_proxy=ipserverproxy:Puerto
# con autentificación
http_proxy=user:password@ipserverproxy:Puerto
https_proxy=user:password@ipserverproxy:Puerto
ftp_proxy=user:password@ipserverproxy:Puerto
Acquire {
HTTP::proxy "http://PROXYSERVERIP:PROXYPORT";
HTTPS::proxy "http://PROXYSERVERIP:PROXYPORT";
}
# con autentificación (sin agrupar es opcional)
Acquire::http::Proxy «http://usuario:password@ipserverproxy:puerto»;
Acquire::ftp::Proxy «ftp://usuario:password@ipserverproxy:puerto»;
/via:
* [[https://kifarunix.com/configure-apt-proxy-on-debian-10-buster/]]
* [[https://www.sugeek.co/configurar-proxy-en-debian-por-consola/]]
===proxy con autentificación
editar con este comando: ''sudo gedit /etc/apt/apt.conf'' o si hemos hecho el paso ubuntu 11.10 hacer solo esto: ''sudo cp /etc/apt/apt.conf.d/02proxy /etc/apt/apt.conf''
Acquire::http::Proxy “http://usuario:contraseña@proxy:puerto″;
Acquire::https::Proxy “http://usuario:contraseña@proxy:puerto″;
Acquire::ftp::Proxy “http://usuario:contraseña@proxy:puerto″;
Acquire::socks::Proxy “http://usuario:contraseña@proxy:puerto″;
fuente: [[http://www.linuxquestions.org/questions/ubuntu-63/problems-with-apt-get-synaptic-and-proxy-454026/]]
===proxy con autentificación (a partir de ubuntu 11.10?)
editar con este comando: ''sudo gedit /etc/apt/apt.conf.d/02proxy''
añadir:
Acquire::http::Proxy “http://usuario:contraseña@proxy:puerto″;
Acquire::https::Proxy “http://usuario:contraseña@proxy:puerto″;
Acquire::ftp::Proxy “http://usuario:contraseña@proxy:puerto″;
Acquire::socks::Proxy “http://usuario:contraseña@proxy:puerto″;
fuente: [[http://naveenubuntu.blogspot.com.es/2011/09/updating-packages-behind-prxy-in-ubuntu.html]]