Ambdós costats versió prèvia Revisió prèvia Següent revisió | Revisió prèvia |
linux:aptget:apt [10/03/2020 00:59] – [proxy debian 10 buster] mate | linux:aptget:apt [10/03/2025 03:03] (actual) – admin |
---|
* [[https://itsfoss.com/apt-command-guide/]] | * [[https://itsfoss.com/apt-command-guide/]] |
| |
| == sources.list |
| * copia: **/usr/share/doc/apt/examples/sources.list** |
| * añadir **universe** y **multiverse**:<code bash>sudo add-apt-repository universe |
| sudo add-apt-repository multiverse</code> |
| |
| == 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:<code bash>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</code> |
| * respuesta:<code>subject=C = US, O = Internet Security Research Group, CN = ISRG Root X1 |
| issuer=O = Digital Signature Trust Co., CN = DST Root CA X3</code> |
| * descargo el certificado raiz de Let's Encrypt (https://letsencrypt.org/certificates/) |
| * verifico e instalo:<code bash>openssl x509 -noout -text -in isrgrootx1.pem |
| sudo mv isrgrootx1.pem /usr/local/share/ca-certificates/isrgrootx1.crt |
| sudo update-ca-certificates |
| </code> |
| * 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**:<code; /etc/apt/apt.conf.d/80ssl-exceptions.conf> |
| Acquire::https::packages.sury.org::Verify-Peer "false"; |
| Acquire::https::packages.sury.org::Verify-Host "false"; |
| </code> |
| * solución temporal si ficheros de configuración: <code bash>apt -o "Acquire::https::Verify-Peer=false" update</code> |
== remove app | == remove app |
* ver paquetes instalados: ''apt list %%--%%installed'' | * ver paquetes instalados: ''apt list %%--%%installed'' |
* [[https://askubuntu.com/questions/187888/what-is-the-correct-way-to-completely-remove-an-application]] | * [[https://askubuntu.com/questions/187888/what-is-the-correct-way-to-completely-remove-an-application]] |
* ''remove'' : elimina binarios pero no ficheros de configuración | * ''remove'' : elimina binarios pero no ficheros de configuración |
* ''purge'' o '' remove --purge'' : lo elimnina todo menos las dependencias | * ''purge'' o '' remove %%--%%purge'' : lo elimnina todo menos las dependencias |
* interesante para empezar de cero | * interesante para empezar de cero |
* ''autoremove'' : elimina paquetes huérfanos que estaban instalados como dependencia de otros | * ''autoremove'' : elimina paquetes huérfanos que estaban instalados como dependencia de otros |
* ''aptitude renove'' 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** | * ''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.*%%'' | * ''sudo apt-get remove "%%^aplicaciont.*%%'' |
* para averiguar a que paquete pertenece un fichero: ''dpkg -S /path/al/fichero'' | * para averiguar a que paquete pertenece un fichero: ''dpkg -S /path/al/fichero'' |
* ''apt-get autoclean'' : eliminar paquetes que ya no existen en el repositorio o que tienen versiones posteriores | * ''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 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 | * ''apt-get remove %%--%%purge linux-image-X.X.XX-XX-generic'' : eliminar versiones anteriores de kernel |
* ''dpkg %%--get-selections%% | grep linux-image'' | * ''dpkg %%--get-selections%% | grep linux-image'' |
| |
| == apt-mark |
| marcar paquetes que no serán actualizados. |
| * ''apt-mark hold <paquete> <paquete>...'' |
| * ''apt-mark unhold <paquete>'' |
| * ''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:<code yaml># 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</code> |
| /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 <file>'' |
| /via: [[https://sysadmincasts.com/episodes/41-cli-monday-apt-file-and-yum-provides]] |
== comandos | == comandos |
* ''$ 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 |
* ''$ apt-get install <paquete>'' : 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 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 upgrade'': actualiza los paquetes de soft instalados en el sistema. | * ''apt-get install <paquete>'' : 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-cache search <cadena>'' : sirve para buscar la <cadena> en los repositorios y ver si encontramos el paquete que coincida. A veces ayuda si ya sabes el nombre del paquete ;) | * ''apt-get upgrade'': actualiza los paquetes de soft instalados en el sistema. |
* ''$ apt-get dist-upgrade'' : actualiza paquetes de la distribución. | * ''apt-get dist-upgrade'' : actualiza paquetes de la distribución. |
* ''$ apt-get remove <paquete>'' : elimina el paquete del sistema | * ''apt-get remove <paquete>'' : elimina el paquete del sistema |
* ''$ apt-get clean'' : Limpiar cache de aplicaciones instaladas | * ''apt-get clean'' : Limpiar cache de aplicaciones instaladas |
* ''$ apt-get autoclean'' : Limpiar aplicaciones no instaladas | * ''apt-get autoclean'' : Limpiar aplicaciones no instaladas |
* ''$ apt-get autoremove'' : Limpiar posibles dependencias de aplicaciones desinstaladas | * ''apt-get autoremove'' : Limpiar posibles dependencias de aplicaciones desinstaladas |
* ''$ apt-get install <paquete> -d'' : --download-only --no-download | * ''apt-get install <paquete> -d'' : %%--%%download-only %%--%%no-download |
* ''$ apt-get download <paquete>'' | * ''apt-get download <paquete>'' |
* ''$ apt-get install <paquete> -s'' : --simulate | * ''apt-get install <paquete> -s'' : %%--%%simulate |
* ''$ apt-get install -reinstall <paquete>'' | * ''apt-get install %%--%%reinstall <paquete>'' |
* ''$ apt-file search <fichero>'' : busca en que paquete está un determinado archivo | |
* ''$ apt-file list <paquete>'' : lista los ficheros contenidos en un paquete | === apt |
| * ''apt list %%--%%installed | grep libc6'' |
| === apt-cache |
| * ''apt-cache search <cadena>'' : sirve para buscar la <cadena> 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 |
| * <code bash>sudo apt install apt-file |
| sudo apt-file update</code> |
| * ''apt-file search <fichero>'' : busca en que paquete está un determinado archivo |
| * ''apt-file list <paquete>'' : lista los ficheros contenidos en un paquete |
| |
=== versiones | === versiones |
se puede mirar que versión específica de un paquete hay disponible e instalarla: | se puede mirar qué versión específica de un paquete hay disponible e instalarla: |
<code bash>apt-cache madison <paquete></code> | <code bash>apt-cache madison <paquete></code> |
<code bash>apt-get install <paquete>=<version></code> | <code bash>apt-get install <paquete>=<version></code> |
* se puede instalar directamente desde repositorio: ''$ apt-get install apt-rdepends'' | * se puede instalar directamente desde repositorio: ''$ apt-get install apt-rdepends'' |
* [[linux:aptget:repositorios]] | * [[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 | == casos de uso |
* ''apt-cache policy linux-image-amd64'' | * ''apt-cache policy linux-image-amd64'' |
/via: [[https://serverfault.com/questions/670088/install-debian-backports-kernel-automatically]] | /via: [[https://serverfault.com/questions/670088/install-debian-backports-kernel-automatically]] |
| |
| |
== crear paquete .deb | |
para crear un paquete en el que incluir el software que queramos distribuir (por la razón que sea) hemos de: | |
- crear una estructura de directorios determinada (ver más adelante) | |
- ejecutar <code bash>dpkg-deb -b <PATH>/ .</code> | |
=== estructura directorio | |
<code> | |
.—— DEBIAN | |
¦ ¦—— control | |
¦—— <ubicación archivos en root sistema> | |
¦—— <ubicación archivos en root sistema> | |
</code> | |
<code txt control> | |
Package: ibscanultimate | |
Version: 3.0.0-1 | |
Maintainer: You <whatever@contact.address> | |
Architecture: amd64 | |
Description: IBScanUltimate | |
Software for the integrated biomedics kojak scanner | |
</code> | |
| |
ejemplo: {{ :linux:aptget:construccio_manual_paquet_debian.tar.gz |}} | |
| |
== trucos | == trucos |