diff options
author | Karl Berry <karl@freefriends.org> | 2017-04-24 18:25:41 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2017-04-24 18:25:41 +0000 |
commit | 1d2f370a9e5ef5b6dfd1b26ffe1e19eea455feac (patch) | |
tree | 2fccff09ae0a6dd943c9e946afd93dd3cc338e4a /Master/tlpkg/doc/historic | |
parent | 8ff6b282102ff684f4745e02c4ad555c5a4dc88e (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.txt | 151 | ||||
-rw-r--r-- | Master/tlpkg/doc/historic/new-installer-layout.txt | 100 | ||||
-rw-r--r-- | Master/tlpkg/doc/historic/tl-security-proposal.txt | 130 | ||||
-rw-r--r-- | Master/tlpkg/doc/historic/tlmgr-shell.txt | 55 |
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. + + |