branch: externals/eev
commit b7f5548d498ffaffde672db10909c0bceb0ca582
Author: Eduardo Ochs <[email protected]>
Commit: Eduardo Ochs <[email protected]>

    Added (find-debootstrap-intro) and (find-lean4-intro).
---
 ChangeLog     |  18 +++++
 VERSION       |   4 +-
 eev-blinks.el |  10 ++-
 eev-intro.el  | 213 +++++++++++++++++++++++++++++++++++++++-------------
 eev-rstdoc.el |   4 +-
 eev-tlinks.el | 238 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 6 files changed, 430 insertions(+), 57 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 84001ddc9e..4ad5105edf 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,21 @@
+2024-05-30  Eduardo Ochs  <[email protected]>
+
+       * eev-intro.el (find-dot-emacs-intro): major rewrite.
+       (find-eev-intro): added `(find-debootstrap-intro)' and
+       `(find-lean4-intro)'.
+
+       * eev-blinks.el (find-estring-2a): new function.
+
+       * eev-tlinks.el (ee-debootstrap0-pkgs-a, ee-debootstrap0-pkgs-b):
+       new variables.
+       (find-debootstrap0-links, ee-debootstrap0, ee-debootstrap1)
+       (find-debootstrap1-links, find-debootstrap2-links): new functions.
+
+2024-05-29  Eduardo Ochs  <[email protected]>
+
+       * eev-intro.el (find-debootstrap-intro, find-lean4-intro): new
+       functions.
+
 2024-05-22  Eduardo Ochs  <[email protected]>
 
        * eev-intro.el (find-windows-beginner-intro): added a line saying
diff --git a/VERSION b/VERSION
index 536d2909c8..eed09f251c 100644
--- a/VERSION
+++ b/VERSION
@@ -1,2 +1,2 @@
-Wed May 22 12:27:43 GMT 2024
-Wed May 22 09:27:43 -03 2024
+Thu May 30 08:17:50 GMT 2024
+Thu May 30 05:17:50 -03 2024
diff --git a/eev-blinks.el b/eev-blinks.el
index 2718d70965..8edc9bd0c1 100644
--- a/eev-blinks.el
+++ b/eev-blinks.el
@@ -21,7 +21,7 @@
 ;;
 ;; Author:     Eduardo Ochs <[email protected]>
 ;; Maintainer: Eduardo Ochs <[email protected]>
-;; Version:    20240512
+;; Version:    20240530
 ;; Keywords:   e-scripts
 ;;
 ;; Latest version: <http://anggtwu.net/eev-current/eev-blinks.el>
@@ -833,6 +833,9 @@ CODE argument, and process the POS-SPEC-LIST."
   (apply 'ee-goto-position pos-spec-list))
 
 ;; «find-estring»  (to ".find-estring")
+;; Tests: (find-2a nil '(find-estring       ";; Foo\n(+ 1 2)\n"))
+;;        (find-2a nil '(find-estring-elisp ";; Foo\n(+ 1 2)\n"))
+;;        (find-estring-2a                  ";; Foo\n(+ 1 2)\n")
 ;;
 (defun find-estring (string &rest pos-spec-list)
   "Visit a temporary buffer whose contents are given by STR.
@@ -850,6 +853,11 @@ runs `emacs-lisp-mode' in the buffer."
   (apply 'find-eoutput-rerun (or ee-buffer-name "*string*")
         `(progn (insert ,string) (emacs-lisp-mode)) pos-spec-list))
 
+(defun find-estring-2a (str &rest pos-spec-list)
+  "Show STR in the window at the right."
+  (find-2a nil `(find-estring str ,@pos-spec-list)))
+
+
 
 
 ;; TODO: Delete this.
diff --git a/eev-intro.el b/eev-intro.el
index e6135534c5..2108e94e75 100644
--- a/eev-intro.el
+++ b/eev-intro.el
@@ -19,7 +19,7 @@
 ;;
 ;; Author:     Eduardo Ochs <[email protected]>
 ;; Maintainer: Eduardo Ochs <[email protected]>
-;; Version:    20240522
+;; Version:    20240530
 ;; Keywords:   e-scripts
 ;;
 ;; Latest version: <http://anggtwu.net/eev-current/eev-intro.el>
@@ -103,6 +103,8 @@
 ;; «.find-show2-intro»                 (to "find-show2-intro")
 ;; «.find-lua-tutorial-intro»          (to "find-lua-tutorial-intro")
 ;; «.find-dot-emacs-intro»             (to "find-dot-emacs-intro")
+;; «.find-debootstrap-intro»           (to "find-debootstrap-intro")
+;; «.find-lean4-intro»                 (to "find-lean4-intro")
 
 ;; Videos:
 ;; «.find-three-main-keys-intro»       (to "find-three-main-keys-intro")
@@ -3110,18 +3112,20 @@ These ones explain advanced features that require extra 
setup:
   37. (find-rstdoc-intro)
   38. (find-show2-intro)
   39. (find-lua-tutorial-intro)
-  40. (find-prepared-intro)
-  41. (find-bounded-intro)
-  42. (find-channels-intro)
+  40. (find-debootstrap-intro)
+  41. (find-lean4-intro)
+  42. (find-prepared-intro)
+  43. (find-bounded-intro)
+  44. (find-channels-intro)
 
 This one was used in a video:
 
-  43. (find-three-main-keys-intro)
+  45. (find-three-main-keys-intro)
 
 These ones are obsolete:
 
-  44. (find-emacs-intro)
-  45. (find-defun-intro)
+  46. (find-emacs-intro)
+  47. (find-defun-intro)
 
 For an index of the videos, run:
 
@@ -17611,86 +17615,193 @@ This intro supposes that you know:
        (find-enode \"Find Init\")
      I will always refer to it as \"~/.emacs\".
 
+  6. how Emacs decides that ~/.emacs should be in emacs-lisp-mode:
+       (find-enode \"Choosing Modes\" \"auto-mode-alist\")
+       (find-evardescr 'auto-mode-alist)
+       (find-evardescr 'auto-mode-alist \"\\\\..*emacs\")
+
+  7. how to use `ee-copy-rest' and `ee-copy-rest-3':
+       (find-eev-quick-intro \"7.5. `find-latex-links'\")
+       (find-eev-quick-intro \"7.5. `find-latex-links'\" \"ee-copy-rest-3\")
+
+  8. how to use the local variables list:
+       (find-enode \"Specifying File Variables\" \"local variables list\")
+
 Here you will learn how (and why) to put messy notes _in elisp_
 at the end of your ~/.emacs. Note that this is a style that many
 people despise...
 
 
 
+1. A test with an error
+=======================
+Use this to add three lines to your ~/.emacs - before the local
+variables list - and then try to run a second Emacs:
 
-1. Cutting and pasting
-======================
-Make sure that you understand the basics of cutting and pasting,
-from:
-  (find-eev-quick-intro \"5.2. Cutting and pasting\")
-  (find-emacs-keys-intro \"3. Cutting & pasting\")
+;; (ee-copy-rest-3 nil \";;--end\" \"~/.emacs\")
+(setq aa 42)
+ERROR
+(setq bb 43)
+;;--end
 
-Emacs also has ways to put things in the kill ring directly. Try:
+In that second Emacs the variable `aa' will have the variable 42 and the
+variable `bb' will be undefined - the line with the ERROR will make
+Emacs abort, and stop executing ~/.emacs, before the `(setq bb 43)'. The
+error message generated by the ERROR is this one,
 
-  (kill-new \"foo\")
+  Symbol's value as variable is void: ERROR
 
-and try to understand what this does, and how to use it to paste
-two lines to your ~/TODO:
+and, bad news: it will not always be in a visible place...
 
-;;-- (ee-copy-rest '(0 \";;--snip--\") '(find-fline \"~/TODO\"))
-FOO
-BAR
-;;--snip--
+Now delete those three lines from your ~/.emacs.
 
-Hint:
-  (find-eev-quick-intro \"7.5. `find-latex-links'\")
-  (find-efunctiondescr 'ee-copy-rest)
-  (find-efunctiondescr 'ee-copy-rest0)
+(...)
 
 
 
 2. Lisp with hyperlinks in comments
 ===================================
-
-
   (find-eev-quick-intro \"7.1. `eejump'\")
   (find-eev-quick-intro \"7.1. `eejump'\" \"~/TODO\")
   (find-enode \"Major Modes\")
 
 
 
-3. emacs-lisp-mode
-==================
-# (find-evardescr 'auto-mode-alist)
-# (find-evariable 'auto-mode-alist)
-# (find-eppp auto-mode-alist)
-# (find-hvariable 'auto-mode-alist)
+3. Loading eev by default
+=========================
+See: (find-eev-levels-intro \"0. Introduction\")
 
-# (find-elnode \"Index\" \"* auto-mode-alist:\")
+;; (ee-copy-rest-3 nil \";;--end\" \"~/.emacs\")
+;; See: (find-eev-levels-intro)
+(require 'eev-load)               ; (find-eev \"eev-load.el\")
+(require 'eev-aliases)            ; (find-eev \"eev-aliases.el\")
+(eev-mode 1)                      ; (find-eev \"eev-mode.el\")
+;;--end
 
 
-second scratch, like ~/TODO
-M-15j
-stops at the first error
-add links in comments
-rewrite ee-copy-rest
-major mode: emacs-lisp
+
+" pos-spec-list)))
+
+;; (find-dot-emacs-intro)
 
 
-;;-- (ee-copy-rest '(0 \";;--snip--\") '(find-fline \"~/.emacs\"))
-;; See: (find-eev \"eev-load.el\")
-;;      (find-eev-install-intro \"_Activating_\")
-(require 'eev-load)
-(eev-mode 1)
+
+;;;      _      _                 _       _                   
+;;;   __| | ___| |__   ___   ___ | |_ ___| |_ _ __ __ _ _ __  
+;;;  / _` |/ _ \ '_ \ / _ \ / _ \| __/ __| __| '__/ _` | '_ \ 
+;;; | (_| |  __/ |_) | (_) | (_) | |_\__ \ |_| | | (_| | |_) |
+;;;  \__,_|\___|_.__/ \___/ \___/ \__|___/\__|_|  \__,_| .__/ 
+;;;                                                    |_|    
 ;;
-;; See: (find-kl-here-intro)
-;;      (find-eev \"eev-kl-here.el\")
-(require 'eev-kl-here)
-;;--snip--
+;; «find-debootstrap-intro»  (to ".find-debootstrap-intro")
+;; Skel: (find-intro-links "debootstrap")
+;; Test: (find-debootstrap-intro)
+
+(defun find-debootstrap-intro (&rest pos-spec-list) (interactive)
+  (let ((ee-buffer-name "*(find-debootstrap-intro)*"))
+    (apply 'find-eintro "\
+\(Re)generate: (find-debootstrap-intro)
+Source code:  (find-efunction 'find-debootstrap-intro)
+More intros:  (find-eev-quick-intro)
+              (find-eev-intro)
+              (find-eepitch-intro)
+This buffer is _temporary_ and _editable_.
+It is meant as both a tutorial and a sandbox.
+
+
+
+0. Introduction
+===============
+This other intro
+
+  (find-windows-beginner-intro)
+
+explains how to:
 
-auto-mode-alist
+  1. start with M$ Windows,
+  2. install WSL and a minimal Debian system on it,
+  3. install \"everything that you need (to learn Emacs, eev and
+     Maxima)\" there.
 
+This intro shows how to do something similar, but starting on Debian,
+and installing a \"subdebian\" using debootstrap.
 
+THIS IS A WORK IN PROGRESS!!!
+
+Try:
+
+  (find-debootstrap0-links)
+  (find-debootstrap1-links)
+  (find-debootstrap2-links)
 
 " pos-spec-list)))
 
-;; (find-dot-emacs-intro)
+;; (find-debootstrap-intro)
+
+
+
+
+;;;  _                     _  _   
+;;; | |    ___  __ _ _ __ | || |  
+;;; | |   / _ \/ _` | '_ \| || |_ 
+;;; | |__|  __/ (_| | | | |__   _|
+;;; |_____\___|\__,_|_| |_|  |_|  
+;;;                               
+;; «find-lean4-intro»  (to ".find-lean4-intro")
+;; Skel: (find-intro-links "lean4")
+;; Test: (find-lean4-intro)
+
+(defun find-lean4-intro (&rest pos-spec-list) (interactive)
+  (let ((ee-buffer-name "*(find-lean4-intro)*"))
+    (apply 'find-eintro "\
+\(Re)generate: (find-lean4-intro)
+Source code:  (find-efunction 'find-lean4-intro)
+More intros:  (find-eev-quick-intro)
+              (find-eev-intro)
+              (find-eepitch-intro)
+This buffer is _temporary_ and _editable_.
+It is meant as both a tutorial and a sandbox.
+
+
+THIS IS A WORK IN PROGRESS!
+THIS IS A VERY EARLY DRAFT!
+
+Test this page in HTML first:
+  http://anggtwu.net/eev-intros/find-lean4-intro.html
+
+  (find-lean4doc     \"whatIsLean\")
+  (find-leantpildoc  \"introduction\")
+  (find-fplean4doc   \"getting-to-know/evaluating\")
+  (find-leanmetadoc  \"main/01_intro\")
+  (find-leanmathsdoc \"index\")
+  (find-leanrefdocw  \"using_lean#using-lean-with-emacs\")
+
+https://leanprover-community.github.io/install/debian.html
+https://leanprover-community.github.io/install/debian_details.html
+
+(find-es \"lean\" \"lean4-mode\")
+
+Prerequisites:
+  (find-rstdoc-intro)
+  (find-angg \".emacs.lean.el\")
+  (find-angg-es-links)
+  (find-windows-beginner-intro \"7. Test Maxima with find-wget\")
+
+
+1. `find-wgetrecursive-links'
+=============================
+  (find-wgetrecursive-links \"https://lean-lang.org/lean4/doc/\";)
+  (find-wgetrecursive-links 
\"https://lean-lang.org/theorem_proving_in_lean4/\";)
+  (find-wgetrecursive-links 
\"https://lean-lang.org/functional_programming_in_lean/\";)
+  (find-wgetrecursive-links 
\"https://leanprover-community.github.io/lean4-metaprogramming-book/\";)
+  (find-wgetrecursive-links 
\"https://leanprover-community.github.io/mathematics_in_lean/\";)
+  (find-wgetrecursive-links \"https://leanprover.github.io/reference/\";)
+
+
+
+" pos-spec-list)))
 
+;; (find-lean4-intro)
 
 
 
diff --git a/eev-rstdoc.el b/eev-rstdoc.el
index d92f4e84b2..327d4171e9 100644
--- a/eev-rstdoc.el
+++ b/eev-rstdoc.el
@@ -25,8 +25,8 @@
 ;; Latest version: <http://anggtwu.net/eev-current/eev-rstdoc.el>
 ;;       htmlized: <http://anggtwu.net/eev-current/eev-rstdoc.el.html>
 ;;       See also: <http://anggtwu.net/eev-current/eev-beginner.el.html>
-;;                 <http://anggtwu.net/eev-intros/find-eev-intro.html>
-;;                                                (find-eev-intro)
+;;                 <http://anggtwu.net/eev-intros/find-rstdoc-intro.html>
+;;                                               (find-rstdoc-intro)
 
 ;; «.introduction»             (to "introduction")
 ;; «.default-defvars»          (to "default-defvars")
diff --git a/eev-tlinks.el b/eev-tlinks.el
index 92c3ba6361..2b004e1993 100644
--- a/eev-tlinks.el
+++ b/eev-tlinks.el
@@ -19,7 +19,7 @@
 ;;
 ;; Author:     Eduardo Ochs <[email protected]>
 ;; Maintainer: Eduardo Ochs <[email protected]>
-;; Version:    20240517
+;; Version:    20240530
 ;; Keywords:   e-scripts
 ;;
 ;; Latest version: <http://anggtwu.net/eev-current/eev-tlinks.el>
@@ -185,6 +185,11 @@
 ;; «.find-luainit-links»               (to "find-luainit-links")
 ;; «.find-luaso-links»                 (to "find-luaso-links")
 ;; «.find-subed-mpv-links»             (to "find-subed-mpv-links")
+;; «.find-debootstrap0-links»          (to "find-debootstrap0-links")
+;;   «.ee-debootstrap0»                        (to "ee-debootstrap0")
+;; «.find-debootstrap1-links»          (to "find-debootstrap1-links")
+;;   «.ee-debootstrap1»                        (to "ee-debootstrap1")
+;; «.find-debootstrap2-links»          (to "find-debootstrap2-links")
 
 
 (require 'eev-env)
@@ -4646,6 +4651,8 @@ du -ch
 
 # (find-fline     \"/tmp/wget-recursive/\")
 # (find-sh-at-dir \"/tmp/wget-recursive/\" \"find * | sort\")
+# (find-fline     \"{lurl}\")
+# (find-sh \"rm -Rv {lurl}\")
 
 cd     /tmp/wget-recursive/
 tar              -cvf /tmp/wget-recursive.tar .
@@ -5454,6 +5461,235 @@ lines.
 
 
 
+;;;      _      _                 _       _                   
+;;;   __| | ___| |__   ___   ___ | |_ ___| |_ _ __ __ _ _ __  
+;;;  / _` |/ _ \ '_ \ / _ \ / _ \| __/ __| __| '__/ _` | '_ \ 
+;;; | (_| |  __/ |_) | (_) | (_) | |_\__ \ |_| | | (_| | |_) |
+;;;  \__,_|\___|_.__/ \___/ \___/ \__|___/\__|_|  \__,_| .__/ 
+;;;                                                    |_|    
+;; See: (find-debootstrap-intro)
+
+;; «find-debootstrap0-links»  (to ".find-debootstrap0-links")
+;; Skel: (find-find-links-links-new "debootstrap0" "container n" 
"ee-buffer-name")
+;; Test: (find-debootstrap0-links)
+;;
+(defun find-debootstrap0-links (&optional container n &rest pos-spec-list)
+"See: (find-debootstrap-intro)"
+  (interactive)
+  (setq container (or container "subdebian"))
+  (setq n         (or n         "0"))
+  (let* ((ee-buffer-name "*find-debootstrap0-links*"))
+    (apply
+     'find-elinks
+     `((find-debootstrap0-links ,container ,n ,@pos-spec-list)
+       (find-debootstrap0-links "{container}" "{n}")
+       (find-debootstrap0-links)
+       ;; Convention: the first sexp always regenerates the buffer.
+       (find-efunction 'find-debootstrap0-links)
+       ""
+       ,(ee-debootstrap0 container n)
+       ,(ee-template0 "\
+")
+       )
+     pos-spec-list)))
+
+(defvar ee-debootstrap0-pkgs-a
+  "systemd,dbus,sudo,openssh-server,xauth,xterm")
+
+(defvar ee-debootstrap0-pkgs-b
+  "psmisc")
+
+
+;; «ee-debootstrap0»  (to ".ee-debootstrap0")
+;; Tests: (find-estring-2a (ee-debootstrap0 "subdebian" "0"))
+;;        (find-estring-2a (ee-debootstrap0 "{container}" "{n}"))
+;;
+(defun ee-debootstrap0 (&optional container n)
+  "An internal function used by `find-debootstrap0-links'."
+  (setq container (or container "subdebian"))
+  (setq n         (or n         "0"))
+  (ee-template0 "\
+ From: (find-estring-2a (ee-debootstrap0 \"{container}\" \"{n}\"))
+ See: https://wiki.debian.org/nspawn#Host_Preparation
+
+ (sh-mode)
+ (eepitch-shell)
+ (eepitch-kill)
+ (eepitch-shell)
+sudo bash
+  echo 'kernel.unprivileged_userns_clone=1' > /etc/sysctl.d/nspawn.conf
+  systemctl restart systemd-sysctl.service
+exit
+
+ Create a /var/lib/machines/{container}/ with debootstrap.
+ This takes several minutes.
+
+ (eepitch-shell3)
+ (eepitch-kill)
+ (eepitch-shell3)
+sudo ls -lAFh /var/lib/machines/
+sudo rm -Rf   /var/lib/machines/{container}/
+sudo debootstrap \\
+  --include={ee-debootstrap0-pkgs-a},{ee-debootstrap0-pkgs-b} \\
+  stable /var/lib/machines/{container}
+
+ Save /var/lib/machines/{container}/ into {container}{n}.tar.
+ This is very quick.
+
+sudo ls -lAFh /var/lib/machines/
+sudo du -ch   /var/lib/machines/
+sudo machinectl export-tar {container} /var/lib/machines/{container}{n}.tar
+sudo ls -lAFh /var/lib/machines/
+
+"))
+
+
+;; «ee-debootstrap1»  (to ".ee-debootstrap1")
+;; Tests: (find-estring-2a (ee-debootstrap1 "{user}" "{passwd}"))
+;;        (find-estring-2a (ee-debootstrap1 "edrx" "edrx"))
+;;
+(defun ee-debootstrap1 (&optional user passwd)
+  "An internal function used by `find-debootstrap1-links'."
+  (setq user   (or user   user-login-name))
+  (setq passwd (or passwd user))
+  (let* ((key (find-sh0 "cat ~/.ssh/id_rsa.pub")))
+    (ee-template0 "\
+ From: (find-estring-2a (ee-debootstrap1 \"{user}\" \"{passwd}\"))
+ (sh-mode)
+
+echo \"{passwd}/{passwd}/Full Name/////Y/\" | tr / '\\n' | adduser {user}
+
+ls -lAF /etc/sudoers
+echo '
+  # Edrx:
+  # (find-es \"sudo\")
+  User_Alias FULLTIMERS = {user}
+  FULLTIMERS ALL = NOPASSWD: ALL
+' | tee -a /etc/sudoers
+ls -lAF    /etc/sudoers
+
+mkdir -p            /home/{user}/.ssh/
+mkdir -p                 /root/.ssh/
+echo '{key}' > /home/edrx/.ssh/authorized_keys
+echo '{key}' >      /root/.ssh/authorized_keys
+chmod 600           /home/{user}/.ssh/authorized_keys
+chmod 700           /home/{user}/.ssh/
+chmod 600                /root/.ssh/authorized_keys
+chmod 700                /root/.ssh/
+chown -Rv {user}:{user} /home/{user}/.ssh/
+
+touch                    /root/.Xauthority
+touch               /home/{user}/.Xauthority
+chown     {user}:{user} /home/{user}/.Xauthority
+")))
+
+
+;; «find-debootstrap1-links»  (to ".find-debootstrap1-links")
+;; Skel: (find-find-links-links-new "debootstrap1" "container user passwd" 
"ee-buffer-name key")
+;; Test: (find-debootstrap1-links)
+;;
+(defun find-debootstrap1-links (&optional container user passwd &rest 
pos-spec-list)
+"See: (find-debootstrap-intro)"
+  (interactive)
+  (setq container (or container "subdebian"))
+  (setq user      (or user      user-login-name))
+  (setq passwd    (or passwd    user))
+  (let* ((ee-buffer-name "*find-debootstrap1-links*")
+        (key (find-sh0 "cat ~/.ssh/id_rsa.pub")))
+    (apply
+     'find-elinks
+     `((find-debootstrap1-links ,container ,user ,passwd ,@pos-spec-list)
+       (find-debootstrap1-links "{container}" "{user}" "{passwd}")
+       (find-debootstrap1-links)
+       ;; Convention: the first sexp always regenerates the buffer.
+       (find-efunction 'find-debootstrap1-links)
+       (find-efunction 'ee-debootstrap1)
+       ""
+       ,(ee-template0 "\
+ (setq truncate-lines t)
+ (sh-mode)
+ (eepitch-shell)
+ (eepitch-kill)
+ (eepitch-shell)
+
+ Restore /var/lib/machines/{container}/ from {container}0.tar.
+ This is very quick.
+sudo rm -Rf                /var/lib/machines/{container}/
+sudo ls -lAFh              /var/lib/machines/
+sudo machinectl import-tar /var/lib/machines/{container}0.tar {container}
+sudo ls -lAFh              /var/lib/machines/
+sudo du -ch                /var/lib/machines/{container}/
+
+
+
+
+sudo systemd-nspawn -U --machine {container}
+
+{(ee-debootstrap1 user passwd)}\
+
+exit
+
+
+
+
+
+ Save /var/lib/machines/{container}/ into {container}1.tar.
+ This is very quick.
+sudo ls -lAFh /var/lib/machines/
+sudo du -ch   /var/lib/machines/
+sudo machinectl export-tar {container} /var/lib/machines/{container}1.tar
+sudo ls -lAFh /var/lib/machines/
+")
+       )
+     pos-spec-list)))
+
+
+;; «find-debootstrap2-links»  (to ".find-debootstrap2-links")
+;; Skel: (find-find-links-links-new "debootstrap2" "container user" 
"ee-buffer-name")
+;; Test: (find-debootstrap2-links)
+;;
+(defun find-debootstrap2-links (&optional container user &rest pos-spec-list)
+"See: (find-debootstrap-intro)"
+  (interactive)
+  (setq container (or container "subdebian"))
+  (setq user      (or user user-login-name))
+  (let* ((ee-buffer-name "*find-debootstrap2-links*"))
+    (apply
+     'find-elinks
+     `((find-debootstrap2-links ,container ,user ,@pos-spec-list)
+       ;; Convention: the first sexp always regenerates the buffer.
+       (find-efunction 'find-debootstrap2-links)
+       ""
+       ,(ee-template0 "\
+ Export the ssh keys of the container to the host.
+ The tests in the \"Try:\" are optional.
+
+ (find-3EE '(eepitch-shell) '(eepitch-shell2))
+ (find-3ee '(eepitch-shell) '(eepitch-shell2))
+ (eepitch-shell)
+ (eepitch-shell2)
+sudo systemd-nspawn -U --machine {container}
+  mkdir -p /run/sshd     ; ps ax | grep ssh
+  /usr/sbin/sshd -p 4444 ; ps ax | grep ssh
+
+ (eepitch-shell)
+ssh-keygen -f ~/.ssh/known_hosts -R \"[localhost]:4444\"
+ssh -p 4444 -o StrictHostKeyChecking=accept-new root@localhost echo Ok
+ssh -p 4444 -o StrictHostKeyChecking=accept-new {user}@localhost echo Ok
+
+ Try:
+ (find-fline \"/scp:root@localhost#4444:\")
+ (find-fline \"/scp:{user}@localhost#4444:\")
+ (find-bgprocess \"ssh -p 4444 -X -f {user}@localhost xterm\")
+
+ (eepitch-shell2)
+  killall sshd;   sleep 1; ps ax | grep ssh
+exit
+")
+       )
+     pos-spec-list)))
+
+
 
 
 (provide 'eev-tlinks)

Reply via email to