Contributor andruk on the System category
Start planning for Nix as a default package manager
Written by Breakable the 17 Apr 08 at 10:08.
Global category: System.
New
Nix is a purely functional package manager. It allows multiple versions of a package to be installed side-by-side, ensures that dependency specifications are complete, supports atomic upgrades and rollbacks, allows non-root users to install software, and has many other features. It is the basis of the NixOS Linux distribution, but it can be used equally well under other Unix systems.
These features seem to be superior to the current package management system. It would allow simple users to install applications on demand, uncluttered the current file system where you don't know which file is of which package and also provide superpowerfull control of package by its functional approach.
This seems like a superfeature that would take a huge amount of resources to implement, but maybe its time already to ask "what if?" and define a roadmap by which a migration could occur. Most likely it would require closely working with Debian distribution, and maybe even waiting until they migrate there first.
More information about nix:
http://nixos.org/
Many game/software vendor dislikes packaging systems
Written by Lachu the 10 Sep 09 at 07:55.
Global category: System.
New
The problem is software vendors don't like apt/yum, etc. and provide own installers. Giving some tools, like installer root privileges is a security hole! Many installers actually needs root privileges - it's very bad situation.
Solution #1:
Create D-BUS API for installers
Written by
Lachu the 10 Sep 09 at 07:55.
Ubuntu(and other distribution) should provide D-BUS based API for installer/uninstallers. You will get extra points if you integrate it with package database ;-) .
It should been integrated with PolicyKit, so administrators can give users access to install many kind of software(example software, which no needs setting suid bit and installing in /opt and don't change any files, can be installed by normal user; software which needs install in /sbin or /bin or /usr/bin, /usr/sbin should be installed only by superuser; or whatever).
This API should gives many functions, like copy executable into system directory(/bin), copy executable into superuser directory(/sbin, /usr/sbin or whatever), install user library(/usr/lib), install system-wide library(/lib), change file(delete existing file or writing own in the same place), change group of file, change owner of file, set uid bit, set guid bit, install nonexecutables(data) to /usr/share/*, installing user software(only have access to /opt), start installation.
All this action will be logged and reported. Additionally user may have simple uninstall software by system tools, because all performed operation are logged.
Installer should first call start installer function, so system show message to user like: This program will install software - continue? If user agree, DBUS returns the path, where the installer should unpack all of the files (in /tmp directory). Of course installer should register software name, etc., but it is long term task. If this is a game, it should install in /opt, so it call DBUS API to copy file from unpack folder into specify /opt folder, like copy_file_to_opt(file_name, opt_suffix).
I know is less secure than installing package, but is more secure than giving installer root privileges.
Ubuntu(and other distribution) should provide D-BUS based API for installer/uninstallers. You will get extra points if you integrate it with package database ;-) .
It should been integrated with PolicyKit, so administrators can give users access to install many kind of software(example software, which no needs setting suid bit and installing in /opt and don't change any files, can be installed by normal user; software which needs install in /sbin or /bin or /usr/bin, /usr/sbin should be installed only by superuser; or whatever).
This API should gives many functions, like copy executable into system directory(/bin), copy executable into superuser directory(/sbin, /usr/sbin or whatever), install user library(/usr/lib), install system-wide library(/lib), change file(delete existing file or writing own in the same place), change group of file, change owner of file, set uid bit, set guid bit, install nonexecutables(data) to /usr/share/*, installing user software(only have access to /opt), start installation.
All this action will be logged and reported. Additionally user may have simple uninstall software by system tools, because all performed operation are logged.
Installer should first call start installer function, so system show message to user like: This program will install software - continue? If user agree, DBUS returns the path, where the installer should unpack all of the files (in /tmp directory). Of course installer should register software name, etc., but it is long term task. If this is a game, it should install in /opt, so it call DBUS API to copy file from unpack folder into specify /opt folder, like copy_file_to_opt(file_name, opt_suffix).
I know is less secure than installing package, but is more secure than giving installer root privileges.
Solution #2:
Create a universal package format
Written by
dandart the 10 Sep 09 at 20:43.
Create a format that all distros can use and is easy to implement. Perhaps integrate into Apt/Rpm or have packages that both can understand somehow. Then we can download "Linux" package without having to worry if we want Apt or Rpm.
Create a format that all distros can use and is easy to implement. Perhaps integrate into Apt/Rpm or have packages that both can understand somehow. Then we can download "Linux" package without having to worry if we want Apt or Rpm.
Solution #3:
Support applications for single users
Written by
andruk the 11 Sep 09 at 02:12.
The reason apt needs root permissions is because the applications it installs are installed system-wide and therefore affect other users. If we allowed users to install programs to their home directory, then they could run their installed applications without affecting other users, and therefore wouldn't need to give apt root access.
This would have advantages with home users because my Applications menu wouldn't get cluttered when my daughter installs Barbietown to her home directory.
This would have advantages with sysadmins because they can run a piece of software from their home directory to test it out before installing it system-wide.
The system paths would have to be modified to look for libraries and executables in the home directory, but applications like Xournal already support this. This would also require the Applications menu to look in the user's home directory for the menus as well.
The reason apt needs root permissions is because the applications it installs are installed system-wide and therefore affect other users. If we allowed users to install programs to their home directory, then they could run their installed applications without affecting other users, and therefore wouldn't need to give apt root access.
This would have advantages with home users because my Applications menu wouldn't get cluttered when my daughter installs Barbietown to her home directory.
This would have advantages with sysadmins because they can run a piece of software from their home directory to test it out before installing it system-wide.
The system paths would have to be modified to look for libraries and executables in the home directory, but applications like Xournal already support this. This would also require the Applications menu to look in the user's home directory for the menus as well.
Solution #4:
Create libraries/shell script allowing to install package in specify directory
Written by
Lachu the 12 Sep 09 at 17:59.
Like in solution #3:
The main problem is many application have hardcoded path. There's no way to detect/guess path of specified file. Of course, we can recompile package, but it lack functionality for users.
The solution is simple. Create script scheme for setting environment, where specify files are placed. It should set PATH, LD_LIBRATY_PATH, XDG_HOME, CONFIG_PATH, etc. Script will also checking dependency and fixing it if not satisfied(also using install into directory technology).
Create also library, which allows program to read these setting/environment. Program should don't read file from /etc/program_config, but from $CONFIG_PATH/program_config.
If some environment isn't set, library should return default value.
User will have many scheme of installing application - install in: user home directory, system-wide(/), opt(/opt), custom paths.
And of course -- allow to set flag SUPPORT_PATH_SELECTING for package.
Like in solution #3:
The main problem is many application have hardcoded path. There's no way to detect/guess path of specified file. Of course, we can recompile package, but it lack functionality for users.
The solution is simple. Create script scheme for setting environment, where specify files are placed. It should set PATH, LD_LIBRATY_PATH, XDG_HOME, CONFIG_PATH, etc. Script will also checking dependency and fixing it if not satisfied(also using install into directory technology).
Create also library, which allows program to read these setting/environment. Program should don't read file from /etc/program_config, but from $CONFIG_PATH/program_config.
If some environment isn't set, library should return default value.
User will have many scheme of installing application - install in: user home directory, system-wide(/), opt(/opt), custom paths.
And of course -- allow to set flag SUPPORT_PATH_SELECTING for package.
Solution #5:
Autopackage, anyone?
This is much like #2, but why start from scratch?
We could push for better support and integration of autopackage with apt, rpm, etc.
Also, I think the need for root-permissions itself is not the real problem, it's the need to blindly trust the file you just downloaded. Of course, there is always a way to mess with a system, when the user executes your software, but this would be way better than "sudo ./somefileijustdownloaded". Autopackage can run with user rights and install into your home directory. And you can still integrate gpg-keys with this solution.
I'm not suggesting this as THE universal package format, but as a common solution for third party/proprietary software and commercial games.
This is much like #2, but why start from scratch?
We could push for better support and integration of autopackage with apt, rpm, etc.
Also, I think the need for root-permissions itself is not the real problem, it's the need to blindly trust the file you just downloaded. Of course, there is always a way to mess with a system, when the user executes your software, but this would be way better than "sudo ./somefileijustdownloaded". Autopackage can run with user rights and install into your home directory. And you can still integrate gpg-keys with this solution.
I'm not suggesting this as THE universal package format, but as a common solution for third party/proprietary software and commercial games.
Solution #6:
apt capable of install and manage any software on earth
Written by
darkjavi the 21 Sep 09 at 16:47.
And what about giving to apt/aptitude/synaptic the ability to control/install any software on earth not only deb packages.
apt could run the instalation from is inside and chroot the destination of the files generated by the installer into his own folders, so we can manage all the computer software from a single interface
And what about giving to apt/aptitude/synaptic the ability to control/install any software on earth not only deb packages.
apt could run the instalation from is inside and chroot the destination of the files generated by the installer into his own folders, so we can manage all the computer software from a single interface
Solution #7:
Sandbox for installers.
Written by
Lachu the 23 Sep 09 at 17:29.
Create sandbox for installers. It will check selinux context and when it isn't designed for installers, it will change it and fork with exec on executable file! It can't sets UID/GID bits or change any existing file, but can access to system directories.
Create sandbox for installers. It will check selinux context and when it isn't designed for installers, it will change it and fork with exec on executable file! It can't sets UID/GID bits or change any existing file, but can access to system directories.
Solution #8:
New compatibility layer
You all know how Wine works, right: importing an opensource clone of the Windows API. Now, imagine that for the Red Hat YUM/RPM compatibility. It's already opensourced, so you won't have to actually clone it. Also, you already have most of what you need because it's all Linux :>. Just offer it as a regular package and when users click on the .rpm just offer a dialog asking if they want to install it or Alien, showing all the pros and cons.
You all know how Wine works, right: importing an opensource clone of the Windows API. Now, imagine that for the Red Hat YUM/RPM compatibility. It's already opensourced, so you won't have to actually clone it. Also, you already have most of what you need because it's all Linux :>. Just offer it as a regular package and when users click on the .rpm just offer a dialog asking if they want to install it or Alien, showing all the pros and cons.
Solution #9:
make a gui for alien, and make it be default for rpm files
that would fix the rpm issue. beginners seem to get "scared" of the command line, and a gui saves time. that way, no matter whether they download an rpm or a deb, they are covered.
making it the default app for rpm would make it so a beginner wouldn't extract it by accident with archive manager. maybe you could then auto-load the resulting .deb.
that would fix the rpm issue. beginners seem to get "scared" of the command line, and a gui saves time. that way, no matter whether they download an rpm or a deb, they are covered.
making it the default app for rpm would make it so a beginner wouldn't extract it by accident with archive manager. maybe you could then auto-load the resulting .deb.
Solution #10:
DEB packages are good!!! Promote them harder!!!
Do not multiply another installer formats, apis, ect. they only do unnecesary complicity of Ubuntu. Promote DEB packages to become unofficial standard for every linux. Develop visual tools for easy and fast creation of deb files (something like debGLADE?).
Do not multiply another installer formats, apis, ect. they only do unnecesary complicity of Ubuntu. Promote DEB packages to become unofficial standard for every linux. Develop visual tools for easy and fast creation of deb files (something like debGLADE?).
Solution #11:
Create hybrid/common package format.
Written by
Lachu the 28 Oct 09 at 07:42.
Not create new package format/packaging system, but allow to pack many packages into single archive. Structure will looks like this:
root
|
+definition&scripts
| |
| +deb
| +rpm
| .....
|
+files(must have structure like tar.gz - if in specify distribution one file must be moved into other directory, it's task for script)
|
+common definitions (name of author, license, features - installation into directory, etc.)
How distribution should handle it? In simple way. It will only unpack it into /tmp and handle as normal package(ex. run installation script for this distribution). It can also generate .deb or .rpm.
It should helps users, who like to download software from network. It can also helps game creators, because CD's can be used as repository of software.
Maybe there can occurs some problems with binaries, but most data of program is a resources, like icons, graphics, etc. Resources are shared, so there is a reason to create hybrid format.
Not create new package format/packaging system, but allow to pack many packages into single archive. Structure will looks like this:
root
|
+definition&scripts
| |
| +deb
| +rpm
| .....
|
+files(must have structure like tar.gz - if in specify distribution one file must be moved into other directory, it's task for script)
|
+common definitions (name of author, license, features - installation into directory, etc.)
How distribution should handle it? In simple way. It will only unpack it into /tmp and handle as normal package(ex. run installation script for this distribution). It can also generate .deb or .rpm.
It should helps users, who like to download software from network. It can also helps game creators, because CD's can be used as repository of software.
Maybe there can occurs some problems with binaries, but most data of program is a resources, like icons, graphics, etc. Resources are shared, so there is a reason to create hybrid format.
Solution #12:
Add Autopackage support in Ubuntu Software Center
Written by
ivo000 the 1 Mar 11 at 20:11.
Integrate Autopackage package installer in Ubuntu Software Center
Integrate Autopackage package installer in Ubuntu Software Center
Resolve confusion of binary and SI sizes
Written by Tellur the 25 Oct 09 at 16:16.
Global category: System.
New
This is a very old problem: The duality of size-prefixes.
In theory there is a standardized convention on how to distinguish between SI-conform sizes (powers of 10, MB) and binary sizes (powers of 2, MiB). In practice they get confused almost everywhere, even inside Nautilus itself, where the use of SI-prefixes is at least consistently used in the binary sense.
Some programs (like Brasero) however they get mixed. While the calculation of filesizes in a project uses binary units and displays SI-prefixes, the size of DVD's is given in SI-units, thus frequently outputing a "disc to small" error.
Solution #1:
Use consistent prefixes
Written by
Tellur the 25 Oct 09 at 16:16.
The easiest solution is to consistently use the standardized prefixes following the IEC convention, where SI-prefixes get used for powers of 10 and the additional "i" between prefix and the unit-symbol B for binary powers (e.x.: MiB, GiB,...).
Make the standard display style switch-able would be a huge plus.
The easiest solution is to consistently use the standardized prefixes following the IEC convention, where SI-prefixes get used for powers of 10 and the additional "i" between prefix and the unit-symbol B for binary powers (e.x.: MiB, GiB,...).
Make the standard display style switch-able would be a huge plus.
Solution #2:
Use current "standard"
Written by
andruk the 29 Oct 09 at 15:37.
Consistently use KB, MB, GB, TB, etc. because that's how computers work.
Consistently use KB, MB, GB, TB, etc. because that's how computers work.
Hate having to unmount
Written by hobo14 the 29 Mar 09 at 09:57.
Global category: System.
New
We MUST unmount external drives before we remove them, otherwise we may have files unwritten, and disc may not automount next time; can cause huge headaches for a noob.
I have never in my life unmounted an external disc in windows, or suffered any problem for not doing so.
Solution #1:
Always flush buffer immediately.
Written by
hobo14 the 29 Mar 09 at 09:57.
Ubuntu should always immediately flush the buffer to the external disc, so it can be just ripped out without being unmounted manually.
Ubuntu should always immediately flush the buffer to the external disc, so it can be just ripped out without being unmounted manually.
Solution #2:
"Always flush buffer immediately" on specific drives
Written by
acidicX the 29 Mar 09 at 19:43.
Since a "always flush buffer immediately" function will decrease performance, you should be able to select the drives where you want it on. This selection should be stored (crypted, so no one can say which drives you are using)
I would love to have that option on my thumbdrive, I just typically upload small files (ppt, etc.) on it and remove it very quickly.
But I want to keep the performance of my external drive as high as possible - so I would therefore disable it on this drive.
Since a "always flush buffer immediately" function will decrease performance, you should be able to select the drives where you want it on. This selection should be stored (crypted, so no one can say which drives you are using)
I would love to have that option on my thumbdrive, I just typically upload small files (ppt, etc.) on it and remove it very quickly.
But I want to keep the performance of my external drive as high as possible - so I would therefore disable it on this drive.
Solution #3:
Configurable write timeouts
Written by
andruk the 30 Mar 09 at 03:59.
This is collected from Akerbos's comment below.
"You could choose not to flush immediately but after a time of inactivity. That would keep performance up while you work and enable you to unplug your drive shortly after you are finished. The length of the timeout interval could be configurabel [sic] and the states ('safe to remove' vs 'busy') could be visualised [sic] by drive icons or in the tray."
I think this would be the correct way to do Solution #2 - have different timeout intervals for different drives. This may be against the Gnome philosophy of "keeping it simply stupid" (sorry, that was a low blow), but I'm not so much interested in philosophy as I am in helping create an operating system that can be used easily, used well, and used often by the masses.
This is collected from Akerbos's comment below.
"You could choose not to flush immediately but after a time of inactivity. That would keep performance up while you work and enable you to unplug your drive shortly after you are finished. The length of the timeout interval could be configurabel [sic] and the states ('safe to remove' vs 'busy') could be visualised [sic] by drive icons or in the tray."
I think this would be the correct way to do Solution #2 - have different timeout intervals for different drives. This may be against the Gnome philosophy of "keeping it simply stupid" (sorry, that was a low blow), but I'm not so much interested in philosophy as I am in helping create an operating system that can be used easily, used well, and used often by the masses.
Solution #4:
Change device icon when it can be removed.
Written by
Lachu the 30 Mar 09 at 14:49.
As in topic. It can works?
As in topic. It can works?
Solution #5:
Solution already exists?
Written by
hobo14 the 1 Apr 09 at 00:43.
I think there's already a mechanism for doing this, it just doesn't happen automatically.
Manually put an entry in /etc/fstab for the removable device according to it's label or id, and use the "sync" option
(and that also means you can't use "default" because that includes "async").
Problem solved - I just wish it was automatic.
I think there's already a mechanism for doing this, it just doesn't happen automatically.
Manually put an entry in /etc/fstab for the removable device according to it's label or id, and use the "sync" option
(and that also means you can't use "default" because that includes "async").
Problem solved - I just wish it was automatic.
Software source file becomming a mess?
Written by afrodeity the 19 May 09 at 21:53.
Global category: System.
New
Unless you are the fastidious type who keeps notes and remembers to type information into the software source file along with the source, this file will quickly resemble an unmanageable list of strange urls and ppas which may or may not work. How to go about adding meaning and value to the sources file without taking up too much of the user's valuable time and energy?
combine "shred"-command with trash
Written by map84 the 7 Mar 09 at 11:05.
Global category: System.
New
To take more care about user's privacy, ubuntu should combine the "shred" command with the empty trash command.
Solution #1:
clicking "empty trash" should invoke "shred"
Written by
map84 the 7 Mar 09 at 11:05.
by clicking "empty trash" the shred command should overwrite the files stored in the trash-folder and deletes it afterwards.
by clicking "empty trash" the shred command should overwrite the files stored in the trash-folder and deletes it afterwards.
Solution #2:
use the gutmann method for this
use the gutmann method for this, this makes it impossible to "undelete" anything. the gutmann method overwhrits the file(s) 35 times with random data, making it more secure.
(this should be optional as deleting an eg. 4.5 GB .iso file takes a long time to overwhrite 35 times:)
like: right click>
secure delete
-------------------
normal/default delete
-------------------
recover file to:
-------------------
etc.
use the gutmann method for this, this makes it impossible to "undelete" anything. the gutmann method overwhrits the file(s) 35 times with random data, making it more secure.
(this should be optional as deleting an eg. 4.5 GB .iso file takes a long time to overwhrite 35 times:)
like: right click>
secure delete
-------------------
normal/default delete
-------------------
recover file to:
-------------------
etc.
Solution #3:
Nautilus Plugins in the Repos
Written by
andruk the 8 Mar 09 at 00:49.
If they aren't there already, include Nautilus plugins to do this. That way people who want this can have it, but normal users won't get confused by the intricate differences between "Move to Trash", "Delete from Trash", and "Shred".
If they aren't there already, include Nautilus plugins to do this. That way people who want this can have it, but normal users won't get confused by the intricate differences between "Move to Trash", "Delete from Trash", and "Shred".
Solution #4:
Have an option to delete securely with one time explanation
Written by
andrew.p the 16 Mar 09 at 21:48.
An option to undelete securely could be an advantage of the OS. There should be even a one-time explanation that deleted file can be restored and Ubuntu is the one OS that gives an option to erase file unrestorably. And there of course should be a warning saying that the operation can take a lot of time. I think we should have an option to do this with a single file instead of secure trash emptying because of amount of time the operation takes.
Encrypted partition or ext2 partition are not the solutions because a man can need such function once a year, for example, for one file. And what if he already wants to erase a file but don't have such partition?
An option to undelete securely could be an advantage of the OS. There should be even a one-time explanation that deleted file can be restored and Ubuntu is the one OS that gives an option to erase file unrestorably. And there of course should be a warning saying that the operation can take a lot of time. I think we should have an option to do this with a single file instead of secure trash emptying because of amount of time the operation takes.
Encrypted partition or ext2 partition are not the solutions because a man can need such function once a year, for example, for one file. And what if he already wants to erase a file but don't have such partition?
Backup the whole system permissions and be able to restore them easily.
Written by mmxgn the 18 Feb 09 at 15:59.
Global category: System.
New
In the past weeks, I tried to meddle with apache2 and svn. I resulted breaking something in the permissions of the whole filesystem so I tried to fix it by hand (apt-get whined about ROOT / to be WORLD-WRITEABLE) and ended up with an unusable system, which I fixed by backing up my home directory and reinstalling.
The idea is simple, try to use something like inotify or such that keeps a record of the permissions on the system and if something goes wrong, be able to restore it to the last working state.