Muestra las diferencias entre dos versiones de la página.
Revisión previa | |||
— | guias:debian_jessie_post_instalacion [2021/04/16 20:41] (actual) – editor externo 127.0.0.1 | ||
---|---|---|---|
Línea 1: | Línea 1: | ||
+ | ====== Debian Jessie, post instalación ====== | ||
+ | ===== Introducción ===== | ||
+ | |||
+ | Mi portátil es un ordenador Acer 5755G con las siguientes características: | ||
+ | |||
+ | * Core i5 2430M 2.4GHz | ||
+ | * NVIDIA Geforce GT 540M | ||
+ | * 8Gb RAM | ||
+ | * 750Gb HD | ||
+ | |||
+ | Mi portátil equipa una tarjeta _Nvidia Geforce GT540M_ que resulta pertenecer a una rama muerta en el árbol de desarrollo de Nvidia. | ||
+ | |||
+ | La gráfica es una Nvidia Optimus, es decir una tarjeta híbrida que funcionaba perfectamente en Ubuntu 14.04 usando Bumblebee. | ||
+ | |||
+ | Con el paso a Ubuntu **Xenial Xerus** | ||
+ | |||
+ | A mayores me encontré también con problemas insalvables (para mi) para instalar el Virtual Box así que decidí volver a Debian. | ||
+ | |||
+ | Para hacer la actualización del sistema opté por desinstalar el dvd y montar en su lugar un disco SSD en un Caddie para Acer. La instalación fué muy fácil, y aunque el portátil arranca perfectamente de cualquiera de los dos discos, finalmente opté por instalar el SSD en la bahía interna del HD original y pasar el HD al caddie. | ||
+ | |||
+ | Una vez instalado el sistema operativo, lo primero fue la instalación del Bumblebee para probar que funcionaba normalmente. | ||
+ | |||
+ | < | ||
+ | sudo apt-get install firmware-linux-nonfree Bumblebee-nvidia primus | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Cambiar las opciones de idioma ===== | ||
+ | |||
+ | Ejecutamos: | ||
+ | |||
+ | < | ||
+ | sudo dpkg-reconfigure locales | ||
+ | </ | ||
+ | Y después solo tenemos que cambiar la selección del idioma en la configuración de Gnome. | ||
+ | |||
+ | Nos pedirá rearrancar Gnome y renombrará todos los directorios de sistema. | ||
+ | |||
+ | ===== Gestión de paquetes ===== | ||
+ | |||
+ | Instalamos // | ||
+ | |||
+ | < | ||
+ | sudo apt-get install aptitude | ||
+ | sudo apt-get install synaptic | ||
+ | sudo apt-get install gdebi | ||
+ | </ | ||
+ | Cambiamos las opciones de // | ||
+ | |||
+ | ==== Quitamos el cdrom de los sources.list ==== | ||
+ | |||
+ | Editamos el fichero /// | ||
+ | |||
+ | |||
+ | ==== Habilitamos los backports y multimedia ==== | ||
+ | |||
+ | === Backports: === | ||
+ | |||
+ | < | ||
+ | sudo cat> / | ||
+ | # backports | ||
+ | deb http:// | ||
+ | EOF | ||
+ | </ | ||
+ | |||
+ | |||
+ | === Multimedia: === | ||
+ | |||
+ | < | ||
+ | sudo cat>> / | ||
+ | # multimedia | ||
+ | deb http:// | ||
+ | EOF | ||
+ | |||
+ | sudo apt-get -y --allow-unauthenticated install --reinstall deb-multimedia-keyring | ||
+ | </ | ||
+ | |||
+ | Y actualizamos: | ||
+ | |||
+ | < | ||
+ | sudo aptitude update | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Instalación de varios paquetes sueltos ===== | ||
+ | |||
+ | ==== Programas de utilidad y uso frecuente ==== | ||
+ | |||
+ | === Menulibre === | ||
+ | |||
+ | Un editor de menús para Gnome, nos permite generar los archivos desktop para cualquier aplicación. Mucho más completo que // | ||
+ | |||
+ | < | ||
+ | sudo apt-get install menulibre | ||
+ | </ | ||
+ | === Terminator === | ||
+ | |||
+ | Terminator es un emulador de terminal muy completo y muy flexible. Los instalamos desde // | ||
+ | |||
+ | < | ||
+ | sudo aptitude install terminator python-keybinder | ||
+ | </ | ||
+ | === Keepass2 === | ||
+ | |||
+ | Instalado // | ||
+ | |||
+ | < | ||
+ | sudo aptitude install keepass2 | ||
+ | </ | ||
+ | === gksu === | ||
+ | |||
+ | Un //sudo// en modo gráfico: | ||
+ | |||
+ | < | ||
+ | sudo aptitude install gksu | ||
+ | </ | ||
+ | **Muy importante** ejecutar '' | ||
+ | |||
+ | === Diskmanager === | ||
+ | |||
+ | Para gestionar discos portátiles | ||
+ | |||
+ | < | ||
+ | sudo apt-get install ntfs-3g disk-manager | ||
+ | </ | ||
+ | === Gnucash === | ||
+ | |||
+ | Finanzas en linux | ||
+ | |||
+ | < | ||
+ | sudo apt-get -t jessie-backports install gnucash | ||
+ | </ | ||
+ | === Herramientas sync === | ||
+ | |||
+ | No sin mis //backups// | ||
+ | |||
+ | < | ||
+ | sudo apt-get install rsync grsync | ||
+ | </ | ||
+ | === Dropbox === | ||
+ | |||
+ | Bajado el paquete Debian desde la página [[https:// | ||
+ | |||
+ | === Compresores et al === | ||
+ | |||
+ | < | ||
+ | sudo apt-get install rar unrar zip unzip unace bzip2 lzop p7zip p7zip-full p7zip-rar | ||
+ | </ | ||
+ | === Freeplane === | ||
+ | |||
+ | Mejor que [[http:// | ||
+ | |||
+ | === Telegram desktop === | ||
+ | |||
+ | El cliente de mensajeria de Telegram. Descargado desde la web, instalado en //~/apps// | ||
+ | |||
+ | ===== Internet ===== | ||
+ | |||
+ | ==== Chrome y Chromium ==== | ||
+ | |||
+ | Instalado /Chrome/ añadiendo fuentes a /aptitude/. No recuerdo como las añadí, pero en el fichero /// | ||
+ | |||
+ | < | ||
+ | ### | ||
+ | ### | ||
+ | ### | ||
+ | ### | ||
+ | ### THIS FILE IS AUTOMATICALLY CONFIGURED ### | ||
+ | # You may comment out this entry, but any other modifications may be lost. | ||
+ | deb [arch=amd64] http:// | ||
+ | </ | ||
+ | Ejecutamos: | ||
+ | |||
+ | < | ||
+ | sudo aptitude install google-chrome-stable | ||
+ | sudo aptitude install chromium | ||
+ | </ | ||
+ | ==== Tor ==== | ||
+ | |||
+ | Bajado el comprimido desde la [[https:// | ||
+ | |||
+ | ==== Deluge ==== | ||
+ | |||
+ | Mi aplicación para descarga de torrents. | ||
+ | |||
+ | Instalamos desde aptitude | ||
+ | |||
+ | < | ||
+ | sudo aptitude install deluge | ||
+ | xdg-mime default deluge.desktop x-scheme-handler/ | ||
+ | </ | ||
+ | ==== TiddlyDesktop ==== | ||
+ | |||
+ | //Tiddly// es una wiki auto-contenida y muy flexible, tiene un sinfin de versiones adaptadas para diferentes usos. Hace años que la uso como cuaderno de bitácora personal, pero no había seguido su evolución. | ||
+ | |||
+ | Me he descargado: | ||
+ | |||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | |||
+ | A mayores me he instalado la aplicación [[https:// | ||
+ | |||
+ | Como siempre la instalamos en //~/apps// y creamos un lanzador con // | ||
+ | |||
+ | ===== Gráficos ===== | ||
+ | |||
+ | ==== Inkscape ==== | ||
+ | |||
+ | El programa libre para creación y edición de gráficos vectoriales. | ||
+ | |||
+ | < | ||
+ | apt-cache policy inkscape | ||
+ | apt-get -t jessie-backports install inkscape | ||
+ | aptitude install ink-generator | ||
+ | </ | ||
+ | ==== LibreCAD y FreeCAD ==== | ||
+ | |||
+ | Imprescindibles para el diseño y creación de cacharros. | ||
+ | |||
+ | Instalado desde repos con aptitude | ||
+ | |||
+ | < | ||
+ | apt-get install librecad | ||
+ | |||
+ | apt-get -t jessie-backports install freecad | ||
+ | </ | ||
+ | ==== Gimp ==== | ||
+ | |||
+ | El programa libre por excelencia de edición y retocado de imágenes. | ||
+ | |||
+ | Gimp ya estaba instalado, adicionalmente instalado el gimp data-extra | ||
+ | |||
+ | < | ||
+ | sudo aptitude install gimp-plugin-registry gimp-texturize gimp-data-extras gimp-gap | ||
+ | </ | ||
+ | |||
+ | ==== Shutter ==== | ||
+ | |||
+ | Un programa de captura de pantallas que permite editarlas rápidamente: | ||
+ | |||
+ | < | ||
+ | sudo aptitude install shutter libgoo-canvas-perl | ||
+ | </ | ||
+ | |||
+ | ==== Pencil ==== | ||
+ | |||
+ | Es una aplicación para hacer bocetos y diseño de páginas web. Probablemente no la necesitas. | ||
+ | |||
+ | Descargar la última versión (paquete Debian) | ||
+ | desde [[http:// | ||
+ | listo. Puede dar problemas si usamos Iceweasel, ya que el paquete | ||
+ | depende de Firefox. Más | ||
+ | info [[https:// | ||
+ | |||
+ | |||
+ | ==== Fotografía ==== | ||
+ | |||
+ | === Rawtherapee y Darktable: Tratamiento de imágenes fotogŕaficas === | ||
+ | |||
+ | Si te gusta la fotografía y/o tienes una cámara reflex, | ||
+ | definitivamente necesitas estas aplicaciones. | ||
+ | |||
+ | < | ||
+ | sudo aptitude install icc-profiles icc-profiles-free | ||
+ | sudo aptitude install rawtherapee darktable | ||
+ | </ | ||
+ | |||
+ | === Stopmotion === | ||
+ | |||
+ | Para hacer pélis de animación Stopmotion. | ||
+ | |||
+ | < | ||
+ | sudo aptitude install stopmotion vgrabbj dvgrab | ||
+ | </ | ||
+ | |||
+ | TODO: Probar qStopmotion | ||
+ | |||
+ | ===== Audio y video ===== | ||
+ | |||
+ | ==== Codecs ==== | ||
+ | |||
+ | Instalamos los codecs | ||
+ | |||
+ | < | ||
+ | sudo apt-get install libav-tools | ||
+ | |||
+ | sudo apt-get install faad gstreamer0.10-ffmpeg gstreamer0.10-x \ | ||
+ | gstreamer0.10-fluendo-mp3 gstreamer0.10-plugins-base \ | ||
+ | gstreamer0.10-plugins-good gstreamer0.10-plugins-bad \ | ||
+ | gstreamer0.10-plugins-ugly ffmpeg lame twolame vorbis-tools \ | ||
+ | libquicktime2 libfaac0 libmp3lame0 libxine2-all-plugins libdvdread4 \ | ||
+ | libdvdnav4 libmad0 sox libxvidcore4 libstdc++5 | ||
+ | |||
+ | sudo apt-get install w64codecs | ||
+ | </ | ||
+ | ==== Reproductores de música ==== | ||
+ | |||
+ | Instalamos // | ||
+ | |||
+ | < | ||
+ | sudo aptitude install clementine gstreamer0.10-plugins-bad | ||
+ | sudo aptitude install decibel-audio-player audacity soundconverter | ||
+ | </ | ||
+ | ==== Gpodder ==== | ||
+ | |||
+ | Instalamos //gpodder// para gestionar nuestros podcast, aunque // | ||
+ | |||
+ | < | ||
+ | sudo aptitude install gpodder | ||
+ | </ | ||
+ | ==== Spotify ==== | ||
+ | |||
+ | Cliente de //Spotify// | ||
+ | |||
+ | < | ||
+ | sudo apt-key adv --keyserver hkp:// | ||
+ | echo deb http:// | ||
+ | sudo aptitude update | ||
+ | sudo aptitude install spotify-client | ||
+ | </ | ||
+ | ==== Video ==== | ||
+ | |||
+ | Instalamos también utilidades de video: | ||
+ | |||
+ | < | ||
+ | sudo aptitude install vlc browser-plugin-vlc | ||
+ | sudo aptitude install recordmydesktop gtk-recordmydesktop | ||
+ | sudo aptitude install vokoscreen | ||
+ | sudo aptitude install handbrake handbrake-cli handbrake-gtk | ||
+ | </ | ||
+ | ===== Seguridad ===== | ||
+ | ==== Lector de DNIe ==== | ||
+ | |||
+ | Instalamos: | ||
+ | |||
+ | < | ||
+ | sudo aptitude libccid install pcscd pcsc-tools | ||
+ | </ | ||
+ | Como root ejecutamos // | ||
+ | )): | ||
+ | |||
+ | < | ||
+ | root@rasalhague: | ||
+ | PC/SC device scanner | ||
+ | V 1.4.23 (c) 2001-2011, Ludovic Rousseau < | ||
+ | Compiled with PC/SC lite version: 1.8.11 | ||
+ | Using reader plug'n play mechanism | ||
+ | Scanning present readers... | ||
+ | Waiting for the first reader... | ||
+ | </ | ||
+ | Si insertamos el lector veremos algo como esto: | ||
+ | |||
+ | < | ||
+ | root@rasalhague: | ||
+ | PC/SC device scanner | ||
+ | V 1.4.23 (c) 2001-2011, Ludovic Rousseau < | ||
+ | Compiled with PC/SC lite version: 1.8.11 | ||
+ | Using reader plug'n play mechanism | ||
+ | Scanning present readers... | ||
+ | Waiting for the first reader...found one | ||
+ | Scanning present readers... | ||
+ | 0: C3PO LTC31 v2 (11061005) 00 00 | ||
+ | |||
+ | Wed Jan 25 01:17:20 2017 | ||
+ | Reader 0: C3PO LTC31 v2 (11061005) 00 00 | ||
+ | Card state: Card removed, | ||
+ | </ | ||
+ | Si insertamos un DNI veremos que se lee la información de la tarjeta insertada: | ||
+ | |||
+ | < | ||
+ | Reader 0: C3PO LTC31 v2 (11061005) 00 00 | ||
+ | Card state: Card inserted, | ||
+ | y mas rollo | ||
+ | </ | ||
+ | Instalamos ahora: | ||
+ | |||
+ | < | ||
+ | aptitude install pinentry-gtk2 opensc | ||
+ | </ | ||
+ | |||
+ | ==== wire ==== | ||
+ | |||
+ | Un cliente de mensajeria seguro. | ||
+ | |||
+ | < | ||
+ | sudo aptitude install apt-transport-https | ||
+ | wget -q https:// | ||
+ | echo "deb https:// | ||
+ | sudo aptitude update | ||
+ | sudo aptitude install wire-desktop | ||
+ | </ | ||
+ | ===== Documentos ===== | ||
+ | |||
+ | ==== Calibre ==== | ||
+ | |||
+ | El mejor programa para gestionar tu colección de libros electrónicos. | ||
+ | |||
+ | Ejecutamos lo que manda la página web: | ||
+ | |||
+ | < | ||
+ | sudo -v && wget -nv -O- https:// | ||
+ | | sudo python -c " | ||
+ | </ | ||
+ | Para usar el calibre con el Kobo Glo: | ||
+ | |||
+ | * Desactivamos todos los plugin de Kobo menos el //Kobo Touch Extended// | ||
+ | * Creamos una columna // | ||
+ | * En las opciones del plugin: | ||
+ | * En la opción // | ||
+ | * Marcamos las opciones //Create collections// | ||
+ | * //Update metadata on device// y //Set series information// | ||
+ | |||
+ | Algunos enlaces útiles: | ||
+ | |||
+ | * https:// | ||
+ | * http:// | ||
+ | * http:// | ||
+ | * https:// | ||
+ | |||
+ | ==== Pandoc ==== | ||
+ | |||
+ | Instalado el Pandoc descargando paquete //deb// desde la página web del Pandoc. | ||
+ | |||
+ | Descargamos las plantillas desde [[https:// | ||
+ | |||
+ | < | ||
+ | cd ~/.pandoc | ||
+ | git clone https:// | ||
+ | </ | ||
+ | ==== Zotero ==== | ||
+ | |||
+ | Zotero es un programa que te permite guardar una o varias bibliografías con referencias a libros, páginas web o documentos electrónicos. | ||
+ | |||
+ | Instalado el Zotero Standalone desde la [[https:// | ||
+ | |||
+ | ==== Vanilla LaTeX ==== | ||
+ | |||
+ | El LaTeX de Debian está un poquillo anticuado, si se quiere usar una versión reciente hay que aplicar [[http:// | ||
+ | |||
+ | < | ||
+ | cd ~ | ||
+ | mkdir tmp | ||
+ | cd tmp | ||
+ | wget http:// | ||
+ | tar xzf install-tl-unx.tar.gz | ||
+ | cd install-tl-xxxxxx | ||
+ | </ | ||
+ | La parte xxxxxx varía en función del estado de la última versión de LaTeX disponible. | ||
+ | |||
+ | < | ||
+ | sudo ./ | ||
+ | </ | ||
+ | Una vez lanzada la instalación podemos desmarcar las opciones que instalan la documentación y las fuentes. Eso nos obligará a consultar la documentación //on line// pero ahorrará practicamente el 50% del espacio necesario. En mi caso sin //doc// ni //src// ocupa 2,3Gb | ||
+ | |||
+ | < | ||
+ | mkdir -p /opt | ||
+ | sudo ln -s / | ||
+ | </ | ||
+ | Por último para acabar la instalación añadimos **/ | ||
+ | |||
+ | === Falsificando paquetes === | ||
+ | |||
+ | Ya tenemos el **texlive** instalado, ahora necesitamos que el gestor de paquetes sepa que ya lo tenemos instalado. | ||
+ | |||
+ | < | ||
+ | sudo apt-get install equivs --no-install-recommends | ||
+ | mkdir -p / | ||
+ | equivs-control texlive-local | ||
+ | </ | ||
+ | Para hacerlo más fácil podemos descargarnos un fichero ya preparado, ejecutando: | ||
+ | |||
+ | < | ||
+ | wget http:// | ||
+ | /bin/cp -f debian-equivs-2015-ex.txt texlive-local | ||
+ | </ | ||
+ | Editamos la versión y | ||
+ | |||
+ | < | ||
+ | equivs-build texlive-local | ||
+ | sudo dpkg -i texlive-local_2015-1_all.deb | ||
+ | </ | ||
+ | Todo listo, ahora podemos instalar cualquier paquete que dependa de texlive | ||
+ | |||
+ | === Fuentes === | ||
+ | |||
+ | Para dejar disponibles las fuentes opentype y truetype que vienen con texlive para el resto de aplicaciones: | ||
+ | |||
+ | < | ||
+ | sudo cp $(kpsewhich -var-value TEXMFSYSVAR)/ | ||
+ | gksudo gedit / | ||
+ | </ | ||
+ | Borramos la linea: | ||
+ | |||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | Y ejecutamos: | ||
+ | |||
+ | < | ||
+ | sudo fc-cache -fsv | ||
+ | </ | ||
+ | === Actualizaciones === | ||
+ | |||
+ | Para actualizar nuestro latex a la última versión de todos los paquetes: | ||
+ | |||
+ | < | ||
+ | sudo / | ||
+ | sudo / | ||
+ | </ | ||
+ | También podemos lanzar el instalador gráfico con: | ||
+ | |||
+ | < | ||
+ | sudo / | ||
+ | </ | ||
+ | Para usar el instalador gráfico hay que instalar previamente: | ||
+ | |||
+ | < | ||
+ | sudo apt-get install perl-tk --no-install-recommends | ||
+ | </ | ||
+ | === Lanzador para el actualizador de texlive === | ||
+ | |||
+ | < | ||
+ | mkdir -p ~/ | ||
+ | /bin/rm ~/ | ||
+ | cat > ~/ | ||
+ | [Desktop Entry] | ||
+ | Version=1.0 | ||
+ | Name=TeX Live Manager | ||
+ | Comment=Manage TeX Live packages | ||
+ | GenericName=Package Manager | ||
+ | Exec=gksu -d -S -D "TeX Live Manager" | ||
+ | Terminal=false | ||
+ | Type=Application | ||
+ | Icon=system-software-update | ||
+ | EOF | ||
+ | </ | ||
+ | Ojo que hay que dejar instalado el gksu (aunque debería estar de antes si sigues este doc) | ||
+ | |||
+ | < | ||
+ | sudo aptitude install gksu | ||
+ | </ | ||
+ | ==== Emacs ==== | ||
+ | |||
+ | Instalado emacs desde los repos: | ||
+ | |||
+ | < | ||
+ | sudo aptitude install emacs | ||
+ | </ | ||
+ | Instalamos los paquetes // | ||
+ | |||
+ | También instalamos //d-mode// y // | ||
+ | |||
+ | Después de probar //flymake// y // | ||
+ | |||
+ | Configuramos el fichero //.emacs// definimos algunas preferencias, | ||
+ | |||
+ | < | ||
+ | (custom-set-variables | ||
+ | ;; custom-set-variables was added by Custom. | ||
+ | ;; If you edit it by hand, you could mess it up, so be careful. | ||
+ | ;; Your init file should contain only one such instance. | ||
+ | ;; If there is more than one, they won't work right. | ||
+ | ' | ||
+ | (custom-set-faces | ||
+ | ;; custom-set-faces was added by Custom. | ||
+ | ;; If you edit it by hand, you could mess it up, so be careful. | ||
+ | ;; Your init file should contain only one such instance. | ||
+ | ;; If there is more than one, they won't work right. | ||
+ | ) | ||
+ | |||
+ | ;; | ||
+ | ;; Some settings | ||
+ | (setq inhibit-startup-message t) ; Eliminate FSF startup msg | ||
+ | (setq frame-title-format " | ||
+ | ;(setq visible-bell t) ; Flash instead of beep | ||
+ | (set-scroll-bar-mode ' | ||
+ | (show-paren-mode t) ; Blinking cursor shows matching parentheses | ||
+ | (setq column-number-mode t) ; Show column number of current cursor location | ||
+ | (mouse-wheel-mode t) ; wheel-mouse support | ||
+ | |||
+ | (setq fill-column 78) | ||
+ | (setq auto-fill-mode t) ; Set line width to 78 columns... | ||
+ | |||
+ | (setq-default indent-tabs-mode nil) ; Insert spaces instead of tabs | ||
+ | (global-set-key " | ||
+ | ; | ||
+ | ;(require ' | ||
+ | |||
+ | |||
+ | ;; | ||
+ | ;; Some useful key definitions | ||
+ | (define-key global-map [M-S-down-mouse-3] ' | ||
+ | (global-set-key [C-tab] ' | ||
+ | (global-set-key [C-kp-subtract] ' | ||
+ | (global-set-key [C-kp-multiply] ' | ||
+ | (global-set-key [C-kp-add] ' | ||
+ | (global-set-key [C-kp-divide] ' | ||
+ | (global-set-key [C-kp-decimal] ' | ||
+ | (global-set-key [C-M-prior] ' | ||
+ | (global-set-key [C-M-next] ' | ||
+ | |||
+ | ;; | ||
+ | ;; Set encoding | ||
+ | (prefer-coding-system ' | ||
+ | (setq coding-system-for-read ' | ||
+ | (setq coding-system-for-write ' | ||
+ | |||
+ | ;; | ||
+ | ;; Maximum colors | ||
+ | (cond ((fboundp ' | ||
+ | | ||
+ | (setq font-lock-maximum-decoration t))) ; Maximum colors | ||
+ | |||
+ | ;; | ||
+ | ;; Use % to match various kinds of brackets... | ||
+ | ;; See: http:// | ||
+ | |||
+ | (global-set-key " | ||
+ | (defun match-paren (arg) | ||
+ | "Go to the matching paren if on a paren; otherwise insert %." | ||
+ | (interactive " | ||
+ | (let ((prev-char (char-to-string (preceding-char))) | ||
+ | (next-char (char-to-string (following-char)))) | ||
+ | (cond ((string-match " | ||
+ | ((string-match " | ||
+ | (t (self-insert-command (or arg 1)))))) | ||
+ | |||
+ | ;; | ||
+ | ;; The wonderful bubble-buffer | ||
+ | (defvar LIMIT 1) | ||
+ | (defvar time 0) | ||
+ | (defvar mylist nil) | ||
+ | |||
+ | (defun time-now () | ||
+ | (car (cdr (current-time)))) | ||
+ | |||
+ | (defun bubble-buffer () | ||
+ | | ||
+ | (if (or (> (- (time-now) time) LIMIT) (null mylist)) | ||
+ | | ||
+ | (delq (get-buffer " *Minibuf-0*" | ||
+ | (delq (get-buffer " *Minibuf-1*" | ||
+ | | ||
+ | (setq mylist (cdr mylist)) | ||
+ | (setq newtop (car mylist)) | ||
+ | | ||
+ | (setq rest (cdr (copy-alist mylist))) | ||
+ | | ||
+ | | ||
+ | (setq rest (cdr rest))) | ||
+ | (setq time (time-now))) | ||
+ | |||
+ | (global-set-key [f8] ' | ||
+ | |||
+ | (defun geosoft-kill-buffer () | ||
+ | ;; Kill default buffer without the extra emacs questions | ||
+ | | ||
+ | | ||
+ | | ||
+ | (global-set-key [C-delete] ' | ||
+ | |||
+ | ;; | ||
+ | ;; MELPA and others | ||
+ | (when (>= emacs-major-version 24) | ||
+ | (require ' | ||
+ | (package-initialize) | ||
+ | (add-to-list ' | ||
+ | (add-to-list ' | ||
+ | (add-to-list ' | ||
+ | ) | ||
+ | |||
+ | ; (add-to-list ' | ||
+ | |||
+ | ;; | ||
+ | ;; Packages installed via package | ||
+ | ;; | ||
+ | |||
+ | ;; | ||
+ | ;; flymake and flycheck installed from package | ||
+ | ;; I think you have to choose only one | ||
+ | |||
+ | ;; (require ' | ||
+ | ;; ;; | ||
+ | ;; (global-set-key (kbd "C-c d") ' | ||
+ | ;; (global-set-key (kbd "C-c n") ' | ||
+ | ;; (global-set-key (kbd "C-c p") ' | ||
+ | |||
+ | (add-hook ' | ||
+ | (global-set-key | ||
+ | (global-set-key | ||
+ | |||
+ | ;; Define d-mode addons | ||
+ | ;; Activate flymake or flycheck for D | ||
+ | ;; Activate auto-complete-mode | ||
+ | ;; Activate yasnippet minor mode if available | ||
+ | ;; Activate dcd-server | ||
+ | (require ' | ||
+ | (add-hook ' | ||
+ | (lambda() | ||
+ | ;; | ||
+ | (flycheck-dmd-dub-set-variables) | ||
+ | (require ' | ||
+ | (setup-flycheck-d-unittest) | ||
+ | (auto-complete-mode t) | ||
+ | (when (featurep ' | ||
+ | (yas-minor-mode-on)) | ||
+ | (ac-dcd-maybe-start-server) | ||
+ | (ac-dcd-add-imports) | ||
+ | (add-to-list ' | ||
+ | (define-key d-mode-map (kbd "C-c ?") ' | ||
+ | (define-key d-mode-map (kbd "C-c .") ' | ||
+ | (define-key d-mode-map (kbd "C-c ,") ' | ||
+ | (define-key d-mode-map (kbd "C-c s") ' | ||
+ | (when (featurep ' | ||
+ | (add-to-list ' | ||
+ | | ||
+ | (add-to-list ' | ||
+ | | ||
+ | (add-to-list ' | ||
+ | | ||
+ | |||
+ | ;; Define diet template mode (this is not installed from package) | ||
+ | (add-to-list ' | ||
+ | (add-hook ' | ||
+ | (lambda() | ||
+ | (setq tab-width 2) | ||
+ | (setq whitespace-line-column 250) | ||
+ | (setq indent-tabs-mode nil) | ||
+ | (setq indent-line-function ' | ||
+ | |||
+ | ;; | ||
+ | ;; elpy | ||
+ | (elpy-enable) | ||
+ | </ | ||
+ | |||
+ | ==== Textadept ==== | ||
+ | Un potente editor de desarrollo, multiplataforma. | ||
+ | |||
+ | Viene incluido en el pack D-apt, por que es muy potente como IDE para D. | ||
+ | |||
+ | De momento lo único que he configurado es la fuente, para ello editamos el fichero ~/ | ||
+ | |||
+ | < | ||
+ | ui.set_theme(' | ||
+ | </ | ||
+ | ==== Scribus ==== | ||
+ | |||
+ | Scribus es un programa libre de composición de documentos. con Scribus puedes elaborar desde los folletos de una exposición hasta una revista o un poster. | ||
+ | |||
+ | Instalado con aptitude | ||
+ | |||
+ | < | ||
+ | sudo aptitude install scribus | ||
+ | </ | ||
+ | ==== Comix ==== | ||
+ | |||
+ | Instalado con aptitude | ||
+ | |||
+ | < | ||
+ | sudo aptitude install comix | ||
+ | </ | ||
+ | ===== Desarrollo Software ===== | ||
+ | |||
+ | ==== Paquetes esenciales ==== | ||
+ | |||
+ | Estos son los paquetes esenciales para empezar a desarrollar software en Linux. | ||
+ | |||
+ | < | ||
+ | sudo apt-get install build-essential checkinstall make automake cmake autoconf git git-core dpkg wget | ||
+ | </ | ||
+ | ==== Git ==== | ||
+ | |||
+ | Control de versiones distribuido. Imprescindible. | ||
+ | |||
+ | Instalado git desde aptitude | ||
+ | |||
+ | < | ||
+ | sudo aptitude install git | ||
+ | </ | ||
+ | Configuración básica de **git** | ||
+ | |||
+ | < | ||
+ | git config --global user.name " | ||
+ | git config --global user.email " | ||
+ | git config --global core.editor emacs | ||
+ | git config --global color.ui true | ||
+ | git config --global credential.helper cache | ||
+ | git config --global credential.helper 'cache --timeout=7200' | ||
+ | git config --global push.default simple | ||
+ | git config --global alias.sla 'log --oneline --decorate --graph --all' | ||
+ | git config --global alias.lg "log --graph --pretty=format:' | ||
+ | git config --global alias.car ' | ||
+ | git config --global alias.unstage reset | ||
+ | git config --global alias.st status | ||
+ | git config --global alias.last | ||
+ | git config --global alias.ca ' | ||
+ | </ | ||
+ | ==== Open Java ==== | ||
+ | |||
+ | < | ||
+ | apt-get install openjdk-7-jre icedtea-7-plugin | ||
+ | </ | ||
+ | ==== Lenguaje de programación D (D programming language) ==== | ||
+ | |||
+ | [[https:// | ||
+ | |||
+ | === D-apt e instalación de programas === | ||
+ | |||
+ | Configurado [[http:// | ||
+ | |||
+ | < | ||
+ | sudo wget http:// | ||
+ | sudo apt-get update && sudo apt-get -y --allow-unauthenticated install --reinstall d-apt-keyring && sudo apt-get update | ||
+ | </ | ||
+ | Instalamos todos los programas asociados. | ||
+ | |||
+ | < | ||
+ | sudo aptitude install dmd dub dcd dfix dfmt dscanner textadept | ||
+ | </ | ||
+ | === DCD === | ||
+ | |||
+ | Una vez instalado el DCD tenemos que configurarlo creando el fichero // | ||
+ | |||
+ | < | ||
+ | / | ||
+ | / | ||
+ | </ | ||
+ | Podemos probarlo con: | ||
+ | |||
+ | < | ||
+ | dcd-server & | ||
+ | echo | dcd-client --search toImpl | ||
+ | </ | ||
+ | === gdc === | ||
+ | |||
+ | Instalado con | ||
+ | |||
+ | < | ||
+ | sudo aptitude install gdc | ||
+ | </ | ||
+ | === ldc === | ||
+ | |||
+ | Instalado con: | ||
+ | |||
+ | < | ||
+ | sudo aptitude install ldc | ||
+ | </ | ||
+ | Para poder ejecutar aplicaciones basadas en [[http:// | ||
+ | |||
+ | < | ||
+ | sudo apt-get install -y libssl-dev libevent-dev | ||
+ | </ | ||
+ | === Emacs para editar D === | ||
+ | |||
+ | Instalados los siguientes paquetes desde // | ||
+ | |||
+ | * //d-mode// | ||
+ | * // | ||
+ | * // | ||
+ | * // | ||
+ | * // | ||
+ | * // | ||
+ | * //ac-dcd// | ||
+ | |||
+ | Se configura en el fichero **~/ | ||
+ | |||
+ | < | ||
+ | ;; (require ' | ||
+ | ;; ;; | ||
+ | ;; (global-set-key (kbd "C-c d") ' | ||
+ | ;; (global-set-key (kbd "C-c n") ' | ||
+ | ;; (global-set-key (kbd "C-c p") ' | ||
+ | |||
+ | (add-hook ' | ||
+ | (global-set-key | ||
+ | (global-set-key | ||
+ | |||
+ | ;; Define d-mode addons | ||
+ | ;; Activate flymake or flycheck for D | ||
+ | ;; Activate auto-complete-mode | ||
+ | ;; Activate yasnippet minor mode if available | ||
+ | ;; Activate dcd-server | ||
+ | (require ' | ||
+ | (add-hook ' | ||
+ | (lambda() | ||
+ | ;; | ||
+ | (flycheck-dmd-dub-set-variables) | ||
+ | (require ' | ||
+ | (setup-flycheck-d-unittest) | ||
+ | (auto-complete-mode t) | ||
+ | (when (featurep ' | ||
+ | (yas-minor-mode-on)) | ||
+ | (ac-dcd-maybe-start-server) | ||
+ | (ac-dcd-add-imports) | ||
+ | (add-to-list ' | ||
+ | (define-key d-mode-map (kbd "C-c ?") ' | ||
+ | (define-key d-mode-map (kbd "C-c .") ' | ||
+ | (define-key d-mode-map (kbd "C-c ,") ' | ||
+ | (define-key d-mode-map (kbd "C-c s") ' | ||
+ | (when (featurep ' | ||
+ | (add-to-list ' | ||
+ | | ||
+ | (add-to-list ' | ||
+ | | ||
+ | (add-to-list ' | ||
+ | | ||
+ | |||
+ | ;; Define diet template mode (this is not installed from package) | ||
+ | (add-to-list ' | ||
+ | (add-hook ' | ||
+ | (lambda() | ||
+ | (setq tab-width 2) | ||
+ | (setq whitespace-line-column 250) | ||
+ | (setq indent-tabs-mode nil) | ||
+ | (setq indent-line-function ' | ||
+ | </ | ||
+ | === Referencias === | ||
+ | |||
+ | * https:// | ||
+ | * https:// | ||
+ | |||
+ | ==== Processing ==== | ||
+ | |||
+ | Bajamos los paquetes de las respectivas páginas web, descomprimimimos en //~/apps/// y creamos los desktop file con **Menulibre** | ||
+ | |||
+ | ==== Openframeworks ==== | ||
+ | |||
+ | Bajamos el paquete comprimido de la página web del proyecto. | ||
+ | |||
+ | Descomprimimos en //~/apps// | ||
+ | |||
+ | Bajamos al directorio de la aplicación y ejecutamos: | ||
+ | |||
+ | < | ||
+ | sudo scripts/ | ||
+ | sudo scripts/ | ||
+ | |||
+ | cd scripts/ | ||
+ | ./ | ||
+ | |||
+ | cd OF/ | ||
+ | make | ||
+ | make Run | ||
+ | |||
+ | cd OF/ | ||
+ | ./ | ||
+ | </ | ||
+ | Va a instalar un montón de dependencias, | ||
+ | |||
+ | Al final también va a añadir una linea al fichero // | ||
+ | |||
+ | < | ||
+ | export PG_OF_PATH=/ | ||
+ | </ | ||
+ | ==== Python ==== | ||
+ | |||
+ | De partida tenemos instalado dos versiones: //python// y //python3// | ||
+ | |||
+ | < | ||
+ | python -V | ||
+ | Python 2.7.9 | ||
+ | |||
+ | python3 -V | ||
+ | Python 3.4.2 | ||
+ | </ | ||
+ | === pip, virtualenv, virtualenvwrapper, | ||
+ | |||
+ | //pip// es un gestor de paquetes para **Python** que facilita la instalación de librerías y utilidades. | ||
+ | |||
+ | Para poder usar los entornos virtuales instalaremos también // | ||
+ | |||
+ | Instalamos los dos desde aptitude: | ||
+ | |||
+ | < | ||
+ | sudo aptitude install python-pip python-virtualenv virtualenv | ||
+ | |||
+ | sudo pip install --upgrade pip | ||
+ | sudo pip install --upgrade virtualenv | ||
+ | </ | ||
+ | // | ||
+ | |||
+ | Instalamos el virtualwrapper: | ||
+ | |||
+ | < | ||
+ | sudo apt-get install virtualenvwrapper -y | ||
+ | </ | ||
+ | Para usar // | ||
+ | |||
+ | < | ||
+ | source / | ||
+ | </ | ||
+ | O añadir esa linea a nuestros ficheros //.bashrc// y/o //.zshrc// | ||
+ | |||
+ | Yo he dejado la variable de entorno // | ||
+ | |||
+ | [[http:// | ||
+ | |||
+ | Por último, si queremos tener utilidades parecidas en nuestro //fish shell// instalamos // | ||
+ | |||
+ | < | ||
+ | sudo pip install virtualfish | ||
+ | </ | ||
+ | [[http:// | ||
+ | |||
+ | === iPython notebook === | ||
+ | |||
+ | [[https:// | ||
+ | |||
+ | == Instalar Jupyter en el Python del sistema == | ||
+ | |||
+ | Seguimos las instrucciones [[https:// | ||
+ | |||
+ | Si usamos el script descargado del github se instalará el **Jupyter** con el python3 del sistema. %%__%%Conviene asegurarse de que estamos apuntando al python del S.O. y no a cualquier otro Python que hayamos instalado: | ||
+ | |||
+ | < | ||
+ | which python | ||
+ | </ | ||
+ | == Instalar Anaconda Python == | ||
+ | |||
+ | Teóricamente [[https:// | ||
+ | |||
+ | < | ||
+ | bash Anaconda3-4.2.0-Linux-x86_64.sh | ||
+ | bash Anaconda2-4.2.0-Linux-x86_64.sh | ||
+ | </ | ||
+ | Los he dejado instalados en // | ||
+ | |||
+ | Cada una de estas instalaciones incorpora su propia versión de Python. Para usarlas tenemos que cambiar nuestro PATH para que el Python deseado sea el primero que se selecciona. | ||
+ | |||
+ | Por ejemplo para activar anaconda3 en bash: | ||
+ | |||
+ | < | ||
+ | export PATH=" | ||
+ | </ | ||
+ | Para hacer lo mismo en fish: | ||
+ | |||
+ | < | ||
+ | set -x PATH ~/ | ||
+ | </ | ||
+ | === iPython y GraphLab === | ||
+ | |||
+ | La instalación de iPython y GraphLab (que es una librería comercial) la hice para realizar un curso. | ||
+ | |||
+ | Creamos un entorno conda con Python 2.7.x | ||
+ | |||
+ | < | ||
+ | export PATH=" | ||
+ | conda create -n gl-env python=2.7 anaconda | ||
+ | </ | ||
+ | Activamos el nuevo entorno (todo esto lo hice en bash, en fish hay un problemilla con el entorno conda [[https:// | ||
+ | |||
+ | < | ||
+ | bash | ||
+ | source activate gl-env | ||
+ | </ | ||
+ | En el futuro esto es todo lo que tendremos que hacer activar el entorno conda donde estamos instalando el iPython. | ||
+ | |||
+ | Nos aseguramos de tener //pip// al dia: | ||
+ | |||
+ | < | ||
+ | conda update pip | ||
+ | </ | ||
+ | Instalamos la biblioteca [[https:// | ||
+ | )) | ||
+ | |||
+ | Una vez registrado en la página web te pasan un número de registro que tienes que usar para instalar la biblioteca. | ||
+ | |||
+ | < | ||
+ | pip install --upgrade --no-cache-dir https:// | ||
+ | </ | ||
+ | Y para terminar instalamos iPython ((TODO: conda install jupyter | ||
+ | )): | ||
+ | |||
+ | < | ||
+ | conda install ipython-notebook | ||
+ | </ | ||
+ | Desde ahora basta con activar el entorno que hemos creado para tener acceso al iPython. | ||
+ | |||
+ | < | ||
+ | source activate gl-env | ||
+ | |||
+ | ipython notebook | ||
+ | |||
+ | source deactivate gl-env | ||
+ | </ | ||
+ | == Instalación alternativa con virtualenv == | ||
+ | |||
+ | < | ||
+ | # Create a virtual environment named e.g. gl-env | ||
+ | virtualenv gl-env | ||
+ | |||
+ | # Activate the virtual environment | ||
+ | source gl-env/ | ||
+ | |||
+ | # Make sure pip is up to date | ||
+ | pip install --upgrade pip | ||
+ | |||
+ | # Install IPython Notebook (optional) | ||
+ | pip install " | ||
+ | |||
+ | # Install Jupyter Notebook (optional) | ||
+ | pip install " | ||
+ | |||
+ | |||
+ | # Install your licensed copy of GraphLab Create | ||
+ | pip install --upgrade --no-cache-dir https:// | ||
+ | </ | ||
+ | === Usar Emacs para editar Python === | ||
+ | |||
+ | Instalamos //elpy// desde el gestor de paquetes de Emacs, concretamente desde el repo // | ||
+ | |||
+ | Hay que habilitar //elpy// en el fichero **~/ | ||
+ | |||
+ | < | ||
+ | (elpy enable) | ||
+ | </ | ||
+ | // | ||
+ | |||
+ | < | ||
+ | sudo pip install pylint | ||
+ | </ | ||
+ | === TODO === | ||
+ | |||
+ | Estudiar esto con calma https:// | ||
+ | |||
+ | ==== Web2py ==== | ||
+ | |||
+ | Desde [[http:// | ||
+ | |||
+ | Yo he descomprimido el framework en '' | ||
+ | |||
+ | Para que el framework soporte ssl convine generar los siguientes certificados: | ||
+ | |||
+ | < | ||
+ | openssl genrsa -out server.key 2048 | ||
+ | openssl req -new -key server.key -out server.csr | ||
+ | |||
+ | Country Name (2 letter code) [AU]:ES | ||
+ | State or Province Name (full name) [Some-State]: | ||
+ | Locality Name (eg, city) []:CORUNA | ||
+ | Organization Name (eg, company) [Internet Widgits Pty Ltd]:Mikasa | ||
+ | Organizational Unit Name (eg, section) []:salvari | ||
+ | Common Name (e.g. server FQDN or YOUR name) []:salvari | ||
+ | Email Address []: | ||
+ | |||
+ | Please enter the following ' | ||
+ | to be sent with your certificate request | ||
+ | A challenge password []: | ||
+ | An optional company name []:Mikasa | ||
+ | </ | ||
+ | Ahora ejecutamos: | ||
+ | |||
+ | < | ||
+ | openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt | ||
+ | </ | ||
+ | Ahora deberíamos dejar los ficheros '' | ||
+ | |||
+ | < | ||
+ | python web2py.py -a ' | ||
+ | </ | ||
+ | Y ya podemos acceder nuestro server en la dirección https:// | ||
+ | |||
+ | Tampoco está de más instalar las librerías de graphviz: | ||
+ | |||
+ | < | ||
+ | sudo aptitude install python-pygraphviz | ||
+ | </ | ||
+ | ==== Selenium ==== | ||
+ | |||
+ | Vamos a instalar // | ||
+ | )) de aplicaciones web con Python. Lo haremos siguiendo [[http:// | ||
+ | |||
+ | En principio lo voy a usar con el Python del sistema '' | ||
+ | |||
+ | < | ||
+ | sudo pip install -U selenium | ||
+ | </ | ||
+ | Con esto nos queda instalado '' | ||
+ | |||
+ | Además de Selenium necesitamos los drivers de los navegadores que queremos controlar, de momento solo usaré // | ||
+ | |||
+ | < | ||
+ | sudo chown root:staff ~/ | ||
+ | sudo chmod 755 ~/ | ||
+ | sudo mv ~/ | ||
+ | </ | ||
+ | Para probarlo escribimos un pequeño programa en Python: | ||
+ | |||
+ | < | ||
+ | from selenium import webdriver | ||
+ | |||
+ | browser = webdriver.Firefox() | ||
+ | browser.get(' | ||
+ | </ | ||
+ | |||
+ | ---- | ||
+ | |||
+ | > **Nota**: Tengo que pensar bien como hacerlo. | ||
+ | |||
+ | ===== Go language ===== | ||
+ | |||
+ | Nos bajamos los binarios desde la [[https:// | ||
+ | |||
+ | Descomprimimos en ///opt//, ejecutando (como root): | ||
+ | |||
+ | < | ||
+ | cd /opt | ||
+ | tar xvzf ~/ | ||
+ | </ | ||
+ | Deberíamos dejar configuradas las siguientes variables de entorno: | ||
+ | |||
+ | < | ||
+ | # Point to the local installation of golang. | ||
+ | export GOROOT=/ | ||
+ | |||
+ | # Point to the location beneath which source and binaries are installed. | ||
+ | export GOPATH=$HOME/ | ||
+ | |||
+ | # Ensure that the binary-release is on your PATH. | ||
+ | export PATH=${PATH}: | ||
+ | |||
+ | # Ensure that compiled binaries are also on your PATH. | ||
+ | export PATH=${PATH}: | ||
+ | </ | ||
+ | |||
+ | ===== Desarrollo hardware ===== | ||
+ | |||
+ | ==== Arduino IDE ==== | ||
+ | |||
+ | Bajamos los paquetes de la página [[https:// | ||
+ | |||
+ | Creamos un link al directorio del software que hemos descargado: | ||
+ | |||
+ | < | ||
+ | cd ~/ | ||
+ | ln -s arduino-x.y.z current | ||
+ | </ | ||
+ | La primera ves que instalamos será necesario crear el desktop file con **Menulibre** con las actulizaciones no será necesario, siempre y cuando apunte a // | ||
+ | |||
+ | ==== Pinguino IDE ==== | ||
+ | |||
+ | Tenemos el paquete de instalación disponible en su página [[http:// | ||
+ | |||
+ | Ejecutamos el programa de instalación. El programa descargará los paquetes Debian necesarios para dejar el IDE y los compiladores instalados. | ||
+ | |||
+ | Al acabar la instalación he tenido que crear el directorio // | ||
+ | |||
+ | El programa queda correctamente instalado en ///opt// y arranca correctamente, | ||
+ | |||
+ | ==== KiCAD ==== | ||
+ | |||
+ | Instalamos desde // | ||
+ | |||
+ | < | ||
+ | sudo aptitude install -t jessie-backports kicad | ||
+ | </ | ||
+ | Vamos a instalar a mayores algunas librerias de KiCAD, para poder crear Shields de Arduino. | ||
+ | |||
+ | * [[https:// | ||
+ | * [[http:// | ||
+ | |||
+ | ===== Virtualización ===== | ||
+ | |||
+ | ==== Docker ==== | ||
+ | |||
+ | < | ||
+ | apt-get install apt-transport-https ca-certificates | ||
+ | apt-key adv --keyserver hkp:// | ||
+ | edit docker.list with | ||
+ | deb https:// | ||
+ | |||
+ | apt-cache policy docker-engine | ||
+ | |||
+ | |||
+ | sudo apt-get install docker-engine | ||
+ | |||
+ | |||
+ | sudo service docker start | ||
+ | |||
+ | sudo docker run hello-world | ||
+ | |||
+ | sudo gpasswd -a salvari docker | ||
+ | </ | ||
+ | ==== Virtualbox ==== | ||
+ | |||
+ | Tenemos que: | ||
+ | |||
+ | * Añadir el fichero // | ||
+ | * Bajarnos y añadir a nuestro llavero las claves públicas de Oracle | ||
+ | * Actualizar la lista de paquetes | ||
+ | * Instalar virtualbox | ||
+ | * Añadir nuestro usuario al grupo vboxuser (no tengo claro que esto sea necesario) | ||
+ | |||
+ | < | ||
+ | echo "deb http:// | ||
+ | |sudo tee / | ||
+ | | sudo apt-key add - sudo apt-get update sudo apt-get install virtualbox-5.1 sudo gpasswd -a salvari vboxusers | ||
+ | </ | ||
+ | |||
+ | Una vez instalado el virtualbox tenemos que instalarnos el pack de extensiones, | ||
+ | |||
+ | Sin más que hacer doble click en el fichero descargado lo instalaremos en nuestra instancia de // | ||
+ | |||
+ | ==== Virtualizando un Windows 7 ==== | ||
+ | |||
+ | * 2 Gb de ram | ||
+ | * Create virtual hard disk | ||
+ | * 10Gb dinamically allocated | ||
+ | * Settings -> System-> | ||
+ | * Storage -> Add IDE Controller-> | ||
+ | * Instalamos Windows en Inglés y con teclado en español | ||
+ | |||
+ | Una vez instalado el SO Windows instalamos las Guest Additions. | ||
+ | |||
+ | ===== Shells alternativos: | ||
+ | |||
+ | Los dos son muy interesantes. He usado zsh casi un año, ahora voy a probar **fish**. | ||
+ | |||
+ | ==== fish ==== | ||
+ | |||
+ | Instalamos **fish** desde aptitude con: | ||
+ | |||
+ | < | ||
+ | sudo aptitude install fish | ||
+ | </ | ||
+ | Instalamos oh-my-fish | ||
+ | |||
+ | < | ||
+ | curl -L https:// | ||
+ | fish install | ||
+ | rm install | ||
+ | |||
+ | chsh -s `which fish` | ||
+ | |||
+ | </ | ||
+ | ==== zsh ==== | ||
+ | |||
+ | Igualmente instalamos **zsh**: | ||
+ | |||
+ | < | ||
+ | sudo aptitude install zsh | ||
+ | </ | ||
+ | Vamos a usar antigen así que nos lo clonamos en _~/apps/ | ||
+ | |||
+ | < | ||
+ | cd ~/apps | ||
+ | git clone https:// | ||
+ | </ | ||
+ | Y editamos el fichero // | ||
+ | |||
+ | < | ||
+ | source ~/ | ||
+ | |||
+ | # Load the oh-my-zsh' | ||
+ | antigen use oh-my-zsh | ||
+ | |||
+ | # Bundles from the default repo (robbyrussell' | ||
+ | antigen bundle git | ||
+ | antigen bundle command-not-found | ||
+ | antigen bundle autojump | ||
+ | antigen bundle extract | ||
+ | # antigen bundle heroku | ||
+ | # antigen bundle pip | ||
+ | # antigen bundle lein | ||
+ | |||
+ | |||
+ | # Syntax highlighting bundle. | ||
+ | antigen bundle zsh-users/ | ||
+ | |||
+ | # git | ||
+ | antigen bundle arialdomartini/ | ||
+ | antigen theme arialdomartini/ | ||
+ | |||
+ | # autosuggestions | ||
+ | antigen bundle tarruda/ | ||
+ | |||
+ | #antigen theme agnoster | ||
+ | |||
+ | # Tell antigen that you're done. | ||
+ | antigen apply | ||
+ | |||
+ | # append to path | ||
+ | path+=('/ | ||
+ | # prepend | ||
+ | # path=('/ | ||
+ | # export PATH | ||
+ | </ | ||
+ | Antigen ya se encarga de descargar todo lo que queramos utilizar en zsh. | ||
+ | |||
+ | Nos queda arreglar las fuentes para que funcione correctamente la linea de estado en los repos de git. Necesitamos una fuente //Awesome// | ||
+ | |||
+ | ==== Instalación de fuentes adicionales ==== | ||
+ | |||
+ | Nos bajamos unas cuantas fuentes que soporten los iconos // | ||
+ | |||
+ | < | ||
+ | cd ~/tmp | ||
+ | git clone https:// | ||
+ | git clone https:// | ||
+ | |||
+ | mkdir ~/.fonts | ||
+ | cp someFontFile ~/.fonts/ | ||
+ | fc-cache -vf ~/.fonts/ | ||
+ | </ | ||
+ | ===== Reprap ===== | ||
+ | |||
+ | ==== Sl1c3r ==== | ||
+ | |||
+ | Descargamos el paquete binario desde la página web. | ||
+ | |||
+ | * Cambiar permisos en directorio /// | ||
+ | * Instalado // | ||
+ | * Es necesario instalar // | ||
+ | |||
+ | ==== OpenScad ==== | ||
+ | |||
+ | Instalado desde aptitude. | ||
+ | |||
+ | ==== Printrun ==== | ||
+ | |||
+ | Descargamos desde github | ||
+ | |||
+ | ==== Cura ==== | ||
+ | |||
+ | Descargamos desde la pagina web | ||
+ | |||
+ | < | ||
+ | sudo aptitude install python3-pyqt5 | ||
+ | sudo dpkg -i Cura-2.1.3-Linux.deb | ||
+ | </ | ||
+ | < | ||
+ | sudo apt-get install python-serial python-wxgtk2.8 python-pyglet python-numpy \ | ||
+ | cython python-libxml2 python-gobject python-dbus python-psutil python-cairosvg git | ||
+ | |||
+ | python setup.py build_ext --inplace | ||
+ | </ | ||
+ | ===== Aplicaciones Web ===== | ||
+ | |||
+ | ==== Servidor Web ==== | ||
+ | |||
+ | === Apache === | ||
+ | |||
+ | Instalamos el paquete //apache2// | ||
+ | |||
+ | < | ||
+ | sudo aptitude install apache2 | ||
+ | </ | ||
+ | Si abrimos el navegador y visitamos http:// | ||
+ | |||
+ | El directorio raiz por defecto de Apache en Debian es /// | ||
+ | |||
+ | * / | ||
+ | * / | ||
+ | * / | ||
+ | |||
+ | Además del Apache vamos a dejar instalado el //php5// | ||
+ | |||
+ | < | ||
+ | sudo aptitude install php5 libapache2-mod-php5 | ||
+ | </ | ||
+ | Hay que reiniciar el servicio: '' | ||
+ | |||
+ | Si creamos un fichero /// | ||
+ | |||
+ | < | ||
+ | <?php | ||
+ | phpinfo(); | ||
+ | ?> | ||
+ | </ | ||
+ | Podemos ver en el siguiente enlace http:// | ||
+ | |||
+ | Módulos de php relacionados con mysql: | ||
+ | |||
+ | < | ||
+ | sudo aptitude install php5-mysqlnd php5-curl php5-gd php5-intl php-pear \ | ||
+ | php5-imagick php5-imap php5-mcrypt php5-memcache php5-pspell php5-recode \ | ||
+ | php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl | ||
+ | </ | ||
+ | === nginx === | ||
+ | |||
+ | TODO | ||
+ | |||
+ | ==== Servidores de bases de datos ==== | ||
+ | |||
+ | === MySQL === | ||
+ | |||
+ | Instalamos desde aptitude // | ||
+ | |||
+ | Opcionalmente (y muy recomendable) | ||
+ | |||
+ | < | ||
+ | mysql_secure_instalallation | ||
+ | </ | ||
+ | === Actualización === | ||
+ | |||
+ | Cambiamos el fichero // | ||
+ | |||
+ | < | ||
+ | # max_allowed_packet | ||
+ | max_allowed_packet | ||
+ | </ | ||
+ | Reiniciamos el servicio: | ||
+ | |||
+ | < | ||
+ | / | ||
+ | </ | ||
+ | === Cliente SQL SQuirreL SQL === | ||
+ | |||
+ | Descargamos el paquete desde la página [[http:// | ||
+ | |||
+ | Una vez instalado, creamos el desktop-file con // | ||
+ | |||
+ | === MariaDB === | ||
+ | |||
+ | **PENDIENTE** | ||
+ | |||
+ | ===== Recetas varias ===== | ||
+ | |||
+ | ==== Orange Pi Zero ==== | ||
+ | |||
+ | Para usar la Orange Pi Zero tendremos que crear imágenes arrancables en tarjetas micro SD. | ||
+ | |||
+ | === Crear una SD arrancable === | ||
+ | |||
+ | Dependiendo de donde conectemos la tarjeta tendremos que usar diferentes rutas. En el procedimiento descrito a continuación '' | ||
+ | |||
+ | Si la tarjeta se conecta via adaptador USB, linux la va a asociar a un dispositivo /dev/sdx, por ejemplo en mi portátil el disco duro es '' | ||
+ | |||
+ | Si conectamos una memoria con un adaptador USB linux la podría mapear en '' | ||
+ | |||
+ | Si la memoria se conecta mediante una ranura SD, linux la asociará a un dispositivo '' | ||
+ | |||
+ | Los datos se pueden almacenar directamente en la memoria SD o en una partición creada en la memoria. | ||
+ | |||
+ | Resumiendo: | ||
+ | |||
+ | * '' | ||
+ | * ${card}${p} será '' | ||
+ | |||
+ | Antes de seguir adelante hay que estar completamente seguro del dispositivo asociado a nuestra memoria SD para no armar ningún estropicio. | ||
+ | |||
+ | Hay varias comprobaciones que se pueden hacer: | ||
+ | |||
+ | '' | ||
+ | |||
+ | '' | ||
+ | |||
+ | < | ||
+ | Disk / | ||
+ | Units: sectors of 1 * 512 = 512 bytes | ||
+ | Sector size (logical/ | ||
+ | I/O size (minimum/ | ||
+ | Disklabel type: dos | ||
+ | Disk identifier: 0x00000000 | ||
+ | </ | ||
+ | '' | ||
+ | |||
+ | < | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | Descargamos la imagen de Jessie adaptada a la //Orange Pi Zero// desde la página https:// | ||
+ | |||
+ | Descomprimimos la imagen y la grabamos en la tarjeta SD con el comando: | ||
+ | |||
+ | < | ||
+ | sudo dd if=./ | ||
+ | </ | ||
+ | Insertamos la tarjeta en la //Orange Pi// y le damos alimentación. El primer arranque llevará alrededor de tres minutos, y tras ese tiempo aun hará falta un minuto más para poder hacer login. Este retardo es debido a que el sistema intentará actualizar la lista de paquetes y creará un area de swap de emergencia en la SD, y además cambiará el tamaño de la partición que hemos creado para ocupar todo el espacio libre en la SD. | ||
+ | |||
+ | De momento solo la he arrancado y efectivamente las particiones han cambiado tras el arranque así que tiene buena pinta. | ||
+ | |||
+ | Volvemos a insertar la SD en la //Orange Pi// y la conectamos con un cable ethernet al router de casa. El Armbian viene configurado por defecto para obtener su IP desde un servidor DHCP. | ||
+ | |||
+ | Como mi cutre-router no me da información de las IP asignadas usamos //nmap//: | ||
+ | |||
+ | < | ||
+ | nmap -sP 192.168.0.0 /24 | ||
+ | </ | ||
+ | Con eso averiguamos la IP asignada a la //Orange Pi Zero// y ya podemos hacer login con: | ||
+ | |||
+ | < | ||
+ | ssh root@192.168.0.109 | ||
+ | </ | ||
+ | ¡Y ya estamos! | ||
+ | |||
+ | {{OrangePiZero_FirstLogin.png| Primer login en //Orange Pi//}} | ||
+ | |||
+ | Lo primero es poner al dia el sistema: | ||
+ | |||
+ | < | ||
+ | apt-get update | ||
+ | apt-get upgrade | ||
+ | </ | ||
+ | Si quieres puedes reconfigurar el //time zone//: | ||
+ | |||
+ | < | ||
+ | dpgk-reconfigura tzdata | ||
+ | </ | ||
+ | === Conexión WIFI === | ||
+ | |||
+ | Vamos a comprobar que todo va bien: | ||
+ | |||
+ | < | ||
+ | root@orangepizero: | ||
+ | lo no wireless extensions. | ||
+ | |||
+ | tunl0 no wireless extensions. | ||
+ | |||
+ | wlan0 IEEE 802.11bgn | ||
+ | Mode: | ||
+ | Retry long limit: | ||
+ | Encryption key:off | ||
+ | Power Management: | ||
+ | |||
+ | eth0 no wireless extensions. | ||
+ | </ | ||
+ | Todo tiene buena pinta, vamos a ver si detecta WIFIs: | ||
+ | |||
+ | < | ||
+ | root@orangepizero: | ||
+ | ESSID:" | ||
+ | ESSID:" | ||
+ | ESSID:" | ||
+ | ESSID:" | ||
+ | ESSID:" | ||
+ | ESSID:" | ||
+ | ESSID:" | ||
+ | ESSID:" | ||
+ | ESSID:" | ||
+ | ESSID:" | ||
+ | ESSID:"" | ||
+ | ESSID:" | ||
+ | </ | ||
+ | Para configurar el wifi echamos un ojo al fichero '' | ||
+ | |||
+ | < | ||
+ | # Armbian ships with network-manager installed by default. To save you time | ||
+ | # and hassles consider using 'sudo nmtui' instead of configuring Wi-Fi settings | ||
+ | # manually. | ||
+ | </ | ||
+ | Así que basta con ejecutar '' | ||
+ | |||
+ | {{orangepizero_tmtui.png| Configuración WIFI}} | ||
+ | |||
+ | Ejecutamos '' | ||
+ | |||
+ | < | ||
+ | ifconfig | ||
+ | |||
+ | wlan0 Link encap: | ||
+ | inet addr: | ||
+ | inet6 addr: fe80:: | ||
+ | UP BROADCAST RUNNING MULTICAST | ||
+ | RX packets:2 errors:0 dropped:0 overruns:0 frame:0 | ||
+ | TX packets:8 errors:0 dropped:0 overruns:0 carrier:0 | ||
+ | collisions: | ||
+ | RX bytes:328 (328.0 B) TX bytes:852 (852.0 B) | ||
+ | </ | ||
+ | |||
+ | === Referencias === | ||
+ | |||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | * [[https:// | ||
+ | * http:// | ||
+ | * https:// | ||
+ | * https:// | ||
+ | * https:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | |||
+ | ==== Raspberry Pi Media Center ==== | ||
+ | |||
+ | Bajamos la imagen con nuestro cliente torrent favorito desde [[https:// | ||
+ | |||
+ | < | ||
+ | sudo dd if=./ | ||
+ | </ | ||
+ | Arrancamos con la toma ethernet conectada al router y nos conectamos tras averigurar la IP con '' | ||
+ | |||
+ | {{RaspiFirstLogin.png| Primer login en Raspberry}} | ||
+ | |||
+ | Una vez instalado los pasos recomendados: | ||
+ | |||
+ | * Cambiar la password de root: '' | ||
+ | * Fijar una IP estática: Editamos el fichero '' | ||
+ | |||
+ | < | ||
+ | interface eth0 | ||
+ | static ip_address=192.168.0.125/ | ||
+ | static routers=192.168.0.1 | ||
+ | static domain_name_servers=8.8.8.8 | ||
+ | |||
+ | interface wlan0 | ||
+ | static ip_address=192.168.0.126/ | ||
+ | static routers=192.168.0.1 | ||
+ | static domain_name_servers=8.8.8.8 | ||
+ | </ | ||
+ | |||
+ | * Una vez cambiado el fichero hay que reiniciar con '' | ||
+ | * Configurar la WIFI, en esta parte damos por supuesto que tenemos la wifi con WPA activado. | ||
+ | * Echamos un ojo a nuestro interfaz radio con '' | ||
+ | |||
+ | < | ||
+ | wlan0 IEEE 802.11bgn | ||
+ | Mode: | ||
+ | Retry short limit: | ||
+ | Encryption key:off | ||
+ | Power Management: | ||
+ | </ | ||
+ | |||
+ | * Tenemos que editar el fichero '' | ||
+ | |||
+ | < | ||
+ | allow-hotplug wlan0 | ||
+ | iface wlan0 inet manual | ||
+ | wpa-conf / | ||
+ | </ | ||
+ | |||
+ | * Ahora vamos a editar el fichero de configuración de '' | ||
+ | |||
+ | < | ||
+ | country=ES | ||
+ | ctrl_interface=DIR=/ | ||
+ | update_config=1 | ||
+ | network={ | ||
+ | ssid=" | ||
+ | psk=" | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | * Un reinicio y listos: '' | ||
+ | |||
+ | ===== TODO ===== | ||
+ | |||
+ | * cinelerra | ||
+ | * playonlinux | ||
+ | * krita | ||
+ | * mypaint | ||
+ | * qStopmotion | ||
+ | * chibios | ||
+ | * [http: | ||
+ | * [http: | ||
+ | * [http: | ||
+ | * ICE Studio | ||
+ | * Inkscape | ||
+ | * https:// | ||
+ | * Instalar tb jessyink | ||
+ | * rclone https:// | ||
+ | * vmware (no creo, virtualbox va genial) | ||
+ | * Astronomía | ||
+ | * STM32 toolchain | ||
+ | |||
+ | ===== Links ===== | ||
+ | |||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | * https:// | ||
+ | * http:// | ||
+ | |||
+ | ===== Licencia ===== | ||
+ | |||
+ | Esta guía se publica sujeta a licencia CC-BY-SA 4.0 INTL | ||
+ | |||
+ | < | ||
+ | |||
+ | Attribution-ShareAlike 4.0 International | ||
+ | |||
+ | ====================================================== | ||
+ | |||
+ | Creative Commons Corporation (" | ||
+ | does not provide legal services or legal advice. Distribution of | ||
+ | Creative Commons public licenses does not create a lawyer-client or | ||
+ | other relationship. Creative Commons makes its licenses and related | ||
+ | information available on an " | ||
+ | warranties regarding its licenses, any material licensed under their | ||
+ | terms and conditions, or any related information. Creative Commons | ||
+ | disclaims all liability for damages resulting from their use to the | ||
+ | fullest extent possible. | ||
+ | |||
+ | Using Creative Commons Public Licenses | ||
+ | |||
+ | Creative Commons public licenses provide a standard set of terms and | ||
+ | conditions that creators and other rights holders may use to share | ||
+ | original works of authorship and other material subject to copyright | ||
+ | and certain other rights specified in the public license below. The | ||
+ | following considerations are for informational purposes only, are not | ||
+ | exhaustive, and do not form part of our licenses. | ||
+ | |||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | and conditions of the license they choose before applying it. | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | wiki.creativecommons.org/ | ||
+ | |||
+ | | ||
+ | | ||
+ | | ||
+ | the licensor' | ||
+ | | ||
+ | | ||
+ | | ||
+ | other rights that a licensor has authority to grant. Use of | ||
+ | the licensed material may still be restricted for other | ||
+ | | ||
+ | | ||
+ | such as asking that all changes be marked or described. | ||
+ | | ||
+ | | ||
+ | for the public: | ||
+ | wiki.creativecommons.org/ | ||
+ | |||
+ | ====================================================== | ||
+ | |||
+ | Creative Commons Attribution-ShareAlike 4.0 International Public | ||
+ | License | ||
+ | |||
+ | By exercising the Licensed Rights (defined below), You accept and agree | ||
+ | to be bound by the terms and conditions of this Creative Commons | ||
+ | Attribution-ShareAlike 4.0 International Public License (" | ||
+ | License" | ||
+ | contract, You are granted the Licensed Rights in consideration of Your | ||
+ | acceptance of these terms and conditions, and the Licensor grants You | ||
+ | such rights in consideration of benefits the Licensor receives from | ||
+ | making the Licensed Material available under these terms and | ||
+ | conditions. | ||
+ | |||
+ | |||
+ | Section 1 -- Definitions. | ||
+ | |||
+ | a. Adapted Material means material subject to Copyright and Similar | ||
+ | | ||
+ | and in which the Licensed Material is translated, altered, | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | b. Adapter' | ||
+ | and Similar Rights in Your contributions to Adapted Material in | ||
+ | | ||
+ | |||
+ | c. BY-SA Compatible License means a license listed at | ||
+ | | ||
+ | | ||
+ | |||
+ | d. Copyright and Similar Rights means copyright and/or similar rights | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | e. Effective Technological Measures means those measures that, in the | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | f. Exceptions and Limitations means fair use, fair dealing, and/or | ||
+ | any other exception or limitation to Copyright and Similar Rights | ||
+ | that applies to Your use of the Licensed Material. | ||
+ | |||
+ | g. License Elements means the license attributes listed in the name | ||
+ | of a Creative Commons Public License. The License Elements of this | ||
+ | | ||
+ | |||
+ | h. Licensed Material means the artistic or literary work, database, | ||
+ | or other material to which the Licensor applied this Public | ||
+ | | ||
+ | |||
+ | i. Licensed Rights means the rights granted to You subject to the | ||
+ | terms and conditions of this Public License, which are limited to | ||
+ | all Copyright and Similar Rights that apply to Your use of the | ||
+ | | ||
+ | |||
+ | j. Licensor means the individual(s) or entity(ies) granting rights | ||
+ | under this Public License. | ||
+ | |||
+ | k. Share means to provide material to the public by any means or | ||
+ | | ||
+ | as reproduction, | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | l. Sui Generis Database Rights means rights other than copyright | ||
+ | | ||
+ | the Council of 11 March 1996 on the legal protection of databases, | ||
+ | as amended and/or succeeded, as well as other essentially | ||
+ | | ||
+ | |||
+ | m. You means the individual or entity exercising the Licensed Rights | ||
+ | under this Public License. Your has a corresponding meaning. | ||
+ | |||
+ | |||
+ | Section 2 -- Scope. | ||
+ | |||
+ | a. License grant. | ||
+ | |||
+ | 1. Subject to the terms and conditions of this Public License, | ||
+ | the Licensor hereby grants You a worldwide, royalty-free, | ||
+ | non-sublicensable, | ||
+ | exercise the Licensed Rights in the Licensed Material to: | ||
+ | |||
+ | a. reproduce and Share the Licensed Material, in whole or | ||
+ | in part; and | ||
+ | |||
+ | b. produce, reproduce, and Share Adapted Material. | ||
+ | |||
+ | 2. Exceptions and Limitations. For the avoidance of doubt, where | ||
+ | Exceptions and Limitations apply to Your use, this Public | ||
+ | License does not apply, and You do not need to comply with | ||
+ | its terms and conditions. | ||
+ | |||
+ | 3. Term. The term of this Public License is specified in Section | ||
+ | 6(a). | ||
+ | |||
+ | 4. Media and formats; technical modifications allowed. The | ||
+ | Licensor authorizes You to exercise the Licensed Rights in | ||
+ | all media and formats whether now known or hereafter created, | ||
+ | and to make technical modifications necessary to do so. The | ||
+ | Licensor waives and/or agrees not to assert any right or | ||
+ | authority to forbid You from making technical modifications | ||
+ | necessary to exercise the Licensed Rights, including | ||
+ | technical modifications necessary to circumvent Effective | ||
+ | Technological Measures. For purposes of this Public License, | ||
+ | simply making modifications authorized by this Section 2(a) | ||
+ | (4) never produces Adapted Material. | ||
+ | |||
+ | 5. Downstream recipients. | ||
+ | |||
+ | a. Offer from the Licensor -- Licensed Material. Every | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | b. Additional offer from the Licensor -- Adapted Material. | ||
+ | Every recipient of Adapted Material from You | ||
+ | | ||
+ | | ||
+ | under the conditions of the Adapter' | ||
+ | |||
+ | c. No downstream restrictions. You may not offer or impose | ||
+ | any additional or different terms or conditions on, or | ||
+ | apply any Effective Technological Measures to, the | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | 6. No endorsement. Nothing in this Public License constitutes or | ||
+ | may be construed as permission to assert or imply that You | ||
+ | are, or that Your use of the Licensed Material is, connected | ||
+ | with, or sponsored, endorsed, or granted official status by, | ||
+ | the Licensor or others designated to receive attribution as | ||
+ | provided in Section 3(a)(1)(A)(i). | ||
+ | |||
+ | b. Other rights. | ||
+ | |||
+ | 1. Moral rights, such as the right of integrity, are not | ||
+ | licensed under this Public License, nor are publicity, | ||
+ | privacy, and/or other similar personality rights; however, to | ||
+ | the extent possible, the Licensor waives and/or agrees not to | ||
+ | assert any such rights held by the Licensor to the limited | ||
+ | extent necessary to allow You to exercise the Licensed | ||
+ | Rights, but not otherwise. | ||
+ | |||
+ | 2. Patent and trademark rights are not licensed under this | ||
+ | Public License. | ||
+ | |||
+ | 3. To the extent possible, the Licensor waives any right to | ||
+ | collect royalties from You for the exercise of the Licensed | ||
+ | Rights, whether directly or through a collecting society | ||
+ | under any voluntary or waivable statutory or compulsory | ||
+ | licensing scheme. In all other cases the Licensor expressly | ||
+ | reserves any right to collect such royalties. | ||
+ | |||
+ | |||
+ | Section 3 -- License Conditions. | ||
+ | |||
+ | Your exercise of the Licensed Rights is expressly made subject to the | ||
+ | following conditions. | ||
+ | |||
+ | a. Attribution. | ||
+ | |||
+ | 1. If You Share the Licensed Material (including in modified | ||
+ | form), You must: | ||
+ | |||
+ | a. retain the following if it is supplied by the Licensor | ||
+ | with the Licensed Material: | ||
+ | |||
+ | i. identification of the creator(s) of the Licensed | ||
+ | Material and any others designated to receive | ||
+ | attribution, | ||
+ | the Licensor (including by pseudonym if | ||
+ | designated); | ||
+ | |||
+ | ii. a copyright notice; | ||
+ | |||
+ | iii. a notice that refers to this Public License; | ||
+ | |||
+ | iv. a notice that refers to the disclaimer of | ||
+ | warranties; | ||
+ | |||
+ | v. a URI or hyperlink to the Licensed Material to the | ||
+ | extent reasonably practicable; | ||
+ | |||
+ | b. indicate if You modified the Licensed Material and | ||
+ | | ||
+ | |||
+ | c. indicate the Licensed Material is licensed under this | ||
+ | | ||
+ | | ||
+ | |||
+ | 2. You may satisfy the conditions in Section 3(a)(1) in any | ||
+ | reasonable manner based on the medium, means, and context in | ||
+ | which You Share the Licensed Material. For example, it may be | ||
+ | reasonable to satisfy the conditions by providing a URI or | ||
+ | hyperlink to a resource that includes the required | ||
+ | information. | ||
+ | |||
+ | 3. If requested by the Licensor, You must remove any of the | ||
+ | information required by Section 3(a)(1)(A) to the extent | ||
+ | reasonably practicable. | ||
+ | |||
+ | b. ShareAlike. | ||
+ | |||
+ | In addition to the conditions in Section 3(a), if You Share | ||
+ | | ||
+ | |||
+ | 1. The Adapter' | ||
+ | license with the same License Elements, this version or | ||
+ | later, or a BY-SA Compatible License. | ||
+ | |||
+ | 2. You must include the text of, or the URI or hyperlink to, the | ||
+ | Adapter' | ||
+ | in any reasonable manner based on the medium, means, and | ||
+ | context in which You Share Adapted Material. | ||
+ | |||
+ | 3. You may not offer or impose any additional or different terms | ||
+ | or conditions on, or apply any Effective Technological | ||
+ | Measures to, Adapted Material that restrict exercise of the | ||
+ | rights granted under the Adapter' | ||
+ | |||
+ | |||
+ | Section 4 -- Sui Generis Database Rights. | ||
+ | |||
+ | Where the Licensed Rights include Sui Generis Database Rights that | ||
+ | apply to Your use of the Licensed Material: | ||
+ | |||
+ | a. for the avoidance of doubt, Section 2(a)(1) grants You the right | ||
+ | to extract, reuse, reproduce, and Share all or a substantial | ||
+ | | ||
+ | |||
+ | b. if You include all or a substantial portion of the database | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | | ||
+ | c. You must comply with the conditions in Section 3(a) if You Share | ||
+ | all or a substantial portion of the contents of the database. | ||
+ | |||
+ | For the avoidance of doubt, this Section 4 supplements and does not | ||
+ | replace Your obligations under this Public License where the Licensed | ||
+ | Rights include other Copyright and Similar Rights. | ||
+ | |||
+ | |||
+ | Section 5 -- Disclaimer of Warranties and Limitation of Liability. | ||
+ | |||
+ | a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE | ||
+ | | ||
+ | AND AS-AVAILABLE, | ||
+ | ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | </ |