Re: installing an end user editable file

2011-02-15 Thread james frize
Hey Boyd,

With regards to: "Perhaps you are installing your template with
permissions that are too restrictive"

You're totally right! This was causing my script to fail, thanks very
much for pointing it out, everything is working perfectly now :)
Now I've familiarized myself with the wiki on chmod hopefully I won't
make that mistake again.

Very pleased to get it working, for a moment it felt like I'd never
get it right.

Cheers.

Jim.


-- 
To UNSUBSCRIBE, email to debian-mentors-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: 
http://lists.debian.org/AANLkTikbCUDNcEX8FCFJZqwYsrZu3ty=hbmvaslq1...@mail.gmail.com



Re: installing an end user editable file

2011-02-14 Thread Ben Finney
Kris Deugau  writes:

> james frize wrote:
> > However, I can't open a file from /usr/share via my python script as
> > I don't have permission to open files in a protected directory
>
> >  print "loading links.txt from usr/share/doc/gtk-link-lizard..."
> >  try:
> >  self.text_file =
> > open("usr/share/doc/gtk-link-lizard/links.txt","r")
>
> Check your filesystem paths carefully; unless I totally misunderstand
> some bizarre aspect of Python syntax, you're trying to open
> "usr/share/doc/gtk-link-lizard/links.txt" relative to whatever the
> code thinks the current directory is […]

You understand correctly. James has confused absolute paths with
relative paths.

-- 
 \  “Programs must be written for people to read, and only |
  `\incidentally for machines to execute.” —Abelson & Sussman, |
_o__)  _Structure and Interpretation of Computer Programs_ |
Ben Finney


-- 
To UNSUBSCRIBE, email to debian-mentors-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/87zkpygmvh@benfinney.id.au



Re: installing an end user editable file

2011-02-14 Thread james frize


Cheers Kris, Well spotted!

Thankfully I'd already spotted that one! But yeah, it makes a massive
difference that one "/"

Jim.


-- 
To UNSUBSCRIBE, email to debian-mentors-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: 
http://lists.debian.org/aanlktiksew+fogog9mgbpq1rnijxcnzcgmtxund0h...@mail.gmail.com



Re: installing an end user editable file

2011-02-14 Thread Boyd Stephen Smith Jr.
On Monday 14 February 2011 13:38:13 james frize wrote:
> However, I can't open a file from /usr/share via my python script

That's wrong.  Most of /usr/share should be world-readable.  Perhaps you are 
installing your template with permissions that are too restrictive.  I believe 
/usr/share files should mostly be 644.
-- 
Boyd Stephen Smith Jr.   ,= ,-_-. =.
b...@iguanasuicide.net  ((_/)o o(\_))
ICQ: 514984 YM/AIM: DaTwinkDaddy `-'(. .)`-'
http://iguanasuicide.net/\_/


signature.asc
Description: This is a digitally signed message part.


Re: installing an end user editable file

2011-02-14 Thread Kris Deugau

james frize wrote:

However, I can't open a file from /usr/share via my python script as I
don't have permission to open files in a protected directory



 print "loading links.txt from usr/share/doc/gtk-link-lizard..."
 try:
 self.text_file =
open("usr/share/doc/gtk-link-lizard/links.txt","r")


Check your filesystem paths carefully;  unless I totally misunderstand 
some bizarre aspect of Python syntax, you're trying to open 
"usr/share/doc/gtk-link-lizard/links.txt" relative to whatever the code 
thinks the current directory is, not the absolute path 
"/usr/share/doc/gtk-link-lizard/links.txt".


-kgd


--
To UNSUBSCRIBE, email to debian-mentors-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/4d59a819.4090...@vianet.ca



Re: Re: installing an end user editable file

2011-02-14 Thread james frize
Thanks very much Lars,

That's massively helpful, it clarifies a lot of stuff, I reckon I
should be able to get this package working properly now, phew! - I
knew making your first Debian package had a reputation for taking a
few attempts, but I wasn't quite ready for this!

Regards.

Jim.



On 14 February 2011 21:28, Lars Buitinck  wrote:
> 2011/2/14 james frize :
>> Hey mentors,
>
> I'm not a mentor, I just lurk on this list to learn.
>
>
>> I like the idea of having a default copy of the file used by my
>> program, as suggested by Lars and PJ, so I've altered my source code
>> to use a default file and allow multiple users to have their own
>> copies of this file in their home//Documents folder.
>>
>> "creating a default file in /usr/share and having the program copy it
>> to the user's directory when it's run"
>>
>> However, I can't open a file from /usr/share via my python script as I
>> don't have permission to open files in a protected directory, and
>> after reading up a bit on it, it's been suggested that it's bad form
>> to invoke super user in a script, as it's construed as a security risk
>> (i.e. http://tldp.org/HOWTO/Security-HOWTO/file-security.html;
>> http://www.velocityreviews.com/forums/t346075-sudo-open-python-newbee-question.html)
>>
>> Do I really have to use sudo or super user privileges to just open and
>> copy a text template?
>
> Not at all. I was thinking along the lines of:
>
>
> def homedir():
>    '''Get current user's homedir'''
>
>   home = os.getenv('HOME')
>   if home == None:
>      raise IOError('cannot copy links.txt: HOME not set')
>   return home
>
> def open_links_txt():
>   '''Open links.txt; install for current user if necessary'''
>
>   # http://standards.freedesktop.org/basedir-spec/basedir-spec-0.6.html
>   datadir = os.getenv('XDG_DATA_HOME')
>   if datadir == None:
>      datadir = os.path.join(homedir(), '.local', 'share')
>
>   links_txt = os.path.join(datadir, 'links.txt')
>
>   if not os.path.exists(links_txt):
>      shutil.copy('/usr/share/gtk-link-lizard/links.txt', links_txt)
>
>   return open(links_txt)
>
>
> Notes:
> * UNTESTED CODE, may contain the stupidest of syntax errors or worse
> * contains a race condition due to the use of os.path.exists, but that
> shoudn't matter unless the user sets XDG_DATA_HOME to the wrong value
> or has a world-writable homedir (in which case s/he's doomed anyway)
> * I know this doesn't fit the original app particularly well, so
> please integrate with existing code.
>
>
>> Where do packagers normally install files of this type?
>
> I put it in /usr/share/gtk-link-lizard for the purpose of the example.
> I don't know the Debian packaging rules by heart, but /usr/share/doc
> seems to be the wrong place; that's for documentation. It should be
> safe to remove documentation (sudo rm -rf /usr/share/doc) without
> applications suddenly starting to malfunction.
>
>
>> I thought it might be a good idea to store it in
>> home//. But I'm still at a loss as to how I can
>> find a users home directory from the rules makefile :(
>>
>> been trying to use ~/ and $XDG_CONFIG_HOME but I just end up with
>> everything being installed in folders called "~" or "DG_CONFIG_HOME"
>
> DON'T. Users' homedirs are off limits to package managers such as
> dpkg. The application, when run, may install a file there, but the
> rules script should not.
>
>
> Regards,
> Lars
>


--
To UNSUBSCRIBE, email to debian-mentors-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: 
http://lists.debian.org/aanlktikqfdon5rjimrrmp9vnx+egd_ywjn1bojf8g...@mail.gmail.com



Re: Re: installing an end user editable file

2011-02-14 Thread Lars Buitinck
2011/2/14 james frize :
> Hey mentors,

I'm not a mentor, I just lurk on this list to learn.


> I like the idea of having a default copy of the file used by my
> program, as suggested by Lars and PJ, so I've altered my source code
> to use a default file and allow multiple users to have their own
> copies of this file in their home//Documents folder.
>
> "creating a default file in /usr/share and having the program copy it
> to the user's directory when it's run"
>
> However, I can't open a file from /usr/share via my python script as I
> don't have permission to open files in a protected directory, and
> after reading up a bit on it, it's been suggested that it's bad form
> to invoke super user in a script, as it's construed as a security risk
> (i.e. http://tldp.org/HOWTO/Security-HOWTO/file-security.html;
> http://www.velocityreviews.com/forums/t346075-sudo-open-python-newbee-question.html)
>
> Do I really have to use sudo or super user privileges to just open and
> copy a text template?

Not at all. I was thinking along the lines of:


def homedir():
'''Get current user's homedir'''

   home = os.getenv('HOME')
   if home == None:
  raise IOError('cannot copy links.txt: HOME not set')
   return home

def open_links_txt():
   '''Open links.txt; install for current user if necessary'''

   # http://standards.freedesktop.org/basedir-spec/basedir-spec-0.6.html
   datadir = os.getenv('XDG_DATA_HOME')
   if datadir == None:
  datadir = os.path.join(homedir(), '.local', 'share')

   links_txt = os.path.join(datadir, 'links.txt')

   if not os.path.exists(links_txt):
  shutil.copy('/usr/share/gtk-link-lizard/links.txt', links_txt)

   return open(links_txt)


Notes:
* UNTESTED CODE, may contain the stupidest of syntax errors or worse
* contains a race condition due to the use of os.path.exists, but that
shoudn't matter unless the user sets XDG_DATA_HOME to the wrong value
or has a world-writable homedir (in which case s/he's doomed anyway)
* I know this doesn't fit the original app particularly well, so
please integrate with existing code.


> Where do packagers normally install files of this type?

I put it in /usr/share/gtk-link-lizard for the purpose of the example.
I don't know the Debian packaging rules by heart, but /usr/share/doc
seems to be the wrong place; that's for documentation. It should be
safe to remove documentation (sudo rm -rf /usr/share/doc) without
applications suddenly starting to malfunction.


> I thought it might be a good idea to store it in
> home//. But I'm still at a loss as to how I can
> find a users home directory from the rules makefile :(
>
> been trying to use ~/ and $XDG_CONFIG_HOME but I just end up with
> everything being installed in folders called "~" or "DG_CONFIG_HOME"

DON'T. Users' homedirs are off limits to package managers such as
dpkg. The application, when run, may install a file there, but the
rules script should not.


Regards,
Lars


-- 
To UNSUBSCRIBE, email to debian-mentors-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: 
http://lists.debian.org/aanlktini7anmw0fcspshj2sxpf4wyafbtl70diz8p...@mail.gmail.com



Re: Re: installing an end user editable file

2011-02-14 Thread Pietro Battiston
Il giorno lun, 14/02/2011 alle 19.38 +, james frize ha scritto:
> Hey mentors,
> 
> Firstly, thanks for all the help so far.
> 
> I like the idea of having a default copy of the file used by my
> program, as suggested by Lars and PJ, so I've altered my source code
> to use a default file and allow multiple users to have their own
> copies of this file in their home//Documents folder.
> 
> "creating a default file in /usr/share and having the program copy it
> to the user's directory when it's run"
> 
> However, I can't open a file from /usr/share via my python script as I
> don't have permission to open files in a protected directory, and
> after reading up a bit on it, it's been suggested that it's bad form
> to invoke super user in a script, as it's construed as a security risk
> (i.e. http://tldp.org/HOWTO/Security-HOWTO/file-security.html;
> http://www.velocityreviews.com/forums/t346075-sudo-open-python-newbee-question.html)
> 
> Do I really have to use sudo or super user privileges to just open and
> copy a text template?

No, you don't.

Just try

python -c "print open('/usr/share/common-licenses/GPL').readline()"


, but more in general: just try.


> 
> Where do packagers normally install files of this type?
> 
> I thought it might be a good idea to store it in
> home//. But I'm still at a loss as to how I can
> find a users home directory from the rules makefile :(

You've already been explained that this is _wrong_, regardingless of how
you do it.




> 
> been trying to use ~/ and $XDG_CONFIG_HOME but I just end up with
> everything being installed in folders called "~" or "DG_CONFIG_HOME"
> 
> Here's the source code if you need more info:
> 
> #!/usr/bin/python
> 
> # Code Name: gtk-link-lizard
> # Created By: Jim Frize, 
> # Copyright (C) 2011 Jim Frize, 
> 
> # Licence: GTK Link Lizard is free software: you can redistribute it
> and/or modify it under the terms of the GNU General Public License as
> published by the Free Software Foundation, either version 3 of the
> License, or (at your option) any later version. This program is
> distributed in the hope that it will be useful, but WITHOUT ANY
> WARRANTY; without even the implied warranty of MERCHANTABILITY or
> FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
> for more details. You should have received a copy of the GNU General
> Public License along with this program. If not, see
> 
> 
> # Version: 1.5
> # Description: Simple GUI for storing and displaying web links
> 
> # This GUI will do away with synchronizing bookmarks between browsers,
> web links are stored in a regular text file which is found in your
> documents folder. GTK Link Lizard makes it easy to edit, swap or
> replace a list of clickable links
> 
> import pygtk
> pygtk.require("2.0")
> import gtk
> import sys
> import re
> import os
> 
> path = os.getenv("HOME")
> 
> class link_lizard():
> 
> def __init__(self):
> 
> self.load_main()
> 
> #
> # Load File #
> #
> def load_file(self):
> try:
> self.text_file = open(path +
> "/Documents/gtk-link-lizard/links.txt","r+")
> except IOError:
> print "loading links.txt from usr/share/doc/gtk-link-lizard..."
> try:
> self.text_file =
> open("usr/share/doc/gtk-link-lizard/links.txt","r")
> self.text_file.write(path +
> "/Documents/gtk-link-lizard/links.txt")
> self.text_file = open(path +
> "/Documents/gtk-link-lizard/links.txt","r+")
> except IOError:
> print "ERROR: link.txt not found"
> 
> #
> # Load main GUI #
> #
> def load_main(self, data=None):
> # Create main window
> self.main_window = gtk.Window(gtk.WINDOW_TOPLEVEL)
> # Quit main function when window is destroyed
> self.main_window.connect("destroy", gtk.main_quit)
> self.main_window.set_size_request(600, 600)
> self.main_window.set_position(gtk.WIN_POS_CENTER)
> self.main_window.set_opacity(0.9)
> self.main_window.set_title("GTK Link Lizard")
> self.main_window.set_keep_above(True)
> 
> # Create scrolled window
> scrolled_window = gtk.ScrolledWindow()
> scrolled_window.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC)
> 
> # Create placement boxes and dictionaries
> main_box = gtk.VBox(homogeneous=False)
> link_box = gtk.VBox(homogeneous=False)
> linkbutton = {}
> label = {}
> 
> # Create edit button
> edit_button = gtk.Button("Edit Links")
> edit_button.connect("clicked", self.load_edit)
> 
> # Count number of lines in text file
> self.load_file()
> number_lines = len(self.text_file.readlines())
> 
> # Reset counter and check through each line of text
> count = 0
> 
>  

Re: Re: installing an end user editable file

2011-02-14 Thread james frize
Hey mentors,

Firstly, thanks for all the help so far.

I like the idea of having a default copy of the file used by my
program, as suggested by Lars and PJ, so I've altered my source code
to use a default file and allow multiple users to have their own
copies of this file in their home//Documents folder.

"creating a default file in /usr/share and having the program copy it
to the user's directory when it's run"

However, I can't open a file from /usr/share via my python script as I
don't have permission to open files in a protected directory, and
after reading up a bit on it, it's been suggested that it's bad form
to invoke super user in a script, as it's construed as a security risk
(i.e. http://tldp.org/HOWTO/Security-HOWTO/file-security.html;
http://www.velocityreviews.com/forums/t346075-sudo-open-python-newbee-question.html)

Do I really have to use sudo or super user privileges to just open and
copy a text template?

Where do packagers normally install files of this type?

I thought it might be a good idea to store it in
home//. But I'm still at a loss as to how I can
find a users home directory from the rules makefile :(

been trying to use ~/ and $XDG_CONFIG_HOME but I just end up with
everything being installed in folders called "~" or "DG_CONFIG_HOME"

Here's the source code if you need more info:

#!/usr/bin/python

# Code Name: gtk-link-lizard
# Created By: Jim Frize, 
# Copyright (C) 2011 Jim Frize, 

# Licence: GTK Link Lizard is free software: you can redistribute it
and/or modify it under the terms of the GNU General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version. This program is
distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
for more details. You should have received a copy of the GNU General
Public License along with this program. If not, see


# Version: 1.5
# Description: Simple GUI for storing and displaying web links

# This GUI will do away with synchronizing bookmarks between browsers,
web links are stored in a regular text file which is found in your
documents folder. GTK Link Lizard makes it easy to edit, swap or
replace a list of clickable links

import pygtk
pygtk.require("2.0")
import gtk
import sys
import re
import os

path = os.getenv("HOME")

class link_lizard():

def __init__(self):

self.load_main()

#
# Load File #
#
def load_file(self):
try:
self.text_file = open(path +
"/Documents/gtk-link-lizard/links.txt","r+")
except IOError:
print "loading links.txt from usr/share/doc/gtk-link-lizard..."
try:
self.text_file =
open("usr/share/doc/gtk-link-lizard/links.txt","r")
self.text_file.write(path +
"/Documents/gtk-link-lizard/links.txt")
self.text_file = open(path +
"/Documents/gtk-link-lizard/links.txt","r+")
except IOError:
print "ERROR: link.txt not found"

#
# Load main GUI #
#
def load_main(self, data=None):
# Create main window
self.main_window = gtk.Window(gtk.WINDOW_TOPLEVEL)
# Quit main function when window is destroyed
self.main_window.connect("destroy", gtk.main_quit)
self.main_window.set_size_request(600, 600)
self.main_window.set_position(gtk.WIN_POS_CENTER)
self.main_window.set_opacity(0.9)
self.main_window.set_title("GTK Link Lizard")
self.main_window.set_keep_above(True)

# Create scrolled window
scrolled_window = gtk.ScrolledWindow()
scrolled_window.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC)

# Create placement boxes and dictionaries
main_box = gtk.VBox(homogeneous=False)
link_box = gtk.VBox(homogeneous=False)
linkbutton = {}
label = {}

# Create edit button
edit_button = gtk.Button("Edit Links")
edit_button.connect("clicked", self.load_edit)

# Count number of lines in text file
self.load_file()
number_lines = len(self.text_file.readlines())

# Reset counter and check through each line of text
count = 0

while(count < number_lines):
self.load_file()
all_lines = self.text_file.readlines()
current_line = all_lines[count]
match = re.search("http://";, current_line)
match2 = re.search("https://";, current_line)
match3 = re.search("www.", current_line)

# If http link is found, make a linkButton
if match:
current_url = match.group()
# Remove http://
split_line = current_line.split("http://";)

  

Re: installing an end user editable file

2011-02-13 Thread james frize
Cheers PJ and Boyd,

To be honest I never thought about having multiple users, just
learning about the packaging process and I'm experimenting with what I
can do. But I guess it's a much better idea to have a template and a
copy for each user, will have to add it to the source.

Thanks for the responses.

Jim.


-- 
To UNSUBSCRIBE, email to debian-mentors-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: 
http://lists.debian.org/aanlktikjh9x_knp-u719qd2ykp0ffn8owbjiz32xs...@mail.gmail.com



Re: installing an end user editable file

2011-02-13 Thread Boyd Stephen Smith Jr.
In , james frize 
wrote:
>Basically I'm copying over a text file that has a list of web links
>in, after the program is installed the file needs to be edited by the
>end user, so I'm trying to put the file in a place where a regular
>user would have permission to both read and write to the text file.

Which user?  All users?  Should each user have a separate copy?

Normally, per-user configuration files would be created by that user.  An 
example could go into /usr/share/ where a user could copy it into 
their home directory.  You could also install something into /etc/skel; the 
contents of this directory are normally copied into a new user's home 
directory when the user is created.

Keep in mind that that while many Debian installations are effectively single-
user, that Debian is designed to support multiple users and to move cleanly 
from having one real user to many real users.
-- 
Boyd Stephen Smith Jr.   ,= ,-_-. =.
b...@iguanasuicide.net   ((_/)o o(\_))
ICQ: 514984 YM/AIM: DaTwinkDaddy `-'(. .)`-'
http://iguanasuicide.net/\_/


signature.asc
Description: This is a digitally signed message part.


Re: Re: installing an end user editable file

2011-02-13 Thread PJ Weisberg
On 2/13/11, Craig Small  wrote:
> On Sun, Feb 13, 2011 at 06:24:06PM +, james frize wrote:
>> I'm looking at installing the links.txt file to
>> ~/./links.txt, but I don't seem to be able to use the
>> ~wildcard.
> Is this in  rules file? If so you cannot do that at all.  It doesn't
> make any sense for a package to install a file in the users home
> directory.
>
> Generally there is a /etc//whatever file for defaults and any
> user specific files would be in /usr/share/doc//examples
> The file in examples should really tell people what to do, e.g.:
>
> # This is an example file for whatever, you can copy this to
> # ~/.whatever/myfile
>
> There are many problems with getting a package installer to install
> files in a user's home directory. Perhaps the first one I can think of
> is, "which user's directory?"

An obvious answer is "ALL users' directories," but the question
arises, "even users that don't exist yet?"  That's why Lars suggested
creating a default file in /usr/share and having the program copy it
to the user's directory when it's run.  You can't do that in the
Debian installer, though, so you would have to patch (i.e. modify) the
source code of the application itself.

Why must this file be user-modifiable?  Must all users of the system
be able to modify it such that everyone then uses the modified file?
What are the possible consequences if one user is an asshole and makes
modifications with the intent of doing damage?

This can be done; many games store a high-score list that anyone can
modify by playing the game.  But have you thought about those issues?
Is it necessary?
-- 

-PJ


-- 
To UNSUBSCRIBE, email to debian-mentors-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: 
http://lists.debian.org/AANLkTi=u3ygyspgo9454jq+w+wf9v2mhfciodhmfh...@mail.gmail.com



Re: Re: installing an end user editable file

2011-02-13 Thread james frize
Sorry forgot to clarify, yeah it's in my rules makefile.

On 13 February 2011 21:55, james frize  wrote:
> Hey Craig,
>
> thanks for the help,
>
> Basically I'm copying over a text file that has a list of web links
> in, after the program is installed the file needs to be edited by the
> end user, so I'm trying to put the file in a place where a regular
> user would have permission to both read and write to the text file.
>
> Some people have suggested putting it in home//.
> but I can't seem to be able to do that, been trying to use ~/ and
> $XDG_CONFIG_HOME but I just end up with everything being installed in
> folders called "~" or "DG_CONFIG_HOME"
>
> I need a way of finding the correct user path, I've been reading the
> info on this page:
> http://standards.freedesktop.org/basedir-spec/basedir-spec-0.6.html
> But I can't get my head round that either??
>
> Here's the part of my make file where I specify the destination paths:
>
> # Icon and script go here
> DEST1 = $(CURDIR)/debian/gtk-link-lizard/usr/share/gtk-link-lizard-1.4
> # Desktop launcher goes here
> DEST2 = $(CURDIR)/debian/gtk-link-lizard/usr/share/applications
> # Links.txt goes here
> DEST3 = $(CURDIR)/debian/gtk-link-lizard/"SOMEHOW I NEED THE
> HOME/ PATH HERE??"/.gtk-link-lizard
>
> Thanks again.
>
> Jim.
>
> On 13 February 2011 21:38, Craig Small  wrote:
>> On Sun, Feb 13, 2011 at 06:24:06PM +, james frize wrote:
>>> I'm looking at installing the links.txt file to
>>> ~/./links.txt, but I don't seem to be able to use the
>>> ~wildcard.
>> Is this in  rules file? If so you cannot do that at all.  It doesn't
>> make any sense for a package to install a file in the users home
>> directory.
>>
>> Generally there is a /etc//whatever file for defaults and any
>> user specific files would be in /usr/share/doc//examples
>> The file in examples should really tell people what to do, e.g.:
>>
>> # This is an example file for whatever, you can copy this to
>> # ~/.whatever/myfile
>>
>> There are many problems with getting a package installer to install
>> files in a user's home directory. Perhaps the first one I can think of
>> is, "which user's directory?"
>>
>>  - Craig
>> --
>> Craig Small VK2XLZ    http://www.enc.com.au/       csmall at : enc.com.au
>> Debian GNU/Linux      http://www.debian.org/       csmall at : debian.org
>> GPG fingerprint:       1C1B D893 1418 2AF4 45EE  95CB C76C E5AC 12CA DFA5
>>
>


--
To UNSUBSCRIBE, email to debian-mentors-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: 
http://lists.debian.org/AANLkTin_5DvwgAS==spfpatdqdvog7jgcy8iajjap...@mail.gmail.com



Re: Re: installing an end user editable file

2011-02-13 Thread james frize
Hey Craig,

thanks for the help,

Basically I'm copying over a text file that has a list of web links
in, after the program is installed the file needs to be edited by the
end user, so I'm trying to put the file in a place where a regular
user would have permission to both read and write to the text file.

Some people have suggested putting it in home//.
but I can't seem to be able to do that, been trying to use ~/ and
$XDG_CONFIG_HOME but I just end up with everything being installed in
folders called "~" or "DG_CONFIG_HOME"

I need a way of finding the correct user path, I've been reading the
info on this page:
http://standards.freedesktop.org/basedir-spec/basedir-spec-0.6.html
But I can't get my head round that either??

Here's the part of my make file where I specify the destination paths:

# Icon and script go here
DEST1 = $(CURDIR)/debian/gtk-link-lizard/usr/share/gtk-link-lizard-1.4
# Desktop launcher goes here
DEST2 = $(CURDIR)/debian/gtk-link-lizard/usr/share/applications
# Links.txt goes here
DEST3 = $(CURDIR)/debian/gtk-link-lizard/"SOMEHOW I NEED THE
HOME/ PATH HERE??"/.gtk-link-lizard

Thanks again.

Jim.

On 13 February 2011 21:38, Craig Small  wrote:
> On Sun, Feb 13, 2011 at 06:24:06PM +, james frize wrote:
>> I'm looking at installing the links.txt file to
>> ~/./links.txt, but I don't seem to be able to use the
>> ~wildcard.
> Is this in  rules file? If so you cannot do that at all.  It doesn't
> make any sense for a package to install a file in the users home
> directory.
>
> Generally there is a /etc//whatever file for defaults and any
> user specific files would be in /usr/share/doc//examples
> The file in examples should really tell people what to do, e.g.:
>
> # This is an example file for whatever, you can copy this to
> # ~/.whatever/myfile
>
> There are many problems with getting a package installer to install
> files in a user's home directory. Perhaps the first one I can think of
> is, "which user's directory?"
>
>  - Craig
> --
> Craig Small VK2XLZ    http://www.enc.com.au/       csmall at : enc.com.au
> Debian GNU/Linux      http://www.debian.org/       csmall at : debian.org
> GPG fingerprint:       1C1B D893 1418 2AF4 45EE  95CB C76C E5AC 12CA DFA5
>


--
To UNSUBSCRIBE, email to debian-mentors-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/AANLkTikBeVcyM4H
3-xfu4pnihq9qkczp7mlae3...@mail.gmail.com



Re: Re: installing an end user editable file

2011-02-13 Thread Craig Small
On Sun, Feb 13, 2011 at 06:24:06PM +, james frize wrote:
> I'm looking at installing the links.txt file to
> ~/./links.txt, but I don't seem to be able to use the
> ~wildcard.
Is this in  rules file? If so you cannot do that at all.  It doesn't
make any sense for a package to install a file in the users home
directory.

Generally there is a /etc//whatever file for defaults and any
user specific files would be in /usr/share/doc//examples
The file in examples should really tell people what to do, e.g.:

# This is an example file for whatever, you can copy this to
# ~/.whatever/myfile

There are many problems with getting a package installer to install
files in a user's home directory. Perhaps the first one I can think of
is, "which user's directory?"

 - Craig
-- 
Craig Small VK2XLZhttp://www.enc.com.au/   csmall at : enc.com.au
Debian GNU/Linux  http://www.debian.org/   csmall at : debian.org
GPG fingerprint:   1C1B D893 1418 2AF4 45EE  95CB C76C E5AC 12CA DFA5


-- 
To UNSUBSCRIBE, email to debian-mentors-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/20110213213840.ga32...@enc.com.au



Re: Re: installing an end user editable file

2011-02-13 Thread james frize
Cheers Lars,

I'm looking at installing the links.txt file to
~/./links.txt, but I don't seem to be able to use the
~wildcard.

Using this line in my makefile:

DEST3 = $(CURDIR)/debian/gtk-link-lizard/~/.gtk-link-lizard"

It just creates a directory called "~" on the destination drive? It
doesn't seem to want to replace the wildcard with /home/

I'm also unsure what you mean by "patch up the source code"?

Thanks


-- 
To UNSUBSCRIBE, email to debian-mentors-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: 
http://lists.debian.org/AANLkTin1Bdh67Aq0df5QhFzNboDvkSrnen=dh-lug...@mail.gmail.com



Re: installing an end user editable file

2011-02-13 Thread Lars Buitinck
2011/2/13 Julian Taylor :
> On Sun, 2011-02-13 at 17:11 +0100, Lars Buitinck wrote:
>> [...]
>> I don't think
>> /home//Documents is a good place for this; prefer
>> ~/./links.txt instead. You'll probably have to patch up
>> the source code.
>> [...]
>>
>
> shouldn't $XDG_CONFIG_HOME (or $HOME/.config if not set) or
> $XDG_DATA_HOME ($HOME/.local/share) be used for this kind of data?
> http://standards.freedesktop.org/basedir-spec/basedir-spec-0.6.html

Ah, yes, excuse me.


-- 
To UNSUBSCRIBE, email to debian-mentors-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: 
http://lists.debian.org/AANLkTikRn5kDKmJNrg1FynWjAy-A1U-_=jziqc+5z...@mail.gmail.com



Re: installing an end user editable file

2011-02-13 Thread Julian Taylor
On Sun, 2011-02-13 at 17:11 +0100, Lars Buitinck wrote:
> [...]
> I don't think
> /home//Documents is a good place for this; prefer
> ~/./links.txt instead. You'll probably have to patch up
> the source code.
> [...]
> 

shouldn't $XDG_CONFIG_HOME (or $HOME/.config if not set) or
$XDG_DATA_HOME ($HOME/.local/share) be used for this kind of data?
http://standards.freedesktop.org/basedir-spec/basedir-spec-0.6.html

Best Regards,
Julian


signature.asc
Description: This is a digitally signed message part


Re: installing an end user editable file

2011-02-13 Thread Lars Buitinck
2011/2/13 james frize :
> Got my Debian packages almost fully working now, everything
> installs/uninstalls without error.
> However, when I try to run the newly installed program it wont work
> properly as it lacks permission to save to file.
>
> My program loads a list of hyperlinks from a text file (links.txt),
> this text file is currently in usr/share/ (I've also
> tried to install it directly to home//Documents but that didn't
> work either)
>
> I want my makefile to install links.txt in a manner that will allow my
> end user to write to the file without permission violation.

Sounds like the file should be installed by the program if it is not
found. A default file can be placed in and copied from
/usr/share/ if it is provided. I don't think
/home//Documents is a good place for this; prefer
~/./links.txt instead. You'll probably have to patch up
the source code.

If the upstream package wants to modify something in /usr/share, it
violates the Filesystem Hierarchy Standard.

Regards,
Lars


-- 
To UNSUBSCRIBE, email to debian-mentors-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: 
http://lists.debian.org/aanlktik2q0x3+xeveytft4vo3sa3ajtbr--77bsgq...@mail.gmail.com



RE: installing an end user editable file

2011-02-13 Thread james frize
Hi,

Got my Debian packages almost fully working now, everything
installs/uninstalls without error.
However, when I try to run the newly installed program it wont work
properly as it lacks permission to save to file.

My program loads a list of hyperlinks from a text file (links.txt),
this text file is currently in usr/share/ (I've also
tried to install it directly to home//Documents but that didn't
work either)

I want my makefile to install links.txt in a manner that will allow my
end user to write to the file without permission violation.

Cheers.

Here's the makefile so far:

#!/usr/bin/make -f
# Sample debian/rules that uses debhelper.
# This file is public domain software, originally written by Joey Hess.
#
# This version is for packages that are architecture independent.

# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1

icon = $(CURDIR)/link-lizard-icon.png
script = $(CURDIR)/gtk-link-lizard.py
launcher = $(CURDIR)/gtk-link-lizard.desktop
links = $(CURDIR)/links.txt

DEST1 = $(CURDIR)/debian/gtk-link-lizard/usr/share/gtk-link-lizard-1.4
DEST2 = $(CURDIR)/debian/gtk-link-lizard/usr/share/applications

build: build-stamp

build-stamp:
dh_testdir

# Add here commands to compile the package.
#$(MAKE)

touch build-stamp

clean:
dh_testdir
dh_testroot
rm -f build-stamp

# Add here commands to clean up after the build process.
#$(MAKE) clean
#$(MAKE) distclean

dh_clean

install: build clean $(icon) $(script) $(links) $(launcher)
dh_testdir
dh_testroot
dh_prep
dh_installdirs

mkdir -m 777 -p $(DEST1)
mkdir -m 777 -p $(DEST2)

install -m 777 $(icon) $(DEST1)
install -m 777 $(script) $(DEST1)
install -m 777 $(links) $(DEST1)
install -m 777 $(launcher) $(DEST2)

# Add here commands to install the package into debian/.
#$(MAKE) prefix=`pwd`/debian/`dh_listpackages`/usr install

# Build architecture-independent files here.
binary-indep: build install
dh_testdir
dh_testroot
dh_installchangelogs
dh_installdocs
dh_installexamples
#   dh_installmenu
#   dh_installdebconf
#   dh_installlogrotate
#   dh_installemacsen
#   dh_installcatalogs
#   dh_installpam
#   dh_installmime
#   dh_installinit
#   dh_installcron
#   dh_installinfo
#   dh_installwm
#   dh_installudev
#   dh_lintian
#   dh_bugfiles
#   dh_undocumented
dh_installman
dh_link
dh_compress
dh_fixperms
#   dh_perl
dh_installdeb
dh_gencontrol
dh_md5sums
dh_builddeb

# Build architecture-dependent files here.
binary-arch: build install
# We have nothing to do by default.

binary: binary-indep binary-arch
.PHONY: build clean binary-indep binary-arch binary install


-- 
To UNSUBSCRIBE, email to debian-mentors-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: 
http://lists.debian.org/aanlktim+ycpsifcrrsxiarehzdqpm4c1o_jludk2j...@mail.gmail.com