Timo Teras
ea90152664
apk: use *at instead of chdir+normal file syscall
...
this way we never change cwd, and relative filenames are always
parsed consistently. this also helps filename construction in many
places. this patch also changes '--root' to override location of
all configuration to be in the new root. previously it depended
on the file which one was used.
2009-07-31 16:08:09 +03:00
Natanael Copa
fe43d8ab1d
db: allow update of untrusted index
2009-07-30 19:16:37 +00:00
Timo Teras
c1fe6d08f3
db: fix checksum storing to db
...
also take precautions in audit code if the db is missing the
checksum.
2009-07-30 11:55:59 +03:00
Timo Teras
5b48b85560
audit: protection mask for "symlinks only"
...
and use it for /etc/init.d by default. fixes #99 .
2009-07-30 10:42:20 +03:00
Timo Teras
f482701eee
db: fix protected directory handling ( fixes #89 )
...
we don't want to do checksumming of existing files unless it's
in a protected directory. also, we keep the original file if it's
*modified*.
2009-07-29 19:39:59 +03:00
Timo Teras
7b05eef61f
tar: make checksumming of inner files conditional
...
and force checksumming only when unpacking archive. otherwise
it's extra computation for nothing.
2009-07-29 19:16:04 +03:00
Timo Teras
195859b3fd
db: fix repository write locking
2009-07-24 14:12:59 +03:00
Timo Teras
e1b489c8b5
db: increase required verbosity for filename prints
2009-07-24 14:04:57 +03:00
Timo Teras
c8c52e1dc6
db: remove APK_NAME_VIRTUAL flag
...
use the package 'installed_size' == 0 as a test instead for
dependency only packages.
2009-07-24 14:02:56 +03:00
Timo Teras
e5be34335c
db: create cache index with non-repository packages
...
this enables virtual packages and files specified from command
line to work on non-harddisk installs.
2009-07-24 14:00:57 +03:00
Timo Teras
042879f417
index: fully process archive when reading index for signature check
...
can't cancel an index reading or we lose signature checking.
2009-07-23 11:41:10 +03:00
Timo Teras
a388f4bfa6
index: more informative error message
...
when failed to load an existing index.
2009-07-23 11:35:40 +03:00
Timo Teras
90aaa28a95
apk: add --purge option ( fixes #61 )
...
and do not remove modified configuration files unless --purge is
specified.
2009-07-22 21:34:25 +03:00
Timo Teras
718ef3079e
add: fixes to installing non-repository package
...
make sure cache is enabled on non-permanent rootfs setups.
some optimizations and fixes too.
2009-07-22 20:47:21 +03:00
Timo Teras
23582a0ec5
db: honour clean-protected flag again
2009-07-22 16:00:14 +03:00
Timo Teras
93f0b3524c
various: more informative error messages
2009-07-22 14:56:27 +03:00
Timo Teras
0a7991f70d
various: misc fixes
...
- error codes for verification failure types
- fix some fdb corruption on file migration
- combine some dependency parsing code
- fix versioned dependencies
2009-07-22 14:24:19 +03:00
Timo Teras
0dadc27ce1
db: fix protected directory handling
...
do not overwrite untracked files.
2009-07-22 12:00:56 +03:00
Timo Teras
680a301511
various: installation fixes
...
- extract everything as .apk-new and overwrite only after data
has been checksummed
- url construction fixes (to work with simple http servers)
- end of gunzip stream fixed
- remove oneshot digesting flag for now as it's usage was broken
2009-07-22 11:36:55 +03:00
Timo Teras
772e4aa26a
various: fix installation of new style apks
2009-07-21 18:25:22 +03:00
Timo Teras
2345548e45
index: read also new style index files
2009-07-21 17:59:08 +03:00
Timo Teras
75802cb07d
db: increase hash sizes a bit
2009-07-21 14:26:06 +03:00
Timo Teras
1339b14365
db: don't run pre-install until control data is verified
...
to make sure the scripts have not been altered.
2009-07-21 14:06:35 +03:00
Timo Teras
84e3786e05
db: fixes to package checksumming while installing it
2009-07-21 13:49:35 +03:00
Timo Teras
89d1abe4e6
db: write errors about repository update ( fixes #70 )
2009-07-20 11:41:45 +03:00
Timo Teras
eca9c22205
db: signed index loading (ref #46 )
...
prefer index in the new format as signed .tar.gz.
2009-07-20 11:13:03 +03:00
Timo Teras
e30834fdcb
digest: use oneshot context flag where approriate
...
speeds up digest calculation on some cases.
2009-07-17 15:56:09 +03:00
Timo Teras
6b471bb614
various: new style index generation
...
change the index generation to do old index, or the new style index
where package identity is sha1 of control block and it's contained
within an .tar.gz to allow signing in future.
2009-07-16 15:16:05 +03:00
Timo Teras
0f6d96a4f5
gzip: always autoclose the inner stream
2009-07-16 13:47:26 +03:00
Timo Teras
6715a0ba12
pkg: remove support for the deprecated .INSTALL script
2009-07-16 08:52:22 +03:00
Timo Teras
623bc9c5a8
index: reuse existing index ( fixes #25 )
...
replace the old 'delete' option, with 'index'. the idea is that
one can provide existing index files to take cached meta-data of
the package from (assumes package has not been modified if index is
newer, and package size has not changed).
this way one always gives the list of .apk files to include in
the new index, and the old index is used only as "cache".
2009-07-15 16:47:43 +03:00
Timo Teras
981bc118f8
db: live with sha1 and md5
...
this also convers scripts file to a tar archive.
2009-07-14 19:14:05 +03:00
Timo Teras
e9eaedff50
db: remove debug print
...
was left there unintentionally while debugging stuff.
2009-07-14 17:44:31 +03:00
Timo Teras
8d1eeb58e4
blob: some helpers to replace snprintf
...
snprintf is dog slow. make the blob stuff have some helper functions
so we can use them in code paths that are executed often.
2009-07-14 13:27:21 +03:00
Timo Teras
ab37bd0b0c
db: speed up fdb creation
...
avoid recalculating hashes, and store the lengths of names, so
we can optimize some operations.
2009-07-14 11:55:08 +03:00
Timo Teras
f1985b03bd
hash: allow caching of hash value
2009-07-14 10:47:20 +03:00
Timo Teras
4562f44f9b
bstream: make tokenizable and load index using bstream
...
some fixes on index reading code too.
2009-07-14 09:33:47 +03:00
Timo Teras
e69b81f525
io: move csumming away from bstream to gunzip
...
in future we want to checksum on gzip boundary basis, not the
full file.
2009-07-13 20:37:03 +03:00
Natanael Copa
fa47cadb98
db: removed apk_repository_update_all() as its no longer needed
...
We use APK_UPDATE_CACHE apk_flag instead.
2009-07-09 06:25:27 +00:00
Natanael Copa
080fa825dd
implement --update-cache option
...
This will update the repository cache upon db_open.
2009-07-09 06:08:44 +00:00
Timo Teras
f1125dfcde
db: check cache directory early
...
we need to know if caching is enabled, before the repositories are
added. otherwise the cache is not used properly at db opening time.
2009-07-08 16:19:53 +03:00
Timo Teras
bf094dc5ea
csum: use openssl instead
...
instead of having static md5 implemenation, use the openssl
library for digest functions.
2009-07-08 10:45:49 +03:00
Timo Teras
c84196e0d3
apk: add --wait option to wait for exclusive lock ( fixes #26 )
2009-07-07 10:30:54 +03:00
Timo Teras
1a54de02b5
db: open flags revisited
...
more fine grained control what to load, and rename some of the
flags to be shorter.
2009-07-07 09:27:56 +03:00
Timo Teras
9858ffff69
cache: new applet (ref #49 )
...
Administrative tool to download or delete files to/from the cache.
2009-06-29 11:22:55 +03:00
Timo Teras
233918e518
db: cache packages (ref #49 )
...
If /etc/apk/cache is a symlink to directory, a copy of all installed
packages is stored there, and the index of remote repositories will
be there instead of /var/lib/apk. This enables to reconstruct running
system during boot.
Left as todo: remove cached copy when the package is removed, and
additional apk applet to download missing packages to cache and/or
remove extra items.
2009-06-29 09:29:57 +03:00
Timo Teras
fac4cdb3fa
blob: function to checksum a blob
...
And use it in couple of places. Some whitespace fixes too.
2009-06-28 18:52:40 +03:00
Natanael Copa
cb074581f0
db: add function apk_repository_update_all
...
We might want to add an --update-index option to misc applets. For
example:
apk add --update-index -u package
apk version --update-index
2009-06-19 19:01:15 +02:00
Natanael Copa
9e58b2dd55
db: warn rather than fail with error if a repo index fails to load
2009-05-19 09:39:57 +00:00
Natanael Copa
250dee4101
db: fix bug that made inverted new installs and upgrades
...
We upgrade when we have an oldpkg.
2009-05-18 14:22:43 +00:00
Natanael Copa
b91f9406da
add: support for virtual meta packages
...
implements 'apk add --virutal metaname dep1 dep2...' where metaname will
be an empy meta package with dep1 and dep2 as dependencies.
This is useful to prevent abuild to add each makedepend to world which
causes some headache when it comes to unintalling them after sucessful build.
2009-05-14 12:01:09 +00:00
Natanael Copa
2b6e5d6e40
index: support for -d to delete packages from given index
...
The syntax is: apk index -d /path/to/APK_INDEX.gz pkg...
It does not seem like its possible to remove packages in the db so we
trick apk_db_index_write() by setting the repo to on-zero.
It's still not perfect since it does not recalculate the dependencies.
2009-05-12 06:27:25 +00:00
Natanael Copa
b0921ebac5
info: do not read the repositories as this tool only query the statedb
...
This allows you to query the state db even if you do not have write
permissions in cache dir (which is needed if you have remote repositories)
This should speed up things and save some memory if you have big and slow
remote repositories.
2009-04-21 11:39:16 +00:00
Natanael Copa
74b5e4f535
db: do not assume root ends with '/'
2009-04-21 08:51:18 +00:00
Natanael Copa
9d22718d1d
db: improve error reporting
...
apk_db_add_repository does its own error reporting and does not set errno
reliable. This patch also tell which repository it failed to load the index
for rather than just say it failed to open "APK_INDEX.gz" which does not tell
much.
2009-04-21 08:17:17 +00:00
Natanael Copa
1ae6f9d972
db: fix bug in apk_repository_update()
2009-04-21 08:12:12 +00:00
Timo Teras
4c2bfd9ded
db: cache index files, 'update' applet
...
Cache non-local index files always locally.
Introduce 'update' applet to force refresh of cached index files.
Fixes #19 .
2009-04-16 20:05:22 +03:00
Timo Teras
ec5b63c5e4
pkg: clean up writing of dependencies
2009-04-16 17:05:27 +03:00
Timo Teras
18db1c4cd3
db: fix addition of .apks not in any repository
2009-04-16 14:03:17 +03:00
Timo Teras
9567337fd2
fetch: new applet to download .apk files
...
Fixes #24 .
2009-04-15 09:56:09 +03:00
Timo Teras
a23f6f4afb
state: rework changeset calculation algorithm
...
Calculate changesets directly by stabilizating the package graph instead of
recalculating the whole graph and then diffing (similar approach as seen
in 'smart' package manager). The algorithm is not complete: defferred
search space forking is missing. So you don't always get a solution on
complex graphs.
Benefits:
- usually the search state tree is smaller (less memory used)
- speed relational to changeset size, not database size (usually faster)
- touch only packages related to users request (can work on partitially
broken state; upgrades only necessary packages, fixes #7 )
Also implemented:
- command prompt to confirm operation if packages are deleted or downgraded
- requesting deletion of package suggests removal of all packages depending
on the package being removed (you'll get list of packages that also get
removed if you want package X removed)
- option --simulate to see what would have been done (mainly for testing)
- an untested implementation of versioned dependencies and conflicts
A lot has changed, so expect new bugs too.
2009-04-14 18:48:02 +03:00
Timo Teras
c11b70c7f0
db: track reverse dependencies
...
This will be used later by the commit change calculator (for improved
changeset calculation, ref #7 ). Will be also used by "apk info" to show
reverse dependencies or "required by" information.
2009-04-14 09:21:30 +03:00
Timo Teras
7735cc644d
pkg: write dependencies directly file instead of buffer
...
So we don't get artificial limits on the amount of dependencies
(fixes #8 ).
2009-03-17 13:19:06 +02:00
Natanael Copa
2b10123399
db: unlink apk-new if it is identical to existing config
2009-03-04 09:27:59 +00:00
Timo Teras
3752b47e7b
db: apk-new should be created if the existing file is modified
2009-03-04 11:08:49 +02:00
Timo Teras
652a7bb179
db: fix overwrite warning
2009-03-04 11:00:17 +02:00
Timo Teras
a62dcf37c1
apk: --force to overwrite files
2009-03-04 08:36:56 +02:00
Timo Teras
457943f83e
apk: --clean-protected option
...
So you will not get .apk-new files of the new configuration files.
2009-03-04 08:27:06 +02:00
Timo Teras
7027a7d844
db: new apk to have separate install scripts for each action
2009-02-27 11:18:15 +02:00
Natanael Copa
ca51ec3238
db: allow more than one --repository arg
2009-02-17 12:23:01 +00:00
Natanael Copa
502e5612cc
db: do not allow overwrite busybox links
...
we let bb use /bin and /sbin, all packages overriding busybox must
install the bins in /usr/bin and /usr/sbin
2009-02-08 19:31:25 +00:00
Timo Teras
b8eb27d75b
db: fix purging of packages from database
...
apk_hash_delete() actually deletes the file entry, so unlinking
from other lists need to happen before that. Also free the diri
instead of leaking it.
2009-01-22 21:45:18 +02:00
Natanael Copa
3bcc676a2b
db: print files when (un)installing if --verbose
2009-01-22 15:55:27 +00:00
Natanael Copa
75b339cae2
db: always create directories during install
...
We dont care if a directory have references or not, we care if directory
is relly there.
Only the creator of the direcotry will set the permissions.
This fixes the situation where you install a package owning a dir then
you remove this dir manually and try install a second package also owning
the dir.
For example:
apk add e2fsprogs-dev
rm -rf /usr/lib/pkgconfig
apk add zlib-dev
2009-01-22 10:34:03 +00:00
Natanael Copa
02073e84d6
db: let apk_db_open() leave working dir as it was
2009-01-21 09:03:10 +00:00
Timo Teras
aee61d0a0b
db: try creating db if locking fails
...
Otherwise creating rootfs from scratch with --initdb cannot be locked
due to the lock file path missing.
2009-01-19 21:19:36 +02:00
Natanael Copa
57407ed4e9
db: create .apk-new even if file not in db
...
Protect files in protected dirs even if the file is not previously
registered in the database. We do so by always extracting to a
.apk-new file name, compare the checksums afterwards and rename if
file was identical.
2009-01-18 14:49:18 +01:00
Timo Teras
a98b57b1ae
db: database locking and creation to part of opening it
...
Add flags field to db open call. Also make error reporting quite a bit
more detailed.
2009-01-17 11:08:48 +02:00
Timo Teras
1a9cc552a5
del: proper ordering of file db entry deletion
2009-01-17 09:33:02 +02:00
Timo Teras
edfaac3099
db: apk_db_read_state() needs to be before apk_db_add_repository()
...
Otherwise installed db load fails due to internal reasons. This would
cause a lot of other funny stuff happen.
2009-01-16 16:25:19 +02:00
Timo Teras
82b9cb31fd
db: make fetching from other than first repository work
2009-01-16 15:38:04 +02:00
Timo Teras
1b5422fb4a
index: write out only packages specified in command line
...
Ignore /etc/apk/repositories, so additional repositories that depend
on other repositories need to have explicit --repository reference on
command line when generating the index (to avoid warnings).
2009-01-16 15:14:23 +02:00
Timo Teras
6b6c10cdf2
db: fix relative --root to work after apk_db_create call
...
This was broke on --initdb addition to add applet since apk_db_create
changes the working directory.
2009-01-16 14:52:47 +02:00
Natanael Copa
af6f329fc7
db: set the perms to /var/lib/apk/* to 644
...
this allows non-root users to query the database.
2009-01-16 08:17:28 +00:00
Timo Teras
cf3dfb7611
db, hash: fix package purging/upgrading to update filedb properly
2009-01-16 09:33:05 +02:00
Natanael Copa
fed45e4b7f
db: try create root in case it does not exist
...
But we dont bother try create all subdirs (i.e mkdir -p ...)
2009-01-16 07:07:15 +00:00
Timo Teras
cfdef51bee
db: index file location is a URL
2009-01-15 12:55:26 +02:00
Timo Teras
2cfde12c89
audit: new command to check changed files
...
Currently only implement --backup to get list of (config) files in
protected directories to backup.
This also fixes a database corruption bug in database.c.
2009-01-14 19:48:30 +02:00
Timo Teras
15b547c55b
db: keep only filename in file entries, hash by both directory and file
2009-01-14 10:44:47 +02:00
Timo Teras
3309eaa900
add: --initdb to replace create applet
2009-01-13 20:58:08 +02:00
Timo Teras
a59347fdac
db: hash files by name, instead of keep two directory lists
2009-01-13 20:32:18 +02:00
Timo Teras
b7f9f9bdb2
info: implement who owns packages query (apk_info -W)
...
In quiet mode e.g. "apk info -q -W <file list>" a list of dependencies
suitable for .PKGINFO is output in one line.
2009-01-13 15:22:14 +02:00
Timo Teras
3755e1cde3
apk: per applet options
2009-01-13 14:09:45 +02:00
Natanael Copa
09385545d9
db, package: new dependency format, second try
...
dependencies are separated with single space rather than ', '.
makes db file slightly easier to parse from a shell script which
might be handy.
2009-01-11 14:03:55 +00:00
Natanael Copa
f54b7bc320
db: report error when create db in non-existing dir
2009-01-09 10:19:23 +00:00
Natanael Copa
08748b5c3f
db: allow comments and empty lines in repositories file
2009-01-08 09:12:39 +00:00
Natanael Copa
174dd41113
src/database.c: get repository file from environment variable APK_REPOS
...
Defaults to /etc/apk/repositories, absolute path and not relative
the install root.
2009-01-08 07:16:53 +00:00
Timo Teras
052fbe3f86
various: make fancy progress bar and update todo
2009-01-07 21:45:11 +02:00
Timo Teras
c7ffc96a16
db: rmdir() directories only on package purge
2009-01-06 21:23:26 +02:00
Timo Teras
0655699133
db: remove forgotten debug print
2009-01-06 21:23:26 +02:00
Timo Teras
0314104d93
db, pkg: fix rest of memory leaks
2009-01-06 21:23:26 +02:00
Timo Teras
6b2b9d303e
db: restructure in-memory organization
2009-01-06 21:23:26 +02:00
Timo Teras
dc2ffc30e8
io: apk_ostream stuff
2008-11-28 16:28:54 +02:00
Timo Teras
4bafa681fe
io: prepartions for url handling
2008-11-28 15:03:27 +02:00
Timo Teras
5ea81ca564
add: add support to install packages not in a repository
2008-11-28 13:34:40 +02:00
Timo Teras
545a915faf
db: rework 'files' to 'installed'
...
Make the db of installed packages more similar to index file and
reuse the code. Also rename the database file.
2008-11-28 13:15:06 +02:00
Timo Teras
a96572fba8
db: compressed index file
2008-11-27 21:06:45 +02:00
Timo Teras
f0609951b9
hash, db: use apk_blob_t and list_*
2008-11-27 20:25:01 +02:00
Timo Teras
1a7f3e3678
various: use apk_istream api
2008-11-27 16:59:04 +02:00
Timo Teras
8e23a2ba4e
db: checksum installed files, protect config files
...
Checksum of installed is computed on the fly when extracting them
and it'll be saved to fdb. When installing config files those are
diverted with suffix .apk-new if earlier version of same file with
local changes exist.
2008-11-14 14:26:59 +02:00
Timo Teras
ffa03a21d8
db: remember empty .apks
2008-11-11 09:00:10 +02:00
Timo Teras
aef0f036f0
use zlib internally to decompress
2008-11-07 17:11:08 +02:00
Timo Teras
6967c28b96
db: fix installation of apk v1 packages
2008-11-07 13:22:16 +02:00
Timo Teras
36f73847ee
pkg: support for new scripts
2008-11-07 13:05:55 +02:00
Timo Teras
014d39488b
db: do not install .PKGINFO files
2008-11-07 09:51:53 +02:00
Timo Teras
57154db85d
db: parse new style .PKGINFO
2008-11-06 16:58:58 +02:00
Natanael Copa
cb25f35ed4
give more helpful error messages
2008-10-26 11:35:34 +00:00
Timo Teras
219a1b2ee8
Overwriting of bb files, apk_create (from old apk-tools), chdir changes,
...
other stuff.
2008-04-22 08:16:26 +00:00
Timo Teras
384c2f1d94
Preserve uid and gid. Quiet flag to print dots on progress.
2008-04-22 06:04:20 +00:00
Timo Teras
823283edca
Argument parsing. Some other stuff too.
2008-04-21 16:30:10 +00:00
Timo Teras
d6c7435242
Initial commit of some stuff written so far. Still in state of flux. Expect
...
breakage and major changes.
2008-04-17 14:09:13 +00:00