summaryrefslogtreecommitdiff
path: root/Master/tlpkg/doc/historic
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2017-04-24 18:25:41 +0000
committerKarl Berry <karl@freefriends.org>2017-04-24 18:25:41 +0000
commit1d2f370a9e5ef5b6dfd1b26ffe1e19eea455feac (patch)
tree2fccff09ae0a6dd943c9e946afd93dd3cc338e4a /Master/tlpkg/doc/historic
parent8ff6b282102ff684f4745e02c4ad555c5a4dc88e (diff)
doc updates
git-svn-id: svn://tug.org/texlive/trunk@44019 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/tlpkg/doc/historic')
-rw-r--r--Master/tlpkg/doc/historic/multi-repository.txt151
-rw-r--r--Master/tlpkg/doc/historic/new-installer-layout.txt100
-rw-r--r--Master/tlpkg/doc/historic/tl-security-proposal.txt130
-rw-r--r--Master/tlpkg/doc/historic/tlmgr-shell.txt55
4 files changed, 436 insertions, 0 deletions
diff --git a/Master/tlpkg/doc/historic/multi-repository.txt b/Master/tlpkg/doc/historic/multi-repository.txt
new file mode 100644
index 00000000000..ca1192e080b
--- /dev/null
+++ b/Master/tlpkg/doc/historic/multi-repository.txt
@@ -0,0 +1,151 @@
+Multi source support in TeX Live v2
+-----------------------------------
+DEVELOPMENT NOTES -- SEE THE MANUAL PAGE OF TLMGR FOR CORRECT STATUS
+=====================================================================
+
+v2 of this patches has changed completely the idea of implementation.
+Background of the new idea is to leave the code base of tlmgr.pl itself
+as untouched as possible, and merge everything into TLPDB. TLPDBs can
+now either be a normal one as before, or a virtual one, collection
+different sources.
+
+(completely independent from generalized revisions)
+[karl: good.]
+
+1) extension of the location part in 00texlive.installation
+-----------------------------------------------------------
+
+The opt_location: line in 00texlive.installation normally gives the
+repository to be used. It can now contain a list of repositories in the
+form
+ repo1[#tag1] repo2[#tag2] ...
+
+Management of these items is thorugh
+ tlmgr repository
+action.
+ tlmgr repository list
+ tlmgr repository add repo [tag]
+ tlmgr repository remove name
+If no tag is given then internally (but not in the tlpdb) the tag
+and the repo path is the same.
+
+Removing is done by entering the tag (not the repo), but if no tags were
+given that is the same.
+
+
+If there are more than one tag, then there has to be one tagged
+ main
+which is the main repository.
+
+By default, if you start with only one entry (as before, the main),
+and add a new one, the tag "main" is automatically added to the
+previous tag to make all run smooth.
+
+THe repo at "main" is used for various settings, the main configuration
+options, etc etc. Idea is still that everyone has the main repo CTAN
+(or mirror or ...), and can add some sub-repos.
+
+2) invocation of tlmgr/installation
+-----------------------------------
+
+Normally tlmgr will install the candidate with the highest revision number.
+
+This is controlled by
+ TLPDB::virtual_candidate
+For now the policy is the highest rev number, but we can add later
+different policies.
+
+[karl: ok, given pinning below. otherwise i don't like it.]
+[norbert: Why, can you explain why you don't like that the highest revision
+ number wins?]
+[k2: because it is random, except in the one case where you want to use
+ it. that is, i understand that you want to copy a tl package, make
+ some local fixes, and install it locally, keeping track of the rev
+ number. that's fine for you. but there's no way most people are
+ going to bother with that. if mojca sets up a context repo, say,
+ those revision numbers are (should be) completely independent of tl's
+ revision numbers. therefore, all the context packages should be
+ pinned to the context repo, so the context repo always wins. without
+ pinning, it would be an unmaintainable situation.]
+
+That will be achieved by
+ tlmgr install package
+
+[FOR NOW THE FOLLOWING IS NOT IMPLEMENTED!!]
+If you want to install a package from a specific mirror you can do
+ tlmgr install package/TAG
+ (tlmgr install package/SOURCE)
+where TAG is the tag given above, and SOURCE is the full source address.
+So continuing the above example we could call
+ tlmgr install package/department
+or
+ tlmgr install package/http://server.local.uni/texlive/packages
+(maybe we don't allow the later form ...?)
+[karl: well, if it's done, then I see no reason not to support it.]
+
+done
+
+3) pinning
+----------
+
+tlmgr will evaluate an additional config file
+ ROOT/tlpkg/pinning
+or the one given via cmdline
+ tlmgr -pins /path/to/pinning/file
+[karl: maybe it should be found in texmf-local/tlpkg? look there
+ before ROOT/tlpkg but allow both? maybe other places too. have to think
+ about it. Also, the filename should be something clearer, perhaps
+ tlpkgpins.txt.]
+[norbert: agreed, that texmf-local might be a better place. should be
+ thought out]
+
+That file contains lines
+ package:tag:pin
+where package is a package name or * (or regexp? or glob context* eg?)
+[glob is better than regexp in this case I think]
+and tag is [a-z0-9,]+ as for tags above, or *,
+and pin is an integer between 0 and 1000.
+
+Now the evaluation *which* package will be installed will be done as follows:
+
+1) create the list of candidates, i.e., all tlpobj from different sources
+ where the name matches the one to be installed
+[karl: if a package is pinned to a single source (99% case, seems to
+ me), the other sources (e.g., default ctan) won't even be considered, right?]
+
+[norbert: well, it depends. There will be a default pin value of say 500,
+ and you can give pin values lower than 500 to prefer packages from other
+ sources, or higher pin values to prefer these sources]
+
+[k2: I understand there is all this flexibility, but that's not my
+point. I envision the single most common use of this (by far) to say
+"get package foo from my special location bar", where foo is a local
+font, or tlmgr from tlcritical. In these cases, the user will set a
+single location. And then it would be a waste of time for tlmgr to even
+consider looking at the default location (tlnet) for foo. It should not
+even be a candidate.]
+
+
+2) compute the pins of all the candidates
+
+3) if there are different pins cancel those candidates with a non-maximal pin
+ (i.e., let pin_max = max { pin(candidate) : candidate in candidates },
+ and new candidates are those with pin(candidate) = pin_max)
+
+4) within all the remaining candidates choose the one with the highest
+ revision number
+
+
+========================================
+
+Consequences of the above:
+- no source: part necessary in the revisions
+- packages can be pinned to a specific source, and will not be updated
+ even if another source ships a higher version number
+- no changes to the general server infrastructure are needed
+- default installations continue as before
+- normal installations with multiple sources but without pinning will
+ simply *do*the*right*thing*, namely install the highest revision number.
+[karl: it's unclear to me that that is the right thing, in general, but
+ I can see how it is the right thing in some cases, e.g., yours, so fine.]
+[norbert: see above ... I don't see the wrong point ;-) ]
diff --git a/Master/tlpkg/doc/historic/new-installer-layout.txt b/Master/tlpkg/doc/historic/new-installer-layout.txt
new file mode 100644
index 00000000000..3b869c4e1fc
--- /dev/null
+++ b/Master/tlpkg/doc/historic/new-installer-layout.txt
@@ -0,0 +1,100 @@
+Documentation of the content of the %vars hash which is the only way to
+transport ship information between various installer menus and the main
+program.
+
+1) collections and schemes
+--------------------------
+selected collections/schemes
+ collection-<collection> 0|1 OUT
+ scheme-<scheme> 0|1 OUT
+total number of collections
+ n_collections_available 84 IN
+and the number of collections selected:
+ n_collections_selected 1 OUT
+the selected scheme
+ selected_scheme scheme-<scheme> OUT
+
+
+2) platforms
+------------
+location of the arch
+ diskbin_<arch-os> 0|1 IN/OUT
+ netbin_<arch-os> 0|1 IN/OUT
+the current one
+ inst_platform <arch-os> IN
+the current platform ???
+ this_platform <arch-os> IN
+number of systems available in total
+ n_systems_available 15 IN
+number of systems selected
+ n_systems_selected 3 OUT
+
+
+3) options
+----------
+build all formats
+ option_fmt 0|1 OUT
+letter instead of A4
+ option_letter 0|1 OUT
+install symlinks (on unix)
+ option_symlinks 0|1 OUT
+and the respective destinations for the symlinks
+ sys_info <path/to/info/dir> OUT
+ sys_bin /usr/local/bin OUT
+ sys_man /usr/local/man OUT
+do install the doc files
+ option_doc 0|1 OUT
+do install the src files
+ option_src 0|1 OUT
+destination paths
+ TEXMFSYSVAR /home/norbert/tltest/2008/texmf-var OUT
+ TEXDIR /home/norbert/tltest/2008 OUT
+ TEXMFLOCAL /home/norbert/tltest/texmf-local OUT
+ TEXMFHOME ~/texmf OUT
+
+4) other stuff ???
+------------------
+total size to be used
+ total_size 54 DEDUCED
+no idea ????
+ page 0
+
+
+NEW LAYOUT
+==========
+
+%MediaData = (
+ media => CD|DVD|NET
+ location => /path/to/master | base-url
+ release => NNNN
+ tlpdb => the respective tlpdb
+ all_collections => [ ... ]
+ std_collections => [ ... ]
+ lang_collections => [ ... ]
+ lang_doc_collections => [ ... ]
+ schemes => [ ... ]
+ n_collections => NN
+ n_schemes => NN
+ diskbins => [ ... ]
+ netbins => [ ... ]
+ n_systems_available => NN (== #(#diskbins u #netbins))
+ this_platform => <arch-os>
+)
+
+%vars = (
+ systems => [ ... ] # those selected for installation
+ collections => [ ... ] # those selected for installation
+ selected_scheme => scheme-<scheme>
+ option_fmt => 0|1
+ option_letter 0|1 OUT
+ option_symlinks 0|1 OUT
+ sys_info <path/to/info/dir> OUT
+ sys_bin /usr/local/bin OUT
+ sys_man /usr/local/man OUT
+ option_doc 0|1 OUT
+ option_src 0|1 OUT
+ TEXMFSYSVAR /home/norbert/tltest/2008/texmf-var OUT
+ TEXDIR /home/norbert/tltest/2008 OUT
+ TEXMFLOCAL /home/norbert/tltest/texmf-local OUT
+ TEXMFHOME ~/texmf OUT
+)
diff --git a/Master/tlpkg/doc/historic/tl-security-proposal.txt b/Master/tlpkg/doc/historic/tl-security-proposal.txt
new file mode 100644
index 00000000000..b2d4a65a2f4
--- /dev/null
+++ b/Master/tlpkg/doc/historic/tl-security-proposal.txt
@@ -0,0 +1,130 @@
+Security Proposal for TeX Live
+==============================
+(last change NP 2016-03-19)
+
+Changelog:
+* 20160409
+* 20160319
+ key management, rewrite
+* 20160307
+ use md5 for location digest - saved tlpdb filename
+ switch to sha512
+* 20160104
+ initial document
+
+
+Aim is to give higher security and verification level to downloaded
+and installed packages of TeX Live. There are two possible attacks
+we want to detect:
+
+Attack scenaria
+===============
+breach of ctan mirror
+ can be detected via gpg signature
+breach of tug.org
+ revoke subkey
+ inform CTAN to tear down all mirrors
+ maybe have tlmgr action update-pubkey for receiving new subkey?
+ prepare new repo with new signing subkey
+
+
+TODO
+* location of the gpg keys
+ texlive.infra or new package texlive.keys
+ texlive.keys should be treated with special priority and updated
+ before anything else (?)
+
+Definitions:
+* checksum: defined via tl_checksum, currently is sha512
+* short checksum: defined via tl_short_digest, currently md5
+
+
+Verification Level 1: tlpdb
+===========================
+When a tlpdb is downloaded from the remote server there are two
+steps of verification:
+* download tlpdb
+* download tlpdb.checksum
+* if gpg is available
+ - download tlpdb.checksum.gpg
+ . if not available, continue without error!
+ - verify gpg signature
+ . if success, continue
+ . if failure, error out
+* verify tlpdb checksum
+
+Verification Level 2: containers
+================================
+The tlpdb ships size and checksum information of each container.
+These are verified after download.
+
+
+Verification of the installer
+=============================
+For the installer
+* installer packages are sha512 hashed (already done!)
+* the sha512 files are gpg signed with our gpg tlnet key
+* our public gpg key is included in texlive.infra package
+ (or in a separate texlive.keys package!)
+
+
+Other usage
+===========
+short checksum of *location* string of remote end
+if the database is present (tlpkg/texlive.tlpdb.MD5SUM) and the
+md5sum downloaded from 1) and the saved md5sum agree, do not
+redownload the remote tlpdb but use local copy
+
+
+Key management
+==============
+One master key TeX Live <tex-live@tug.org> which is kept
+offline at kb and np
+
+On signing sub key which is kept on tug.org for automatic signing of tlpdb.
+
+
+Key generation howto
+====================
+
+BASE=.../
+MAIN=$BASE/main
+SUB=$BASE/sub
+PUBONLY=$BASE/pub
+
+create gpg key
+--------------
+(To be done only once or when key is compromised!)
+ gpg --homedir $MAIN --no-use-agent genkey
+ ....
+
+ gives keyid KEYID (now 0x06BAB6BC)
+
+create signing sub key
+----------------------
+(needs to be done when we feel like it, not necessary for each year)
+
+ gpg --homedir $MAIN --no-use-agent --expert --edit-key $KEYID
+ gpg> addkey
+ ...
+ choose 4 (RSA (sign only)), expires 18m
+
+create subkey only dir for tug.org
+----------------------------------
+with gpg <= 2.0 we need to export secret subkeys, remove secret subkey
+(that removes all), and import only subkeys back in
+ rm -rf $SUB
+ cp -a $MAIN $SUB
+ gpg --homedir $SUB --no-use-agent --output secret-subkeys --export-secret-subkeys $KEYID
+ gpg --homedir $SUB --no-use-agent --delete-secret-key $KEYID
+ gpg --homedir $SUB --no-use-agent --import secret-subkeys
+
+
+create pubkey only dir for inclusion in texlive repo
+----------------------------------------------------
+ rm -rf $PUBONLY
+ cp -a $SUB $PUBONLY
+ gpg --homedir $PUBONLY --no-use-agent --delete-secret-key $KEYID
+ rm $PUBONLY/*~
+
+
diff --git a/Master/tlpkg/doc/historic/tlmgr-shell.txt b/Master/tlpkg/doc/historic/tlmgr-shell.txt
new file mode 100644
index 00000000000..7c2491f4291
--- /dev/null
+++ b/Master/tlpkg/doc/historic/tlmgr-shell.txt
@@ -0,0 +1,55 @@
+TeX Live Manager Shell
+======================
+
+to be written
+
+TODO & BUGS
+------------
+* need to restart after self update
+
+* installation from shell - command
+ init-location
+
+
+
+Description
+-----------
+
+after starting, tlmgr shell echos out the protocol version
+ $ tlmgr shell
+ protocol NNN
+where NNN is a natural number, increasing when some commands
+are added, changed.
+
+Question:
+Handling of settings: e.g., how to mimic --repository and how
+to distinguish it from settings to be saved into the tlpdb.
+(--repository is used only for one incantation, but not saved
+into tlpdb)
+
+Commands:
+---------
+* set
+ sets some variables not to be saved into the tlpdb
+ set repository ... == --repository
+ set debug-translation 1 == --debug-translations
+ set machine-readable 1 == --machine-readable
+ set no-execute-actions 1 == --no-execute-actions
+ set require-verification 0|1 == --(no-)require-verification
+ set verify-downloads 0|1 == --(no-)verify-downloads
+
+* quit|end|byebye
+ ends the session
+
+* load local|remote
+ loads the local or remote database
+ the remote tlpdb is determined by either the setting in the
+ loaded local tlpdb, or by the "repository" setting (see above)
+
+* save
+ saves the local tlpdb (this is also done by several actions)
+
+All other actions are converted to commands and behave in the
+absolut same way.
+
+