Radish alpha
H
HardenedBSD Package Manager
Radicle
Git (anonymous pull)
Log in to clone via SSH
Add a TODO file.
jlaffaye committed 15 years ago
commit 5324e147818c71ad2c7e656f714ef582efc898d5
parent 3de0b861f15b28782f89e3a1f35e9eb184d47a7d
2 files changed +117 -103
added docs/GOALS
@@ -0,0 +1,103 @@
+
comamnds:
+
- pkg:
+
	- one command to rule them all
+
	- each time pkg has to query the installed database it will try to first
+
	  read the cache is the cache is too old (check but last mtime of the
+
	  directory) it will regenerate the cache from installed package
+

+
- pkg_*:
+
	this will be shell script their goal is to be 100% compatible with
+
	pkg_install they will call pkg which the good options
+

+
subcommands:
+
- add:
+
	- installs a package if local package is given
+
	- manage http/ftp url to download throught libfetch a package and try to
+
	  install it.
+
	- in the two previous case, if the package as not installed dependencies
+
	  it will try to fetch/find them in the same place the original package
+
	  was.
+
	- it will manage a completely new repository format pkg add bla will
+
	  check in the database of the repository if the is a bla package and
+
	  install it as well as it's dependencies but the dependencies will be
+
	  compute before begining the fetch install process, to be sure
+
	  everything is ok.
+
	- should be able to only take a plist or a manifest in argument
+
	  considering the files are already installed
+

+
- genrepo:
+
	- takes only one argument and generate two databases files (maybe more for
+
	  the time we will be willing to work with UPDATING and MOVED) the first
+
	  repo contain every informations concerning a package except files
+
	  (which will be in the second one) + it will compute and add a sha256
+
	  sum for each package.
+
	  the database will be a sqlite file compressed with the xz format.
+
	  the database will be signed so we can trust the sha256 of the
+
	  packages, so if a package has the expected hash, it is considered
+
	  trusted.
+

+
- search:
+
	- will search both the remote repository to gives informations
+
	  to users
+

+
- info: 
+
	- will give to users any informations about local package
+

+
- create:
+
	- will create the package in the new format (+MANIFEST) in txz (tar.xz)
+
	  directly options to create tbz and tgz will be provided.
+
	- it should be able to create a package for a "fakeroot" directory
+
	  taking a plist or a manifest in arguments (the plist is for
+
	  compatibility which bsd.ports.mk
+

+
- delete:
+
	- will delete a package normally to be able to remove the empty
+
	  directories cleanly it will delete every directory (found in the path
+
	  of the files) that are not in the package +MTREE (mtree contains the
+
	  official hier(7)
+

+
- upgrade:
+
	- will compute the remote repository to check is there is new upgrades
+
	  available and apply them.
+

+
- update:
+
	- will fetch the remote repository cache files
+

+
- lint: 
+
	- will check for the given package and warn the user about problems :
+
	* bad prefix
+
	* setuids
+
	* etc
+

+
General behaviour:
+
the manifest contains compatibility keywords: exec, unexec which will be
+
executed as there are in pkg_install but will display a warning to show the user
+
exec/unexec is deprecated
+

+
if install and deinstall scripts are found they will be executed as they were in
+
pkg_install warning for deprecated
+

+
the new manifest format will have:
+
in case of a new install:
+
pre-install
+
post-install
+

+
in case of a pkg delete:
+
pre-uninstall
+
post-uninstall
+

+
in case of an upgrade : 
+
pre-upgrade
+
post-upgrade
+

+
they could be files +PRE-* +POST* etc
+
they could be sh string in the manifest in arrays:
+
"pre-nstall": [
+
        "/usr/sbin/pw useradd foo",
+
],
+

+
they could be both
+

+
some informations could be found here if there is conflicts in the two this file
+
is right :):
+
http://wiki.freebsd.org/Pkg_install2_specs
modified docs/TODO
@@ -1,103 +1,14 @@
-
comamnds:
-
- pkg:
-
	- one command to rule them all
-
	- each time pkg has to query the installed database it will try to first
-
	  read the cache is the cache is too old (check but last mtime of the
-
	  directory) it will regenerate the cache from installed package
-

-
- pkg_*:
-
	this will be shell script their goal is to be 100% compatible with
-
	pkg_install they will call pkg which the good options
-

-
subcommands:
-
- add:
-
	- installs a package if local package is given
-
	- manage http/ftp url to download throught libfetch a package and try to
-
	  install it.
-
	- in the two previous case, if the package as not installed dependencies
-
	  it will try to fetch/find them in the same place the original package
-
	  was.
-
	- it will manage a completely new repository format pkg add bla will
-
	  check in the database of the repository if the is a bla package and
-
	  install it as well as it's dependencies but the dependencies will be
-
	  compute before begining the fetch install process, to be sure
-
	  everything is ok.
-
	- should be able to only take a plist or a manifest in argument
-
	  considering the files are already installed
-

-
- genrepo:
-
	- takes only one argument and generate two databases files (maybe more for
-
	  the time we will be willing to work with UPDATING and MOVED) the first
-
	  repo contain every informations concerning a package except files
-
	  (which will be in the second one) + it will compute and add a sha256
-
	  sum for each package.
-
	  the database will be a sqlite file compressed with the xz format.
-
	  the database will be signed so we can trust the sha256 of the
-
	  packages, so if a package has the expected hash, it is considered
-
	  trusted.
-

-
- search:
-
	- will search both the remote repository to gives informations
-
	  to users
-

-
- info: 
-
	- will give to users any informations about local package
-

-
- create:
-
	- will create the package in the new format (+MANIFEST) in txz (tar.xz)
-
	  directly options to create tbz and tgz will be provided.
-
	- it should be able to create a package for a "fakeroot" directory
-
	  taking a plist or a manifest in arguments (the plist is for
-
	  compatibility which bsd.ports.mk
-

-
- delete:
-
	- will delete a package normally to be able to remove the empty
-
	  directories cleanly it will delete every directory (found in the path
-
	  of the files) that are not in the package +MTREE (mtree contains the
-
	  official hier(7)
-

-
- upgrade:
-
	- will compute the remote repository to check is there is new upgrades
-
	  available and apply them.
-

-
- update:
-
	- will fetch the remote repository cache files
-

-
- lint: 
-
	- will check for the given package and warn the user about problems :
-
	* bad prefix
-
	* setuids
-
	* etc
-

-
General behaviour:
-
the manifest contains compatibility keywords: exec, unexec which will be
-
executed as there are in pkg_install but will display a warning to show the user
-
exec/unexec is deprecated
-

-
if install and deinstall scripts are found they will be executed as they were in
-
pkg_install warning for deprecated
-

-
the new manifest format will have:
-
in case of a new install:
-
pre-install
-
post-install
-

-
in case of a pkg delete:
-
pre-uninstall
-
post-uninstall
-

-
in case of an upgrade : 
-
pre-upgrade
-
post-upgrade
-

-
they could be files +PRE-* +POST* etc
-
they could be sh string in the manifest in arrays:
-
"pre-nstall": [
-
        "/usr/sbin/pw useradd foo",
-
],
-

-
they could be both
-

-
some informations could be found here if there is conflicts in the two this file
-
is right :):
-
http://wiki.freebsd.org/Pkg_install2_specs
+
ALPHA
+
- use pkg_error_* everywhere in libpkg (pkg_create.c to do)
+
- pkg add (client) need to fetch files if arg is an URL
+
- add facility in libpkg to fetch files so we can use it for pkg add (client)
+
  and later to dowload packages from repo, and even to download the repo.db.
+
that means a function with a callback to display progress.
+
- pkg version (comparison against ports tree and INDEX)
+

+

+
BETA
+
- genrepo
+
- install from repo
+
- update repo (fetch repo.db)
+
- upgrade from repo (!!)