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)