#ubuntu-classroom 2007-07-31
<dk0r> how do you add programs to startup w/ your system? system>preferences>sessions seems to lag. alot.
<dk0r> when i have sessions manager call up fusion/awn @ startup, is there any way to hide the terminal thats opened in the process ??
<dk0r> i applied a new png for firefox's icon, and it looks pretty small.
<dk0r> How do I change the size?
<dk0r> Anyone know how to stretch/skew icons in awn docks?
<dk0r> Anyone know how to stretch icons in awn's dock?
#ubuntu-classroom 2007-08-01
<dk0r> Im trying to compile mplayer but I'm receiving the following error: http://pastebin.com/d43d24f33 Any suggestions
#ubuntu-classroom 2007-08-02
<jrib> crazy_: hi
<jrib> less traffic here
<crazy_> how to run .bin file
<jrib> !cli
<ubotu> The linux terminal or command-line interface is very powerful. Open a terminal via Applications -> Accessories -> Terminal (Gnome) or K-menu -> System -> Konsole (KDE).  Guide: https://help.ubuntu.com/community/UsingTheTerminal
<crazy_> done
<jrib> crazy_: do you have a terminal open?
<crazy_> yes
<jrib> now navigate to the Desktop with:  cd ~/Desktop
<jrib> note that linux is case-sensitive
<crazy_> it shows "roy@roy-ubuntu-ppc:~/Desktop$"
<jrib> good
<jrib> now type this:  chmod +x name_of_the_bin_file.bin
<jrib> change the name of course :)
<jrib> I didn't know realplayer had a powerpc version
<crazy_> someone give me a url to download
<jrib> oh
<jrib> ok, any output from those commands so far?
<crazy_> wait.  do I need to type +x
<jrib> you need to type all of it:  chmod +x name_of_the_bin_file.bin
<jrib> just change "name_of_the_bin_file" to the name of your bin file
<jrib> you can type the beginning of the name and press TAB, that should autocomplete it
<crazy_> no right click cannot copy name, so very slow, wait a while
<jrib> that's why TAB is great
<crazy_> done
<jrib> ok, now do:  ./name_of_bin_file.bin
<jrib> you can use TAB again to save time
<crazy_> wait the first cmd bring back to : roy@roy-ubuntu-ppc:~/Desktop$
<crazy_> correct?
<jrib> yep
<crazy_> ok
<jrib> if you get no output that means it worked
<crazy_> done
<jrib> that should be it
<crazy_> wait make mistake
<crazy_> it is extracting
<jrib> k
<jrib> be sure you read the docs about the command line that ubotu gives, it's a pretty gentle intro
<jrib> !cli
<ubotu> The linux terminal or command-line interface is very powerful. Open a terminal via Applications -> Accessories -> Terminal (Gnome) or K-menu -> System -> Konsole (KDE).  Guide: https://help.ubuntu.com/community/UsingTheTerminal
<crazy_> it said: press enter ro continue
<crazy_> ok
<jrib> after this, you're on your own, I've never installed realplayer on linux :)
<crazy_> :)
<crazy_> it ask me :Enter the complete path to the directory where you want
<crazy_> RealPlayer to be installed.  You must specify the full
<crazy_> pathname of the directory and have write privileges to
<crazy_> the chosen directory.
<nalioth> !realplayer
<ubotu> For multimedia issues, this page has useful information: https://help.ubuntu.com/community/RestrictedFormats - See also http://help.ubuntu.com/ubuntu/desktopguide/C/common-tasks-chap.html - But please use free formats if you can: https://help.ubuntu.com/community/FreeFormats
<crazy_> it said installed finish done, but cannot find realplayer on the menu
<jrib> nalioth: he's on ppc though
<jrib> oh it does have instructions there
<jrib> I search for "ppc" when I looked, but it says "powerpc"
<crazy_> ppc means powerpc
<jrib> no biggie, I just repeated what was there
<jrib> crazy_: try typing 'realplayer' in a terminal
<crazy_> izzi
<crazy_> :)
<crazy_> I try just now but cannot work
<jrib> what does it say
<crazy_> finished installation, but I cannot find reaplayer from the application menu
<jrib> what does it say when you type 'realplayer' and press enter
<crazy_> u mean at terminal?
<jrib> yes
<crazy_> command not found
<nalioth> jrib: in that case, he's screwed
<jrib> what happens when you type 'real' and then press TAB twice?
<jrib> nalioth: heh, how come?
<nalioth> jrib: lots of closed source multimedia stuff isn't available for ppc
<nalioth> installing an i386 bin on a ppc machine doesn't mean it'll work
<jrib> ah, the wiki links to a ppc download though.  I'm assuming he has that one
<crazy_> jrib: yes
<crazy_> results :roy@roy-ubuntu-ppc:~/Desktop$ realvncpasswd
<jrib> k, it's not that
<crazy_> it ask for password , I enter and it said password too short
<jrib> crazy_: how about 'hx' and then TAB twice?
<jrib> close that, it's not the right command
<crazy_> that is helix player I install yesterday
<crazy_> why real TAB twice said password too short?
<jrib> I don't know, are you still in that realvnc prompt?
<jrib> hit ctrl-c a couple of time
<jrib> s
<crazy_> did
<jrib> apaprently it's supposed to be "realplay"
<jrib> type that and press enter
<crazy_> cmd not found
<jrib> don't know then
<jrib> ask Real
<crazy_> oh there is a folder call realplayer on desktop
<jrib> ah wait, I think I know what happened.  We didn't install it with sudo
<jrib> maybe you can run it from your desktop anyway, do 'cd realplayer'
<crazy_> i double click on realplay and the player comes out now
<jrib> k, that works too
<crazy_> i dun understand "maybe you can run it from your desktop anyway, do 'cd realplayer' "
<jrib> never mind
<jrib> if you can just double click it, then that's ok
<crazy_> thanks so much. thank you from
<crazy_> Singapore
<crazy_> new to linux just 2 weeks. have try many distributions, only ubuntu help is the best and is real time> :)
<jrib> np, enjoy
<crazy_> thank you again from Singapore
<crazy_> using X-Chat Gnome, it auto connects to #ubuntu channel everytimes it starts, how to add more auto starts channel
<jrib> crazy_: it's best to ask questions in #ubuntu because not many people monitor this channel
<crazy_> accident
#ubuntu-classroom 2007-08-03
<abinav> /serverirc.freenode.net
<abinav> oops
<abinav> my bad
<abinav> sorry
<abinav> / serverirc.freenode.net
* Starting logfile irclogs/ubuntu-classroom.log
<dk0r> why can't I cd here?? http://pastebin.com/d272cb609
<nalioth> dk0r: this is a 'bring-your-own-help' channel
<dk0r> Im new to linux (feisty), would someone please explain how to me how implement the following appdb direction: http://pastebin.com/m1809d0d2
#ubuntu-classroom 2007-08-04
<dk0r> I cant seem to unpack this gzip. What the heck is this error http://pastebin.com/m2420a9cc ???
<jrib> can you just ask in #ubuntu instead of repeating the same thing here?
#ubuntu-classroom 2008-07-28
<bazhang> @schedule
<ubottu> bazhang: Schedule for Etc/UTC: 28 Jul 14:00:  Maintainer scripts | 31 Jul 14:00: Mentoring Reception | 31 Jul 16:00: Ubuntu Mobile | 02 Aug 13:00: Xubuntu Community | 03 Aug 18:00: Mozilla Team | 05 Aug 22:00: Community Council
<bazhang> dmwaters, could you specify a bit more? what modules do you need to load
<goshawk> hi
<DRebellion> allo
<goshawk> hi norsetto
<goshawk> :)
<norsetto> heya :-)
 * DRebellion draws a giant stickman on the whiteboard
<DRebellion> :P
<norsetto> Hi everybody, thanks for coming and welcome to this lecture!
<norsetto> Who do we have here?
<DRebellion> me
<coolbhavi> coolbhavi, me
<goshawk> me
* pleia2 changed the topic of #ubuntu-classroom to: Ubuntu Open Week is over, thanks for participating! | Information and Logs: https://wiki.ubuntu.com/UbuntuOpenWeek | Current Session: Monday 28th July at 14:00 UTC: MOTU School Session: Maintainer Scripts by Cesare Tirabassi
<norsetto> hi DRebellion!
<norsetto> coolbhavi, goshawk: nice to see you here
<goshawk> norsetto: are you cesare tirabassi?
<norsetto> nobody else? Too timid to talk?
<tuxmaniac> Hi everybody
<norsetto> goshawk: the very one
<norsetto> hi tuxmaniac
<tarvid> nah just too many of us
<Xk2c> hi
<RainCT> heh
<ssweeny> if everyone sounded off the session would be over
<NielsE> hi
<Dabian> I am here too .. trying to catch up.
<Dabian> The topic change confused me.
<norsetto> ok, I guess we can start, make yourself confortable, take a can of your preferred drink ;-)
<coolbhavi> norsetto, I ve seen you working at LP answer tracker Interested to attend this session
<coolbhavi> very interested
<norsetto> Dabian: what topic change?
 * huats too :)
<norsetto> Dabian: look good to me :-)
<pleia2> Dabian: just updated from "Next" to "Current" :)
<Dabian> The topic of the channel changed ... I'm not used to this client.
<norsetto> We will talk in general about the basics of the debian package management and cover maintainer scripts in some detail
<goshawk> norsetto: i'm italian too :) (your name is italian)
<norsetto> We will not tackle very complex subjects, I tried to make this very informative but at the same time accessible to all newcomers, even those with little debian/ubuntu experience (sorry if this will bore everybody else)
<norsetto> goshawk: yes, nobody is perfect ;-)
<norsetto> If there is something you don't understand, stop me and ask, ok?
<coolbhavi> ok
<Dabian> OK
<NielsE> ok :-)
<norsetto> Anybody know what a debian binary package is (I mean, the .deb file)?
<goshawk> ok
<goshawk> i know
<DRebellion> norsetto, a file tree essentially
<NielsE> yes
<norsetto> yep, its just an archive file
<norsetto> You can download a deb, for instance ucf, hardy version: wget http://archive.ubuntu.com/ubuntu/pool/main/u/ucf/ucf_3.005_all.deb
<norsetto> wget http://archive.ubuntu.com/ubuntu/pool/main/u/ucf/ucf_3.005_all.deb
<norsetto> ok, everybody got it? We will use this quite often during this lecture.
<NielsE> got it
<Xk2c> yep
<DRebellion> yar
<norsetto> Now check it with: ar -t ucf_3.005_all.deb
<Dabian> Well .. I don't know the structure of it, but I guess its a compressed directory structure of some kind.
<norsetto> What do you see?
<bhavi_> norsetto, question: can we update a package maintained by some one else?
<norsetto> bhavi_: yes, of course you can, but is always better to first ask
<Xk2c> debian-binary control.tar.gz data.tar.gz
<norsetto> debian-binary is simply an ascii file containing the version of the debian format (now 2.0)
<Dabian> I got it now .. about to check it.
<norsetto> data.tar.gz contains the files to be installed
<Kopfgeldjaeger2> Three files, one containing the control file and sometimes {pre,post}{rm,inst} and the other one containing the application itself (binary files, man pages, scripts)
<norsetto> control.tar.gz contains the control files, we will see later in details what these are
<norsetto> Kopfgeldjaeger2: yes
<norsetto> That's about it, simple isn't?
<NielsE> seems easy
<DRebellion> norsetto, why does debian use the 'ar' format instead of 'tar'
<DRebellion> ?
<Dabian> I am trying to catch up.
<norsetto> DRebellion: good question, I guess thats because ar is simpler
<DRebellion> norsetto, then, why don't we all use ar instead of tar?
<norsetto> DRebellion: because ar is not universal
<norsetto> DRebellion: ar is just GNU, tar is unix and linux
<DRebellion> ok
<norsetto> I guess everybody know what dpkg is?
<norsetto> OK, dpkg is Debian main package management program (some people would disagree with the word management though)
<bhavi_> yes
<DRebellion> just a note, wikipedia says that tar has weak integrity checking and supports unicode, ar does not.
<norsetto> DRebellion: yes, its simpler ;-)
<norsetto> It can be used to install, unpack, configure, remove or purge packages
<norsetto> It can also be used to extract or list the content of a package
<norsetto> dpkg will not attempt to satisfy dependencies, for that you have to use a more advanced tool, like apt (which uses dpkg as a backend)
<norsetto> If you want to be a good maintainer, you should learn how dpkg works when it installs/upgrades or removes packages
<norsetto> please let me know if you think I'm going too fast
<MikeMc> ok
<Xk2c> is ok
<NielsE> not for me (yet)
<DRebellion> fine
<norsetto> What would you do if, for whatever reasons, dpkg is corrupted on your system and doesn't work anymore?
<Xk2c> boot knoppix
<coolbhavi> reconfigure dpkg
<DRebellion> norsetto, download the dpkg debs, extract the file structure, copy it to your root (/).
<Kopfgeldjaeger2> sudo apt-get -f install (in some cases)
<norsetto> well, think about what we just learned about the structure of a deb package
<norsetto> DRebellion: exactly
<DRebellion> :)
<norsetto> Kopfgeldjaeger2: that will not work, since dpkg will not work
<coolbhavi> dpkg --configure -a?
<Kopfgeldjaeger2> norsetto: yay, i just thought we had unresolved dependencies or so
<norsetto> coolbhavi: also that would fail, dpkg doesn't work
<coolbhavi> OK!
<Kopfgeldjaeger2> but as that's not the case, jsut ignore it
<norsetto> For example, lets see what dpkg will do when requested to remove a package
<norsetto> You can check man dpkg for some basics, there are more complex and exhaustive information in the Debian policy, chapter 6
<norsetto> Here is a link if you want a reference during this lecture: http://www.debian.org/doc/debian-policy/ch-maintainerscripts.html
<norsetto> When dpkg is requested to remove a package, first, it will run the package's prerm script
<norsetto> The prerm script is one of the maintainer scripts, we will see it later in details
<norsetto> Then it will remove the files that were installed for that package, minus the configuration files
<norsetto> We will see later what the configuration files are
<norsetto> Then it will run the postrm script
<norsetto> As you guessed it, another maintainer script
<norsetto> Is that sequence clear?
<coolbhavi> yes
<DRebellion> got it
<Xk2c> prerm then postrm
<norsetto> For purging it is the same but as a last step it will also remove the configuration files
<norsetto> Another more complex example is for an upgrade
<norsetto> First of all it will extract the control files of the new package (the control.tar.gz)
<coolbhavi> OK
<norsetto> It will then execute the prerm script of the old package
<norsetto> After which it will run the preinst script from the new package
<norsetto> Again, preinst is a maintainer script
<norsetto> Afterwards, it will remove the old files and unpack the new files
<norsetto> It will then execute the postrm script of the old package
<norsetto> Then it will unpack the configuration files
<norsetto> And finally run the new postinst script
<norsetto> And finally the last maintainer script :-)
<norsetto> You don't need to memorise all these steps, a man dpkg will refresh your memory when you need it
<norsetto> As the name indicates, prerm is roughly called before a removal, postinst, after an installation and so on
<Dabian> If dpkg is corrupted .. I couldn't use apt-get, right?
<norsetto> All clear so far? If so, lets see what these scripts in general are used for
<norsetto> Dabian: absolutely
<norsetto> As a general rule of thumb, many preinst stop services for packages which are being upgraded
<norsetto> Many postinst start or restart services once a new package has been installed or upgraded
<norsetto> Sometime you may use postinst to finish a configuration, asking as well user input. This should preferably be done via debconf
<norsetto> We won't cover debconf in this lecture, but you should read about it; very good info can be found here: http://www.fifi.org/doc/debconf-doc/tutorial.html
<norsetto> prerm are typically used to stop services for a package before removing the package
<norsetto> postrm typically modifies links or other files associated with the package, and/or removes files created by the package
<norsetto> When you want/need to add a maintainer script in your package, as for every packaging file you add it in the debian directory
<DRebellion> norsetto, unfortunately, I have to leave.
<norsetto> For instance the prerm script for the binary <foo> will be called <foo>.prerm and so on, if there is only one binary package you may omit the <foo>
<norsetto> DRebellion: ok, it was good to have you here, even if for short
<DRebellion> ;)
<coolbhavi> norsetto, me too
<geser> another good link to see how maintainer scripts interact is http://women.debian.org/wiki/English/MaintainerScripts
<DRebellion> I will read the logs later.
<norsetto> geser: yes, we will come to that later :-)
<norsetto> All these will be installed in the binary package by dpkg-deb
<norsetto> OK, before we cover those in detail, lets see what are the configuration files. Anyone has any idea?
<Dabian> Uhm
<Xk2c> everything in /etc
<Dabian> Which configuration files?
<Dabian> Oh .. the ones that purge removes
<norsetto> Dabian: those I was talking about before, when I mentioned purging for instance
<Dabian> Right
<norsetto> Configuration files are all files which affects the operation of a program, or provides site- or host-specific information, or otherwise customises the behaviour of a program
<Dabian> Well, those are the ones that tells the programs in the package how to adapt to the current system, and how to work.
<norsetto> Some examples which should be in your system are:
<norsetto> Dabian: exactly
<norsetto> /etc/apt/sources.list
<norsetto> you all know about that
<norsetto> /etc/X11/xorg.conf (this tends to disappear but I still want it!)
<norsetto> /etc/network/interfaces
<norsetto> Now, the policy dictates that any configuration files created or used by your package must reside in /etc
<norsetto> which is the case for all these examples
<norsetto> For any installed <package>, you will find a list of its configuration files in /var/lib/dpkg/info/<package>.conffiles
<norsetto> For instance:
<norsetto> /var/lib/dpkg/info/x11-common.conffiles
<huats> you say "now" it was not the case with previous policy (before 3.8.0) ?
<norsetto> /var/lib/dpkg/info/udev.conffiles
<Dabian> ahhh
<norsetto> No, I meant it as an interlocution ;-)
<huats> ok :)
<Dabian> Hence the ","
<Dabian> huats: However, I think debconf is /kinda/ new ... (I don't think it was there pre debian 2.0)
<norsetto> Dabian: yes, sorry if it wasn't clear. You may want to check those, they are all readable
<norsetto> conffiles are special, by default they are not removed on removal or overwritten on upgrade!
<Dabian> Its very clear .. I already know the .list files .. but I guess they don't show the conf files :)
<norsetto> Dabian: they do actually, but not those which are created DURING the installation process
<Dabian> Right
<norsetto> Very good, lets see now what are the control files
<norsetto> Control files are all the files in a debian package necessary for its installation and configuration
<norsetto> Some examples of control files which you may see:
<norsetto> conffiles (a list of all configuration files)
<norsetto> we have seen this already
<norsetto> config (debconf config script)
<norsetto> templates (debconf templates)
<norsetto> md5sums (md5sums for all files to be installed)
<norsetto> shlibs (contain the mapping from shared libraries to the necessary dependency information)
<norsetto> triggers (triggers list)
<norsetto> control (binary control file)
<norsetto> Be carefull about control file (singular) and control files (plural)
<norsetto> and then all the maintainer scripts: postinst, postrm, preinst, prerm
<norsetto> All these are in control.tar.gz, which we have seen before
<norsetto> They are all unpacked in /var/lib/dpkg/info/
<norsetto> There, you will also find a <package>.list file, which will lists ALL files belonging to <package>
<norsetto> strictly speaking <package>.list is not a control file though :-)
<Dabian> Excluding those that are created during install :)
<norsetto> You can check it out now if you want
<norsetto> We have a nice utility that can be used to work with control files: dpkg-deb
<norsetto> Also dpkg can be used since it can also act as a front end to dpkg-deb
<norsetto> with dpkg-deb you can:
<norsetto> print a summary of the content of a package as well as its control file
<norsetto> print the content of control files
<norsetto> print control file information: this is the binary control file
<norsetto> Lets see some examples:
<norsetto> dpkg-deb -e <package> : Extracts the control information files into a subdir of the current dir named DEBIAN
<norsetto> dpkg-deb -I <package> : Print a summary of the content as well as the control file
<norsetto> dpkg-deb -I <package> <control file>: Print content of one of the <control file>s
<norsetto> dpkg-deb -f <package> : Print control file information
<norsetto> If you have not yet downloaded the deb, now is the time to do it
<norsetto> Everybody has it?
<NielsE> yes
<huats> yep
<MikeMc> yes
<Dabian> -e doesn't list anything?
<norsetto> Good, now lets check some of these commands on the ucf package:
<Dabian> For the example package, that is.
<norsetto> Lets start with dpkg -e :-)
<Dabian> ok :)
<norsetto> dpkg -e ucf_3.005_all.deb
<norsetto> Now you should have a DEBIAN subdirectory. Can you check what is in there?
<Xk2c> norsetto: dpkg -e or dpkg-deb -e ?
<NielsE> Dabian: -e creaes a directory
<Dabian> oh
<norsetto> Xk2c: the same
<Xk2c> ic
<Dabian> conffiles  control  md5sums  postinst  postrm  preinst  templates
<norsetto> DEBIAN is nothing less nothing more than control.tar.gz again :-)
<norsetto> Lets check the content of the control file
<norsetto> That would be DEBIAN/control
<Dabian> NielsE: Thank you .. I just reread norsettos explanation. :)
<norsetto> do you see what is in there?
<norsetto> As you can see its a mixed bag of things from debian/control and more
<Xk2c> norsetto: that looks liek the output of aptitude show $PACKAGE
<norsetto> Xk2c: indeed, thats where aptitude fetch that info
<Xk2c> ic
<norsetto> More info about the control file can be found in the deb-control man page (part of the dpkg-dev package)
<norsetto> Now, lets see another example:
<norsetto> dpkg-deb -I ucf_3.005_all.deb
<norsetto> You will see the control file + a summary of all the control files, with some info about them, like size, number of lines, and if it is an executable what kind of executable it is
<norsetto> Lets see a final example, how can we see what are the configuration files of ucf?
<Xk2c> cat ucf.conffiles
<Xk2c> :)
<norsetto> Xk2c: well, yes, you can use dpkg(-deb) -e, but also dpkg -I
<Dabian> There is a file named conffiles
<Dabian> otherwise I guess you can do this:
<ranf> dpkg-deb -I ucf_3.005_all.deb conffiles
<Dabian> dpkg-deb <package> conffile
<norsetto> ranf: yes
<Dabian> oh .. I forgot -I
<Xk2c> cool
<norsetto> OK, we are finally coming to the crunch of the lecture.
<Xk2c> :( sad
<norsetto> Please let me know if there is anything unclear before we proceed
<MikeMc> are conffiles always necessary?
<norsetto> MikeMc: no, it depends on the package
<norsetto> MikeMc: as you can see for ucf there is only one
<MikeMc> thanks
<norsetto> As we have seen, maintainer scripts are part of a package which the package management system will run for you when your package is installed, upgraded or removed.
<norsetto> They are normally shell (/bin/sh) scripts but they can also be other shebang scripts
<norsetto> Its normally better to use /bin/sh, otherwise you have to depends on bash/perl/python,etc.
<norsetto> Also, POSIX shell or Bash are preferred to Perl/Python etc. since they enable debhelper to easily add bits to the scripts
<norsetto> On Ubuntu (and now Debian) /bin/sh points to dash, so be careful, if you use bashisms, it will fail ...
<norsetto> Lets check the postrm for ucf, how can we do that?
<NielsE> cat postrm
<norsetto> NielsE: :-) and without exctracting it?
<Dabian> dpkg-deb -I <packagename> postrm
<huats> dpkg-deb  -I ucf_3.005_all.deb postrm
<Dabian> ?
<norsetto> indeed
<Xk2c> dpkg-deb -I ucf_3.005_all.deb postrm
<Dabian> Neat :)
<norsetto> As you can see, its a pretty complex (or apparently so) script. Some general remarks:
<norsetto> The policy requires that maintainer scripts must be idempotent, this means that you need to make sure nothing bad will happen if the script is called twice where it would usually be called once
<norsetto> Standard input and output may be redirected (e.g. into pipes) for logging purposes, so don't rely on them being a tty
<sistpoty|work> erm, just to clear up: you can use anything that has essential=yes set in maintainer scripts (and *don't need a depends*). Anything else is not always safe to use (e.g. a preinst won't have dependencies installed)
<Dabian> idempotent .. thats a hard word. :)
<Dabian> Or I guess, just unfamiliar, really.
<Dabian> to me. :)
<norsetto> sistpoty|work: yes, I will come to an example about that later on
<sistpoty|work> :)
<norsetto> All prompting or interactive configuration should be kept to a minimum. When it is necessary, you should use the debconf package for the interface. Remember that prompting in any case can only be in the configure stage of the postinst script
<Dabian> sistpoty|work: That was greek to me.
<norsetto> Keep the maintainer scripts as simple as possible, and don't assume that $PATH will allow you to use all commands (so use absolute and complete paths)
<sistpoty|work> Dabian: norsetto will come to it laters ;)
<Dabian> OK, thought so :)
<norsetto> Now to the script, note the set -e at the top: this will make the script abort if any command returns an error value
<norsetto> Very important, we don't want to continue if there is any error, and possibly cripple the user's machine
<norsetto> But as important as well, we don't want to leave uninstalled/unconfigured stuff which may cripple the user's package management system!
<norsetto> As we will see, there are ways to recover errors, but the most important way is to CHECK beforehand for things that can go wrong and abort GRACEFULLY if possible.
<norsetto> You can use the usual test constructs, for example:
<norsetto> if [ <test> ]; then
<norsetto> print >&2 "Error. Please fix me."
<norsetto> exit 0;
<norsetto> fi
<norsetto> Note that I use exit 0, so I let dpkg finish its job and at the same time I alert the user that something "strange" happened
<norsetto> Lets download another example:
<norsetto> wget http://archive.ubuntu.com/ubuntu/pool/universe/t/trousers/trousers_0.3.1-4_amd64.deb
 * norsetto loves that package :-S
<norsetto> Now lets check the postinst script
<norsetto> everybody has it?
<NielsE> yes
<MikeMc> yep
<norsetto> Now, lets for a moment forget the first part of the script, we will see later what all these actions are
<norsetto> In the second part, after the comment # Automatically added by dh_installinit you will see that it will call another script, which, in effect IS a maintainer script even though it will not be part of the control files
<norsetto> In this particular case, its a configuration file, which makes it tricky since it might be difficult to remove it if it fails
<norsetto> This is an init script, ie. a script used to launch a daemon at boot-up or stop it at shutdown
<norsetto> It is standard practice to use this script as well to launch or stop the daemon during package upgrade/removal
<norsetto> Now, lets check this init script. How could we do it?
<MikeMc> try each line manually?
<norsetto> MikeMc: sure, but I mean, how to see what is inside first ;-)
<norsetto> Anyone?
<Dabian> trying to catch up
<tarvid> dpkg-deb -I trousers_0.3.1-4_amd64.deb postinst|less
<norsetto> tarvid: that won't show the init script though, remember, its not a control file
<MikeMc> done it thought you meant something else
<norsetto> MikeMc: yes, my Englitalian its a bit funny ;-)
<Xk2c> norsetto: $ dpkg -x trousers_0.3.1-4_amd64.deb
<Dabian> Oh
<norsetto> Xk2c: yes, that a good one
<norsetto> And you will find it as etc/init.d/trousers
<Xk2c> vim etc/init.d/trousers
<norsetto> does everybody see what is the content of this file?
<MikeMc> yes
<Xk2c> yep
<norsetto> As you can see this script does something very nice, before starting the daemon it checks if something which is necessary for the daemon to be successfull is there
<norsetto> Do you see the test lines?
<norsetto> If it isn't, it doesn't bail off, and hell breaks loose, it will print an error message and exit gracefully
<norsetto> So, the user is informed and his system is not screwed up
<Dabian> It checks if the binary exists and is excuteable by the current user?
<norsetto> Dabian: yes, but the check I mean is about about the existance of the dev file, which means the tpm module is loaded into memory
<Dabian> darn ... I think I have to run ... can I idle here ?
<norsetto> Dabian: sure
<Xk2c> Dabian: lines 26 to 31
<Dabian> Thanks for the lesson so far norsetto .. its been very enlightning :)
<norsetto> Dabian: thx to you, I'm very glad you find it usefull
<norsetto> Look also at the stop action
<norsetto> The daemon is stopped with the --oknodo option, this makes return exit status 0 instead of 1 in case of errors
<norsetto> Could we improve on that? For instance, catch obvious problems before they happen?
<Xk2c> norsetto: if the daemon ist running is checked already?
<Xk2c> with the "--pidfile /var/run/$NAME.pid " ?
<norsetto> yes, but what again if /dev/tpm doesn't exist?
<norsetto> Even better (and the package has later been patched like this) would be to have the same check that we have for the start action
<norsetto> is everything clear?
<MikeMc> yes
<NielsE> yes
<norsetto> OK, back to ucf, lets check again the postrm
<norsetto> As you can see there are a number of actions in there
<norsetto> All the possible actions are (hope I don't forget any):
<norsetto> configure, abort-deconfigure, deconfigure-in-favour, install, abort-install, upgrade, abort-upgrade, failed-upgrade, remove, abort-remove, remove in-favour, purge, disappear
<norsetto> ah, the beauty of cut and paste :-)
<norsetto> These are all coming from dpkg
<Xk2c_> sorry network problems
<norsetto> For the benefit of Xk2c_
<norsetto> configure, abort-deconfigure, deconfigure-in-favour, install, abort-install, upgrade, abort-upgrade, failed-upgrade, remove, abort-remove, remove in-favour, purge, disappear
<norsetto> these are all the actions that dpkg can use when calling a maintainer script
<norsetto> Some of these are pretty obscure and it is likely that you will never need to use them
<norsetto> As you can see, the maintainer for ucf used some template (I guess coming from an old version of dh-make) where all the possible actions for a postrm script are already there, with comments which explain what they do
<norsetto> All clear? Don't try to memorise all these!
<norsetto> You have to know that when dpkg calls the maintainer scripts, its calls are of the type: script action [package|version]
<norsetto> Each action will depend on what dpkg is trying to do
<norsetto> Is it trying to remove the package?
<norsetto> Is it trying to purge the package?
<norsetto> Is it trying to recover from a failed remove?
<norsetto> What dpkg will do depends on the request from the user and the status of the system
<norsetto> For instance for postrm, dpkg could call it as follows:
<norsetto> <postrm> remove: dpkg will call this after a removal
<norsetto> <postrm> purge: dpkg will call this after a purge
<norsetto> <old-postrm> upgrade <new-version>: dpkg will call this after removing an old package during an upgrade
<norsetto> and an important one
<norsetto> <new-postrm> failed-upgrade <old-version>: dpkg will call this if the postrm of the old package during upgrade failed
<norsetto> The other cases are really very special or corner cases and we will skip them for this lecture
<norsetto> Now, lets see an example for an upgrade
<norsetto> There are some nice diagrams that could help you to visualise this in http://women.debian.org/wiki/English/MaintainerScripts
<norsetto> geser already pointed these out to you
<norsetto> Can you see the upgrade diagram in this page?
<MikeMc> yep
<NielsE> yes
<norsetto> The nominal steps are as we explained briefly above (prerm->preinst->postrm->postinst), but if something goes wrong things get hairy, for instance:
<norsetto> First dpkg will call prerm-from-old-package upgrade new-version
<norsetto> If the script runs but exits with a non-zero exit status, dpkg will attempt:
<norsetto> prerm-from-new-package failed-upgrade old-version
<norsetto> Do you see this in the diagram?
<MikeMc> yes
<norsetto> If this works, the upgrade continues. If this does not work, it will continue with:
<norsetto> postinst-from-old-package abort-upgrade new-version
<norsetto> If this works, then the old-version is "Installed", if not, the old version is in a "Failed-Config" state.
<norsetto> upgrade is really a complex example, but I wanted to show you what attempts dpkg will do in case something goes wrong
<norsetto> you can make a clever use of these in your maintainer scripts, to ensure that dpkg will eventually be able ti install, or eventually to remove faulty packages
<norsetto> Another example, configuration:
<norsetto> postinst configure most-recently-configured-version
<norsetto> That's it, no attempt is made to recover errors! If the configuration fails, the package is in a "Failed Config" state, and an error message is generated, so, be careful with that
<norsetto> You can find these and all other possible dpkg calls in the debian policy, chapter 6
<norsetto> well, that was the hard bit, I hope your brain is not confused as mine :-)
 * norsetto tries unsuccesfully to wake up huats
<norsetto> Usually one will not manually write these scripts, debhelper scripts will do that for us
<huats> norsetto: (phone call...)
<norsetto> For instance if our package installs icons and we want to update the Freedesktop icon caches, you will just add a dh_icons call in debian/rules, this will create appropriate maintainers scripts that will call update-icon-caches
<norsetto> If you have several debhelper scriplets, all the fragments from each will be collated in a single maintainer script
<norsetto> If you need to have a mixed script, ie. a part manually written and another generated by debhelper, you can use the #DEBHELPER# token
<norsetto> During build, the token will be replaced by whatever "functions" debhelper needs to generate
<norsetto> You have seen and example of this for trousers
<norsetto> In that case there was a fragment that was inserted in the postinst by dh_installinit
<norsetto> You can check it by looking at trousers.postinst in the debian dir of the trousers source package
<norsetto> Even though you will rarely need to write maintainer scripts manually, it is VERY IMPORTANT to be able to debug failures coming from maintainer scripts
<norsetto> This is because these may cause packages to be left in an non-desirable state and possibly screw up the whole package management
<norsetto> You will see many bugs of this kind in the LP bug tracker
<norsetto> It is also important to check an init script provided by upstream before installing it
<norsetto> Since it will be a maintainer script we need to make sure that it doesn't fail, and if it does so, it does it gracefully
<norsetto> If an init script fails, it may fail one of the maintainer scripts and leave a user's system in a mess
<norsetto> On top of that, it is a conffile, so, not removed on upgrade
<norsetto> Anybody know how we could solve such a situation?
<norsetto> Anybody has ever seen or used dh_installinit?
<huats> never user
<huats> used
<Xk2c_> no
<MikeMc> no sounds intersting...
<norsetto> We have seen this for trousers, dh_installinit is the debhelper scriplet that installs init scripts into package build directories
<norsetto> dh_installinit also automatically generates the postinst, postrm and prerm commands needed to set up the symlinks in /etc/rc*.d/ and to start and stop the init scripts
<norsetto> there is a nice option that this debhelper function provides
<norsetto> You can override the failure action by using the option --error-handler=function when calling dh_installinit in debian/rules
<norsetto> In this case, the named shell function will be run if the init script fails
<norsetto> This function should be provided in the prerm and postinst scripts, before the #DEBHELPER# token
<norsetto> This will simply modify the snippets inserted by dh_installinit with something like "/etc/init.d/init_script action || function" instead of "/etc/init.d/init_script action || exit $?"
<norsetto> so if "init_script action" fails it will execute funtion instead of exiting with an error <> 0 and failing the maintainer script
<norsetto> For instance a simple --error-handler=true will just make the removal continue if the initscript fails stopping the daemon and you have
<norsetto> a new version to install that fix that very bug! Without this, you will have to ask the user to manually modify the init script himself
<norsetto> Another thing to be careful is that you cannot assume in your maintainer scripts that conffiles from another package are available
<norsetto> Furthermore, you should not assume that a conffile being present means that some functionality are available, remember that conffiles are only removed on purge
<norsetto> I have an example to show you this
<norsetto> I stumbled against a problem of the first kind in a recent bug (bug 248150), which I hope I won't have to fix (hint to any member of motu-sru which might be around :-))
<ubottu> Launchpad bug 248150 in fcalendar "package r-cran-fcalendar 220.10063-1 failed to install/upgrade: " [Undecided,Confirmed] https://launchpad.net/bugs/248150
<norsetto> this is showing an example of sistpoty|work words of wisdom
<sistpoty|work> <- isn't anywhere wise :P
<huats> :)
<norsetto> there is a very nice explanation by supermaster steve langasek in the debian bug which should enligthen you (it did it for me ;-))
<norsetto> do you see what the problem is ?
<NielsE> I think I globally understand it
<MikeMc> symlink?
<norsetto> to tell you in a (hopefull) nutshell, the postrm of the old packages was calling a binary which relied on a conffile being present
<norsetto> problem is, that that conffile was moved from one location to another, and a symlink installed to point to the new location
<norsetto> now, when the package is upgraded, if the new package providing the binary is not yet installed, everything goes fine
<norsetto> however, if the new package is installed, since it will not yet be configured, the symlink will be left dangling, and that binary will fail
<norsetto> and fail 40+ other packages with it ...
<norsetto> Don't be worried if you don't get it immediately, its not that simple :-)
<norsetto> that was just to show you what kind of considerations one would have to make when doing maintainer scripts and what pain they can cause to debug
<norsetto> Shall we do another simpler example?
<MikeMc> yes
<NielsE> yes
<huats> norsetto: if you have one
<huats> :)
<norsetto> Lets see another example, bug 250088
<ubottu> Launchpad bug 250088 in psad "can't remove psad package" [Undecided,Fix released] https://launchpad.net/bugs/250088
<norsetto> huats: I have plenty ;-)
<huats> I have doubts on the "simple" :)
<norsetto> to understand this, download psad (the buggy version) and check what the prerm script does
<norsetto> wget http://archive.ubuntu.com/ubuntu/pool/universe/p/psad/psad_2.1-1_amd64.deb
<norsetto> dpkg -I psad_2.1-1_amd64.deb prerm
<norsetto> do you see where it fails?
<huats> the line 	find /var/run/psad/ -type f -exec rm -f {} \;
<norsetto> yes, do you see why it fails?
<huats> should test first the existence of /var/run/psad
<norsetto> indeed, lets not forget that in ubuntu /var/run is mounted as tmpfs
<huats> since if it does not exists, find will raise an error
<norsetto> indeed, and fail the removal, leaving the user machine in a mess (recoverable, but still a mess)
<huats> sure
<NielsE> yes
<norsetto> in this particular case I also believe that this will need to be done in the preinst and/or postinst (creating /var/run/psad if not existing)
<huats> ok
<norsetto> another example?
<MikeMc> ok
<huats> go ahead
<huats> :)
<norsetto> ok, lats one since its about two hours now :-)
<norsetto> bug 251696
<ubottu> Launchpad bug 251696 in pygopherd "package pygopherd 2.0.17 failed to install/upgrade: subprocess post-installation script returned error exit status 1 (dup-of: 238755)" [Undecided,Incomplete] https://launchpad.net/bugs/251696
<ubottu> Launchpad bug 238755 in shadow "'Account has expired' message when adding a new user" [Undecided,Confirmed] https://launchpad.net/bugs/238755
<norsetto> I think pleia2 has recorded everything, so the logs will be available?
<norsetto> do you see whats happening with this?
<huats> the pb here seems that the postinst tests if /var/gopher exists
<huats> and then copy in /var/gopher/gophermap
<huats> no ?
<norsetto> hmmm, no :-)
<pleia2> james_w typically posts logs following a session, we'll reply to the list with their location
<norsetto> pleia2: okki, thanks
<MikeMc>  'passwd -l' is broken?
<norsetto> there are two problems actually, but one is not lethal (even though is silly)
<NielsE> pleia2: the message goes to the motu-list?
<norsetto> MikeMc: well, you could say that, other people may also disagree, but the issue is definetively in the chsh call
<norsetto> you can all see that in the script
<huats> when he grep the passd file
<huats> he search for the HOMEDIR
<huats> but he do not take into accoutn the result of HOMEDIREXISTS
<norsetto> huats: he is using that, later on
<Xk2c_> Your account has expired; please contact your system administrator
<Xk2c_> from the original bug
<norsetto> yes
<norsetto> just immediately after resuming normal error checking
<norsetto> he is calling "chsh -s /bin/sh gopher"
<james_w> NielsE: yes, it will.
<norsetto> that will fail if your account is locked, and fail everything else
<Xk2c_> yeah passwd -l is broken :(
<norsetto> :-)
<norsetto> somebody call that a feature ;-)
<Xk2c_> norsetto: if used at the right place
<Xk2c_> but an expired rootaccount causes headages
<norsetto> Well, I really hope you enjoyed the lecture and I could help to shed some light on maintainer scripts and dpkg, any questions ?
<norsetto> Anybody still alive?
<NielsE> thanks for taking the time, you did a perfect job, no questions for me atm
<Xk2c_> norsetto: thank you
<MikeMc> thanks, when is the next one?
<huats> thanks a lot cesare
<norsetto> MikeMc: thats for james_w to answer? I know he is working on solving the misteries surrounding kde packaging
<james_w> thanks norsetto
<james_w> I don't have another session lined up right now, but I hope to have one in two weeks time.
<norsetto> thanks to everybody that partecipated, was a real pleasure to talk with you all
<james_w> wiki.ubutntu.com/MOTU/School/Requests if you would like to request a session, or offer to present one.
<james_w> thanks again norsetto, it was a great session. I'll post the logs a little later.
<james_w> any help create documentation out of the logs would be appreciated.
<NielsE> wiki.ubuntu.com/MOTU/School/Request does not exist...
<NielsE> oh wait
<NielsE> nvm :)
<Xk2c_> bye
<NielsE> bye
<prashant321> whats going on in the session
<e-jat> hi
<word> are there any logs from the session earlier today?
<pleia2> word: https://wiki.ubuntu.com/MOTU/School/MaintainerScripts
<word> thanks :)
#ubuntu-classroom 2008-07-31
 * e-jat down down down 
#ubuntu-classroom 2009-07-29
<alex3> hola
<alex3> como estas
<alex3> alguna dama
<apoleo12> what's the lesson for today?
<nhandler> apoleo12: The next lesson is tomorrow. Look at the /topic for details
#ubuntu-classroom 2009-07-30
<qwebirc66499> gl
<asac> good morning!
<gotunandan> good morning !
<asac> anyone here ;)?
<brand0con> good evening(?)
<asac> ah good.
<gotunandan> almost good afternoon here (india)
<amartani> good morning!
<Scienceman123> Hello
<Scienceman123> 2 am here
<asac> i almost wondered if anyone would show up at this time ;) ... but great
<asac> ok lets get started. please be a bit patient with me ... its really early and usually i wouldnt be awake now ;)
<Scienceman123> Me neither :P
<asac> i really appreciate that you came then ;)
<asac> good thing is that - afaik - there is no session directly after this session, so in case it takes a bit longer we won't thrown out. (though i will try to keep it within one hour)
<asac> so basiclly todays packaging training session is supposed to be about "Mozilla packaging techniques (extensions, patchsystems, bzr)"
<asac> why mozilla?
<asac> Mozillateam takes care of a variety of packages surrounding mozilla software
<asac> + we have pretty big beasts like tbird/sunbird/firefox/xulrunner
<asac> + our expertise touches various packages that interface with mozilla in one way or another ... (cairo, fontconfig,) (plugins and embedding apps)
<asac> + xulrunner applications: fennec, prism
<asac> (and probably know, but I can't reember)
<asac> more;)
<asac> + lots of extensions
<asac> + helper tools to standardize and easy mozilla package maintenance
<asac> s/easy/ease/
<asac> so thats quite a lot work; i want to show you know what techniques were established to make the package maintenance as efficient as possible
<asac> one more adverstiment thing: we have our channel in #ubuntu-mozillteam ... so any questions wrt mozilla packages are best anwered there
<asac> so today i planned to how we achieve a few of the various objectives; in particular:
<asac> efficiency and transparency for upstream
<asac> (damn my typo is still bad ... if you get confused by too many typos let me know ;))
<asac> wrt to efficiency I want to look at various aspects:
<asac> 1. how to improve efficiency of a team
<asac> 2. how to maintain patches in an efficient way - show tricks
<asac> 3. how source tree layout can contribute to efficiency
<asac> 4. how we make backporting efficient
<asac> 5. and special requirements we get by providing daily builds
<asac> so i want to start with section one of todays session ;) ... "Team & Tools"
<asac> efficient team maintenance depends on a shared set of tools and best practices
<asac> basically the goal is:
<asac> anyone in a Team should be able to fix/adjust/extend packaging branches without thinking twice
<asac> this
<asac> helps to be better leverage learning effects, but also reduces discussion about such  meta topics itself to a minimum
<asac> Examples (team & tools):
<asac> + mozillateam uses bzr - discussing the benefits of a distributed VCS for a team is a bit beyond the scope of this session, but probably feel obvious to most, right?
<asac> + something less obvious, which helps to improve team efficiency is the use of the same changelog format
<asac> doesnt sound like a big deal, but besides from improving readability it also helps
<asac> to avoid regular discussions about how this or that format is better ... so team members can focus on the real work ;)
<asac> two examples of changelog formats used; first the comon one:
<asac>  * path/to/file: what did you do
<asac> that one is pretty common, but for mozilla (at least the big beast apps mentioned above) it turned out to be suboptimal
<asac> basically because most of the work we do is related to patches: updating patches, adding patches, removing patches
<asac> also we explicitly add some meta information to our patches to increase upstream transparency
<asac> so our file names would be rather long:
<asac> * debian/patches/bz386904_config_rules_install_dist_files.patch ...
<asac> if you have a bunch of those files touched the changelog becomes unreadable ... thats why mozillateam took a different approach and first state what is done and then how and what files touched
<asac> * i did this
<asac>   - update debian/patches/bz386904_config_rules_install_dist_files.patch
<asac>   - update debian/patches/series
<asac>   - drop debian/patches/yetanother_patch
<asac> you can see this format being used in most mozilla related packages in ubuntu i would think
<asac> next thing is similar trivial, but even more important: "Branch names"
<asac> agreeing on how to name branches improves efficiency quite a lot
<asac> ideally, anyone in the team can find any branches by typing in the location bar or console directly
<asac> our format is:
<asac>  Release branches: lp:~${TEAM}/${PROJECT}/${PACKAGE}.[${RELEASE}|head]
<asac> (release branches are the main branches that are used to release uploads from)
<asac>  Topic branches lp:~${TEAM}/${PROJECT}/${PACKAGE}.[${RELEASE}|head].${TOPIC_NAME}
<asac> so for example: lp:~mozillateam/firefox/firefox-3.0.head
<asac> TEAM = mozillateam
<asac> PROJECT = firefox
<asac> PACKAGE = firefox-3.0 (source package)
<asac> RELEASE = hardy|intrepid|jaunty ... "head"
<asac> head is a special release name somehow which we use to signal that its the branch for the current development release
<asac> soinstead of using .karmic now we are using .head; when we come close to a release we cut off stable releaes branches where we dont do much development on anymore
<asac> so if you have a "real" release it means in mozillateam land that its a stable maintenance branch
<asac> two more things before we do a quick exercise for the team & tools section
<asac> we also do "release commits":
<asac> -> this boosts efficiency because you can easily spot revisions that reflect any given package version
<asac> we use bzr-builddeb accors the board as a conventient way to produce sources/binaries etc.
<asac> and we use debian/rules get-orig-source quite heavily to produce tarballs directly from upstream repositories (e.g. snapshots/dailies/releases)
<asac> hmm... time is running fast. any questions for now?
<asac> maybe lets do a simple exercise about "branch names":
<asac> guess the branch url for the nss jaunty release branch and bzr branch it
<asac> anyone can guess the name ;)?
<asac> so the template is: lp:~${TEAM}/${PROJECT}/${PACKAGE}.[${RELEASE}|head]
<asac> bzr branch lp:~mozillateam/nss/nss.jaunty ;)
<asac> everyone got that branch ;O)?
<asac> ok ... so for next excersize you similarly should branch the "nspr" karmic branch as we want to prepare a release ;)
<asac> bzr branch lp:~mozillateam/nspr/nspr.head
<asac> so what you usually do during development is to keep the changelog at UNRELEASED (check out debian/changelog)
<asac> currently its karmic, but assume its all the time UNRELEASED until the real upload
<asac> so when you are done with all the branchwork you do a release commits. Thats basically two commands:
<asac> 1. dch -r -DRELEASE (e.g. dch -r -Dkarmic)
<asac> -> this updates the changelog timestamps and flipps UNRELEASED to karmic (or whatever you specified in RELEASE
<asac> 2. debcommit -r
<asac> -> this does the actual release commit. it autoamtically creates a bzr commit log reading like: "releasing 0.0-0ubuntu1"
<asac> this helps anyone in the team later to spot the actual release by just looking at changelog
<asac> also it creates a tag using the version in changelog - which is a good thing, but the mozillateam usually does not use tags for that
<asac> so when you did those two commands you basically have prepared a nspr release in mozilla-team-style
<asac> so seince you are not a mozillateam member, where would you push the branch to in order to contribute?
<asac> answer is simple: push your branch up to launchpad using an appropriate topic branch name
<asac> and request a merge
<asac> Topic branches lp:~${TEAM}/${PROJECT}/${PACKAGE}.[${RELEASE}|head].${TOPIC_NAME}
<asac> so for this it could be: lp:~yourname/nss/nss.head.4.8-0ubuntu1
<asac> ok thats it for teams and tools :)
<asac> since time is already running low i will a bunch of things i said to say ...
<asac> lets go from team & tools to patches
<asac> in particular its important that adding patches also causes long term maintenance pain
<asac> especially in an environmnet where you want to provide daily builds based on a really active upstream
<asac> like firefox
<asac> (example: https://edge.launchpad.net/~ubuntu-mozilla-daily/+archive)
<asac> one thing to wake you up:
<asac> + seemingly easy patches can become a pain; see http://bazaar.launchpad.net/~chromium-team/chromium-v8/chromium-v8.head/annotate/37/debian/patches/enable_soname.patch
<asac> thats a patch i recently added to our chromium v8 branch (the chrome javascript engine)
<asac> anyone has any idea whats so painful about that patch?
<asac> the problem is not that its a big patch that is hard to figure how to port in caes upstream changes the underlying file
<asac> the problem here is that it touches a context that frequently changes: e.g. MINOR_VERSION, BUILD_NUMBER, PATCH_LEVEL
<asac> those regularly change and i am sure if that patch would have been kept we would get build failures every few days in our ~chromium-daily ppa
<asac> anyone can think of a way to prevent that?
<asac> here is the better approach (even if its a bit ugly its much less painful):
<asac> http://bazaar.launchpad.net/~chromium-team/chromium-v8/chromium-v8.head/revision/39#debian/rules
<asac> so basically we dont put a patch in there, but rather do the change using sed from debian/rules :)
<asac> ok another thing about patches ...
<asac> + dpatch-edit-patch and simple-patchsys is suboptimal approach for a) large packages and b) medium packages that are work intensive
<asac>  - example: adjusting one patch in xulrunner 1.8 (even smaller than 1.9) with dpatch-edit-patch run took several minutes
<asac>  thats time better spend on other things i am sure
<asac> mozillateam uses quilt ... its a bit more to learn up front, but you can work within a source tree and dont need to regularly create full copies of it and so on
<asac> as an exercise you could try to adjust the soname patch from above using quilt (not now though).
<asac> i will stay in the channel if you have questions. or join #ubuntu-mozillateam
<asac> i will skip two topics now because of time constraints and move directly to last topic: tricks on how to make backports easy
<asac> about backporting
<asac> especially for the dailies we dont want to maintain branches for each and every ubuntu releaes
<asac> instead we take care that .head branches just work everywhere
<asac> for that we use various tricks ;)
<asac> one trick is to enable/disable features based on the version that is available
<asac> so if firefox 3.0 needs PACKAGE b >= VERSION 1 for a certain feature
<asac> we wouldnt add a hard depent to debian/control like b >= VERSION1
<asac> instead we just add an unversoined dependency on package b to debian/control
<asac> and then in debian/rules check the installed version and enable/disable a certain feature on demand
<asac> you can check that yourself in rules and control of http://code.launchpad.net/~mozillateam/xulrunner/xulrunner-1.9.2.head
<asac> look for nspr/nss and cairo and sqlite
<asac> ok since time is off, go ahead and ask me
<asac> include my nick so i can see your questions
<asac> the notes i prepared for this session can be found here: http://paste.ubuntu.com/236213/
<asac> maybe it helps you to re-read something
<asac> if you do the exercises and need help, let me know
<asac> if not today here, you can ask i #ubuntu-mozillateam
<asac> i didnt touch extension maintainence this cycle because i did it like 4 last time i did a session
<asac> if you are interested in helping out doing extensions, jump in our channel
<asac> we have lots of work todo this cycle
<asac> and extensions are an easy starter
<asac> ok thanks
<asac> !
<qwebirc2865> date -u
<Keiffer> Does anyone have invites on DEMONOID or BITME? Could exchange some
<squirrel25> anyone having trouble getting MPEGs to play ?
#ubuntu-classroom 2009-07-31
* nhandler changed the topic of #ubuntu-classroom to: Ubuntu Classroom || https://wiki.ubuntu.com/Classroom || https://wiki.ubuntu.com/Packaging/Training || Upcoming: || Run 'date -u' in a terminal to find out the UTC time
<qwebirc71317> What would be the easiest way to get ahold of a transcript of the session lead by Alexander Sack at 30th July, 06:00 UTC ?
<nalioth> qwebirc71317: /topic ?
<qwebirc71317> unless my client is doing funny things, I only see the two URL's in the topic, and from neither can I find a chan-log
<Knightlust> qwebirc71317: there's a log saved somewhere. checkout irclogs.ubuntu.com and also check out the wiki, I'm sure someone summarized the activity
<qwebirc71317> ah there it is in irclogs.ubuntu, awesome! thanks Knightlust
<qwebirc71317> a summary sounds nice too, I'll see if a session summary's are mentioned in wiki
#ubuntu-classroom 2009-08-01
<stas> hi, I'm trying to apply a patch to php5-cgi package, but I can't find configure file inside the sources of the package
<stas> how is it possible to patch it?
#ubuntu-classroom 2010-08-02
<awanti> Hi
<raynesax> hi
<raynesax> anybody here!
#ubuntu-classroom 2010-08-03
<zkriesse> ghostcube: and hello again! lol
<ghostcube> :)
<ghostcube> huhu
<qwebirc98041> hi
#ubuntu-classroom 2010-08-04
<faruk> s.a
<faruk> arkadaÅlar
#ubuntu-classroom 2010-08-05
<dholbach> good morning everyone!
* ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Current Session: Packaging Training: Fixing Small Bugs In Ubuntu - Instructor: dholbach
<dholbach> who do we have here for the Packaging Training session?
<dholbach> â¦ come on, don't be shy :)
 * micahg will be in and out
<dholbach> hey micahg :)
<dholbach> ok, who else do we have here?
<chilicuil> o/
<sbronsted> +1
<dholbach> awesome, seems like not everyone of the 119 folks in here are sleeping :)
<dholbach> Okâ¦
<dholbach> I had a quick look into Launchpad and found a few easy to solve bugs and I'll show you how to do it
<dholbach> this isn't so much about the exact fix, but the proper way to do it and get it included into Ubuntu
<dholbach> (or at least one way to get it in)
<dholbach> Do you guys have your SSH keys already set up in Launchpad?
<chilicuil> yep
<sbronsted> yep
<dholbach> awesome
<dholbach> for those who read the logs afterwards:
<dholbach> check if you have ~/.ssh/id_rsa.pub or ~/.ssh/id_dsa.pub
<dholbach> if not, run: ssh-keygen -t rsa
<dholbach> (you might need to install openssh-client first)
<dholbach> afterwards, head to https://launchpad.net/people/+me/+editsshkeys and add your ssh key there
<dholbach> alrightâ¦ with that out of the way, let the real fun begin
<dholbach> please run:
<dholbach> sudo apt-get install --no-install-recommends bzr bzr-builddeb pbuilder ubuntu-dev-tools build-essential debhelper
<dholbach> this will install a couple of tools we'll need in our endeavours
<dholbach> bzr is a distributed version control system that's very well integrated into Launchpad
<dholbach> bzr-builddeb is a bzr plugin that helps with building packages from bzr branches
<dholbach> pbuilder is a tool with which you can build packages locally, in a sane and clean way (kind of what happens in a PPA, when packages get built there)
<dholbach> ubuntu-dev-tools (and devscripts which it pulls in) gives you a set of scripts that are incredibly useful for package maintenance, especially repetitive tasks like updating the changelog, etc. become very pain-free
<dholbach> build-essential pulls in make, gcc and other bits for very basic compilation bits
<dholbach> and debhelper is used in almost every package as a build-dependency - it's very useful to have it around, it automates lots of things in the actual build process
<dholbach> do you have any questions already?
<sbronsted> no
<chilicuil> nop =)
<dholbach> if you do, please ask, or I'll be typing my fingers off and probably bore you to death :)
<dholbach> alright, let's crack on then
<dholbach> to tell bzr who you are and how things work, I did the following
<dholbach> bzr launchpad-login dholbach
<dholbach> bzr whoami "Daniel Holbach <daniel.holbach@canonical.com>
<dholbach> launchpad-login is your personal Launchpad ID (if you're unsure, head to https://launchpad.net/people/+me and see where it redirects you, it's the bit after the "~" in the URL)
<dholbach> and please use your own email and not mine :-P
<micahg> otherwise bzr blame doesn't work right :)
<dholbach> haha
<dholbach> alright, job done, next we edit ~/.bashrc (if you use another shell, please edit whatever file else you need)
<dholbach> and add something like this to the bottom of it:
<dholbach> export DEBFULLNAME='Daniel Holbach'
<dholbach> export DEBEMAIL='daniel.holbach@ubuntu.com'
<dholbach> afterwards, you can just run    source ~/.bashrc   (or restart the session) and you should be sorted out
<dholbach> now the packaging tools and the distributed development tools should know who you are and will make use of that information in commits and all the rest of it
<dholbach> woohoo
<dholbach> next, please edit ~/.pbuilderrc
<dholbach> and add this to it
<dholbach> COMPONENTS="main universe multiverse restricted"
<dholbach> MIRRORSITE=http://archive.ubuntu.com/ubuntu/
<dholbach> it will basically make use of all components (instead of just 'main') and default to the standard archive
<dholbach> save the file and run
<dholbach> sudo pbuilder create
<dholbach> â¦ which will take a bit of time
<dholbach> it will set up the initial, minimal build environment which will be re-used for all the local test builds that you do
<dholbach> --- now we're done with preparations ---
<dholbach> just one more word on your development environment
<dholbach> you need to run the latest development release, in our case maverick
<dholbach> it doesn't need to be your main system
<dholbach> you can have it on a spare partition or in a virtual machine or on a separate computer
<dholbach> but you need to be able to test all the stuff in the development release that is currently being worked on
<dholbach> https://wiki.ubuntu.com/UbuntuDevelopment/UsingDevelopmentReleases has a lot of information about how to do it and stay sane
<dholbach> are there any questions up until now?
<chilicuil> in the last udw u've told me that I should look at pbuilder-dist if I wanted to create diff chroots, I've done it but it doesnt seem to use the ~/.pbuilderrc, which file should I edit?
<dholbach> hum
<dholbach> let me find out
<dholbach> why doesn't it use ~/.pbuilderrc?
<dholbach> or: how did you notice it didn't?
<chilicuil> coz I've set some vars there and it doesnt use them , for example the place where it puts the results
<dholbach> aha, let me have a quick look at the code
<chilicuil> if u want u can help me to find it out after the classroom I dont want to bother all the nice ppl here
<dholbach> I suggest you have a chat with Laney or RainCT in #ubuntu-motu - they wrote the tool
<dholbach> maybe it's a bug, it's hard for me to tell right now
<chilicuil> I'll do
<dholbach> awesome
<dholbach> any more questions?
<dholbach> alright
<dholbach> on to bugs :)
<dholbach> https://bugs.launchpad.net/ubuntu/+source/phpldapadmin/+bug/609403 is the first one I picked
<ubot2> Ubuntu bug 609403 in phpldapadmin (Ubuntu) (and 1 other project) "Call to undefined function spritnf() in /usr/share/phpldapadmin/lib/functions.php on line 2180 (affects: 1) (heat: 565)" [Undecided,New]
<dholbach> the analysis of the bug is quite good, so let's see how easy it is to fix
<dholbach> let's get the source code first, so please run
<dholbach>   bzr branch lp:ubuntu/phpldapadmin
<dholbach> lp:ubuntu/<packagename> will always get you the source of the latest development release
<dholbach> so at the moment it's identical to
<dholbach>   bzr branch lp:ubuntu/maverick/phpldapadmin
<dholbach> first we should check and see if the bug still exists
<dholbach> I had a quick look and it seems to be still there
<dholbach> daniel@miyazaki:~/phpldapadmin$ grep -r spritnf .
<dholbach> ./lib/functions.php:				$new_value = spritnf('{SMD5}%s',base64_encode(mhash(MHASH_MD5,$password_clear.$salt).$salt));
<dholbach> daniel@miyazaki:~/phpldapadmin$
<dholbach> so let's go and edit lib/functions.php
<dholbach> just search for spritnf and replace with sprintf
<dholbach> depending on what editor you use if will show you visually how it recognises sprintf as a function name (as opposed to spritnf)
<dholbach> at least vi did that for me
<dholbach> ok, now save the file - bug should be fixed
<dholbach> next we should go and document it
<dholbach> for that   dch -i   should do the job
<dholbach> it'll automatically start the editor with debian/changelog (which is the changelog for the debian/ubuntu releases of the package)
<dholbach> and add a boilerplate entry for us
<dholbach> ok, let's go through the first line one by one
<dholbach> phpldapadmin (1.2.0.5-1.1ubuntu2) maverick; urgency=low
<dholbach> first up is the package name
<dholbach> in parentheses we have the version number of the package
<dholbach> or in our case of our suggested revision later on
<dholbach> 1.2.0.5 is the upstream version number, so what the phpldapadmin authors released on their web page
<dholbach> the part after the '-' is the package revision
<dholbach> if we split up 1.1ubuntu2, '1.1' is the debian revision we inherited from debian and '2' the revision in Ubuntu
<dholbach> so: upstream released 1.2.0.5, there was revision 1, then 1.1 in Debian and we introduced 2 changes to it
<dholbach> if you review debian/changelog you can see at least the history of what happened in debian and ubuntu regarding the package
<dholbach> ok, moving on: maverick is just the name of the release where you want to upload your package to (current development release always is the default)
<dholbach> urgency=low is the default and rarely changed
<chilicuil> question: can ubuntu revisions have point in between as debian ones?
<dholbach> yes
<dholbach> I think it's mostly used for stable release updates and security updates
<dholbach> normally we just increment by one
<dholbach> in Debian I think it's done similarly, also NMUs (non maintainer uploads, which is a concept we don't have) use those
<dholbach> pretty safe to ignore for now :)
<chilicuil> ok, great =)
<dholbach> let's document our changes now
<dholbach> I just put something in there like this:
<dholbach>  * lib/functions.php: fixed typo: spritnf() â sprintf. (LP: #609403)
<dholbach> so first of all I mention which file I changed
<dholbach> then I try to explain what I did there
<dholbach> that's the most important thing: you really don't want others to have to guess why you made a weird change somewhere
<dholbach> or you don't want to have to guess 2 months later yourself :)
<dholbach> we maintain all packages as one big team, so that somebody has a look at your changes later on is not unlikely :)
<dholbach> in our case it should be pretty obvious though
<ansgar> Does Ubuntu introduce patch systems such as quilt in d/rules or switch to source 3.0 (quilt) when they introduce changes to packages that had none before?
<dholbach> ansgar: I wouldn't recommend it - I'd use whatever the package itself uses
<dholbach> ansgar: but I've seen it happen
<dholbach> just to explain: patch systems are used to store patches on top of upstream source code in packages
<dholbach> in this case the package doesn't use any
<dholbach> ok, with '(LP: #609403)' I document where the discussion of the bug happened
<dholbach> or rather discussion of the change
<dholbach> in our case it's very obvious and simple
<dholbach> but you might have to change something and somebody might question later on where the decision and idea came from - in that case it's good to reference a bug report, an upstream commit or a mailing list discussion
<dholbach> also by using the specific format like in '(LP: #609403)' the bug will get closed automatically once it gets uploaded to Ubuntu
<dholbach> with that done, most of our work is done :-)
<dholbach> can you save the file, run bzr diff and paste the output to paste.ubuntu.com and give the link here?
<chilicuil> http://paste.ubuntu.com/473408/
<sbronsted> http://paste.ubuntu.com/473409/
<dholbach> chilicuil: not sure if "chilicuil <chilicuil@i.am>" is what you want in there, I'll leave that to you, maybe you need to edit the values in ~/.bashrc again :)
<dholbach> apart from that it looks great
<dholbach> sbronsted: seems you added an additional changelog entry (just edit debian/changelog and remove it)
<dholbach> also does sb@sb-laptop.casalogic.lan not look like a real email address :)
<dholbach> you might want to change it in ~/.bashrc too
<dholbach> apart from that: good work!
<dholbach> awesome
<dholbach> now please run
<dholbach>   debcommit
<dholbach> this will commit your changes locally
<dholbach> using information from the changelog entry we just wrote
<dholbach> so it'll automatically pass on info like that it fixes bug#609403, etc
<dholbach> next please run
<dholbach>   bzr push lp:~<launchpad id>/ubuntu/maverick/phpldapadmin/fix-609403
<dholbach> I'd run
<ClassBot> There are are 10 minutes remaining in the current session.
<dholbach>   bzr push lp:~dholbach/ubuntu/maverick/phpldapadmin/fix-609403
<dholbach> '~dholbach' means: use my personal namespace
<dholbach> 'ubuntu' is the distro we're working on
<dholbach> 'maverick' the development release we're working on
<dholbach> 'phpldapadmin' the package in question
<dholbach> 'fix-609403' just a name for the branch
<dholbach> now we need to test our package
<dholbach> please run
<dholbach>   bzr bd -- -S -us -uc
<dholbach> this will build a source package from your local branch (so the original upstream tarball, plus the debian/ubuntu changes, plus some descriptional file)
<dholbach> -us -uc will just avoid signing it, it's not necessary
<dholbach> now please run
<dholbach>   sudo pbuilder build ../phpldapadmin_1.2.0.5-1.1ubuntu2.dsc
<chilicuil> question: can I run there $ debuild -S -uc -us instaed?
<dholbach> chilicuil: the arguments after 'bzr bd --' are passed to debuild
<micahg> dholbach: good question ^^ ;)
<dholbach> chilicuil: but it will ignore .bzr for example, etc.
<dholbach> 'bzr bd --' is a cleaner way to do it
<ClassBot> There are are 5 minutes remaining in the current session.
<dholbach> alright, for me the build passed
<dholbach> now I would try to install the package, make sure it works and all the rest of it, but  we can't cover that here
<dholbach> (the resulting package is in /var/cache/pbuilder/result)
<dholbach> once you're happy with all your testing, you'd run
<dholbach>   bzr lp-lopen
<dholbach> in your branch
<dholbach> and it will open the branch's Launchpad page and there you can click 'Propose for merging'
<dholbach> which will give Ubuntu Reviewers the opportunity to review your code changes and merge them into Ubuntu
<dholbach> so to sum up what you need to do to work on a fix is:
<dholbach>  - bzr branch lp:ubuntu/<pkg>
<dholbach>  - cd <pkg>
<dholbach>  # work on the fix
<dholbach>  - dch -i        (to document it)
<dholbach>  - debcommit      (to commit locally)
<dholbach>  - bzr bd -- -S -us -uc    (to build a source package which you can then pass to pbuilder and other tools)
<dholbach>  # test-build the package and test it locally
<dholbach>  - bzr push lp:<lpid>/ubuntu/<release>/<pkg>/<branchname>
<dholbach>  - bzr lp-open
<dholbach>  # click 'propose for merging'
<dholbach> DONE
<dholbach> that's not too bad, is it?
<ajmitch> dholbach: thanks :)
<sbronsted> dholbach: thanks :)
<dholbach> do you have any last questions, before I take the dog for a walk and you can ask even more questions in #ubuntu-motu and #ubuntu-packaging?
<dholbach> :-)
<ansgar> And remember to forward the patch upstream after this (if relevant to upstream) ;-)
<dholbach> ansgar!
* ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - http://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi
<dholbach> very important point
<chilicuil> awesome, thx dholbach =)
<dholbach> https://wiki.ubuntu.com/Bugs/HowToFix has more info on when to send stuff upstream and the like
<dholbach> https://wiki.ubuntu.com/MOTU/GettingStarted links to a lot of other important stuff like the packaging guide, ubuntu development procedures and all the rest of it
<dholbach> unfortunately we only got one bug done, but we at least covered a bunch of details in there
<dholbach> https://bugs.edge.launchpad.net/ubuntu/+source/sbackup/+bug/384334 was the other one I picked earlier today
<ubot2> Ubuntu bug 384334 in sbackup (Ubuntu) "Bad grammar in "Backup Now!" tooltip (affects: 1) (heat: 8)" [Undecided,New]
<dholbach> if there are no more questions right now, I'll leave you be
<dholbach> and thanks a lot for your interest
<kermiac> thanks for the great session dholbach :)
<dholbach> hope you enjoyed it and will enjoy it even more to make Ubuntu even better :)
<sbronsted> dholbach: How often is http://qa.ubuntuwire.org/ftbfs/ updated?
<dholbach> sbronsted: maybe wgrant in #ubuntu-motu knows - I'm afraid I don't know
 * chilicuil is gonna fix 384334 if nobody stop him
<dholbach> alright my friends - thanks again, all further questions can go into one of the other channels
<dholbach> I'll put up logs later on
<dholbach> byeeeeeeeeeeee
<JoeMaverickSett> was there any session earlier?
<mpounta> yeap
<JoeMaverickSett> where is the log for that?
<mpounta> i don't know, first time i attend here. and i was a bit late too. so i am searching for the log too
<JoeMaverickSett> oh! okie! i'll also try to find it.
<JoeMaverickSett> could someone give me the link of the log for the today's session?
<qwebirc32079> http://irclogs.ubuntu.com/2010/08/05/%23ubuntu-classroom.txt
<JoeMaverickSett> thank you! qwebirc32079.
<kosaidpo> hello people
<kosaidpo> is it gmt +1h ight ??
<pleia2> @now
<pleia2> hmm
<pleia2> Thu Aug  5 18:45:07 UTC 2010
<pleia2> the next class is on saturday
<kosaidpo> ohh
<kosaidpo> okies
<kosaidpo> good
<kosaidpo> pleia2: tnx : )
<pleia2> sure thing
<kosaidpo> this is my first time : )
<kosaidpo> i missed those past clases : (
<pleia2> logs are online here: https://wiki.ubuntu.com/Classroom
<pleia2> and if we haven't gotten around to updating that page, they're updated every hour at irclogs.ubuntu.com
<kosaidpo> uhmm its ;07 minutes over here or my pc is wrong
<pleia2> kosaidpo: the only class today was at 06:00 UTC
<pleia2> the next one isn't until saturday
<kosaidpo> oh oh oh meanin i missed it already ??
<kosaidpo> well utc = gmt-1
<kosaidpo> ami wong
<pleia2> as far as I know, UTC and GMT are the same
<pleia2> at the class was at 6AM
<pleia2> s/at/and
<kosaidpo> ohh
<kosaidpo> okies pleia2
<kosaidpo> txn
<kosaidpo> have fun people
<kosaidpo> peace out
#ubuntu-classroom 2010-08-07
<kosaidpo> hello
<kosaidpo> the today's class guna be at 6 gmt ight ?
<kosaidpo> hello guys the class is  about an hour right
<Kljaver> 20 minutes remains
<kosaidpo> im countin : D
<zkriesse> kosaidpo: ten mintues
<zkriesse> hehe pleia2
<FenBo> tried to start phpmyadmin got this: Not Found  The requested URL /phpmyadmin/ was not found on this server. Apache/2.2.14 (Ubuntu) Server at localhost Port 80   ... when i look at config.inc.php ii is empty. How do I setup phpmyadmin
<zkriesse> FenBo: I'll get you that info in just a minute
<zkriesse> Ok class time!
<zkriesse> Anyone have any questions before I start?
* ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Current Session: Launchpad GPG Basics - Instructor: zkriesse - Slides: http://people.ubuntu.com/~lyz/slides/Launchpad_GPG_Key_Basics.pdf
<ClassBot> Slides for Launchpad GPG Basics: http://people.ubuntu.com/~lyz/slides/Launchpad_GPG_Key_Basics.pdf
<zkriesse> If you have questions please ask them in #ubuntu-classroom-chat and put QUESTION: infront of it
<zkriesse> Ok Let's start
<zkriesse> What this class will cover is making a GPG/PGP Key on your pc, importing it to Launchpad, and if you ask about it, signing something such as the Code Of Conduct with it
<zkriesse> Yes please as kosaidpo asked, please login to your launchpad accounts
<zkriesse> Ok after you've logged in you'll then need to go to your Applications -> Accessories -> Passwords & Encryption Keys on your desktop
<zkriesse> http://people.ubuntu.com/~lyz/slides/Launchpad_GPG_Key_Basics.pdf
<zkriesse> Just in case you didn't get the link for the slides ^^
<zkriesse> After you open that up click File -> New -> PGP Key I've included a screenshot of what you should be seeing
<zkriesse> After you click File -> New -> PGP Key Choose continue
<zkriesse> After that you should see a window similar to this:
<zkriesse> Enter in your info and then click "Create". Note, you can click the "Advanced key options" tab and then choose the key's encryption
<zkriesse> type, it's strength, and if and when it expires. Usually the defaults are ok to accept.
<zkriesse> Any questions before I move on?
<zkriesse> And a little note: For those of you who don't use Thunderbird as your email program of choice do not fret, as we will be using the Terminal do decrypt the email sent by the key latter down the session
<zkriesse> After you click "Create" you'll have a window in
<zkriesse> which it will ask you to enter a "Passphrase". Choose one and then click "Ok". NOTE: Either save or write your chosen passphrase
<zkriesse> down as there is no way to recover it if lost thereby making the key useless/invalid. After you're done click create and it will generate
<zkriesse> the key. Now to push it to the keyserver and then to Launchpad!!!
<zkriesse> And I stress, severely stress: SAVE OR WRITE THAT PASSKEY DOWN!
<zkriesse> As there is no way at all to recover it if lost
<zkriesse> Unless you remember it...
<zkriesse> It will take either a few seconds or a few minutes for the key to generate depending upon the key strength you chose
<zkriesse> So any questions before I move on to the next section?
<zkriesse> If I'm moving too fast just feel free to stop me in #ubuntu-classroom-chat
<ClassBot> JoeMaverickSett asked: if we reinstalled the whole OS, there is no way to recover the PGP, am i right?
<zkriesse> No there is no way to recover the key UNLESS you previously saved it off to an external drive, USB Flash drive or something to that effect...but to what end I'm not entirely certain at this time
<zkriesse> Ok so now that you've made your key what we need to do now is push it to the keyserver.
<zkriesse> To do that we're going to use the Terminal. The Terminal can be found by going to
<zkriesse> Applications -> Accessories -> Terminal. Open that and then type in the following without
<zkriesse> quotes. " gpg --list-keys " If it's successful it should display something similar to
<zkriesse> "/home/zach/.gnupg/pubrin.gpg
<zkriesse> ----------------------------
<zkriesse> pub 1024D/12345678 2010-08-25
<zkriesse> uid Zach Kriesse (My Test GPG Key) <test@zachkriessetest.com>
<zkriesse> sub 2048/9ABCDEF1 2010-08-25"
<zkriesse> Make a note of the public id which in this case is "1024D/12345678" Specifically the last
<zkriesse> part "12345678" Now because Launchpad doesn't automatically store your key(s) we have
<zkriesse> to add them to the keyserver. To do that we run the following in the Terminal " gpg --send-
<zkriesse> keys --keyserver keyserver.ubuntu.com 12345678 " The 12345678 being your own public
<zkriesse> key ID. If its successful it should display som
<ClassBot> kosaidpo asked: and how we can save the key to another support?
<zkriesse> For saving a key off somewhere else I'd look into this http://www.gnupg.org/documentation/faqs.en.html
<zkriesse> It has just about any answer on that as I'm not ENTIRELY positive if you can or can't. I don't want to say yes or no for fear of misleading you guys!
<zkriesse> Ok so after you get your public ID via " gpg --list-keys " and you import it there should be this being displayed to you If its successful it should display something similar to "gpg: sending key 12345678
<zkriesse> to hkp server keyserver.ubuntu.com"
<zkriesse> Ok everyone doing ok so far/following along easy?
<zkriesse> Everyone ok then?
<zkriesse> Ok....moving on
<zkriesse> Ok so now that we've added our key(s) to the Ubuntu Keyserver we now need to import it
<zkriesse> into Launchpad. This part is pretty easy and fairly quick. Ok so for Launchpad to know that
<zkriesse> the key you just imported is actually yours and belongs to you it needs it's personal
<zkriesse> fingerprint. Much like your own fingerprint it's the unique identifier for that specific key and
<zkriesse> it alone. Ok so open up your terminal....yes again you gotta open just one more time!
<zkriesse> Come on you can do it! Ok, in your terminal type " gpg --fingerprint " It should output
<zkriesse> something akin to, " pub 3584R/12345678 2010-08-06
<zkriesse> Key fingerprint = 3D5A 45BC D847 2509 59RT 29TQ 3214 1234 ABCD EFGH
<zkriesse> uid
<zkriesse> Billy Bob (My test key for the session...it may be deleted after this is over.)
<zkriesse> <email@mail.com>
<zkriesse> sub 3584R/123456FG 2010-08-06 " What you'll need is the Key fingerprint. Copy that and
<zkriesse> then go to your Your GPG Key Page and paste your Key's fingerprint into the fingerprint
<zkriesse> text box and then click import.
<zkriesse> In the example above the Key's "Fingerprint" is 3D5A 45BC D847 2509 59RT 29TQ 3214 1234 ABCD EFGH
<zkriesse> You will of course replace that with your own
<zkriesse> And for those who are having a bit of trouble with this do not worry. After I finish giving the session itself I will be sticking around to answer any questions you have until the hour is up
<zkriesse> And what I mean by You GPG Key page i mean this page https://launchpad.net/people/+me/+editpgpkeys
<ClassBot> kosaidpo asked: where i can find that gpg page ?? on launchpad ? i dont see it
<zkriesse> https://launchpad.net/people/+me/+editpgpkeys is the page you will need
<zkriesse> Just drop the Key fingerprint into the Text Entry box which is labeled "Fingerprint"
<zkriesse> After that you'll get a message stating that an email has
<zkriesse> been sent. You'll have to decode this email with the Passphrase you gave for the key back
<zkriesse> in the first part of this session. NOTE: If the key fingerprint reports an error stating that the
<zkriesse> key is either invalid or not acceptable don't worry. All you'll have to do is type it in manually.
<zkriesse> Make sure to put only ONE space between each set of the letters/numbers. Now for the
<zkriesse> email part.
<zkriesse> Everyone with me so far?
<kosaidpo> yes
<zkriesse> Get the key imported?
<ClassBot> kosaidpo asked: what to do with that mail now ?
<zkriesse> Ok if you've got your email it's going to look a little, jumbled up
<zkriesse> Which means it's encrypted with your key!
<zkriesse> Now that in itself has gotta be a cool feeling. You have just encrypted your very own email
<zkriesse> Ok so to decrypt your email copy the part that starts with " -----BEGIN PGP MESSAGE----- " and
<zkriesse> ends with " -----END PGP MESSAGE----- " and save it to your desktop as a .txt file.
<zkriesse> Make sure that you only copy the part that starts with " -----BEGIN PGP MESSAGE----- " and
<zkriesse> <zkriesse> ends with " -----END PGP MESSAGE----- "
<zkriesse> After you've saved the file off to your desktop as a .txt file
<zkriesse> Open up that terminal again
<zkriesse> In the terminal type WITHOUT QUOTES: " cd ~/Desktop "
<zkriesse> What that will do is change the direction to your desktop where that .txt file should now reside
<zkriesse> Then type " gpg --decrypt
<zkriesse> file.txt " File being the name of the file itself. After typing that you will be required to type in your passkey for the PGP/GPG
<zkriesse> key and then hit enter. The message should now be decrypted and at the bottom of the message there will be a link. Click
<zkriesse> that, choose confirm on the Launchpad page which is displayed and your key is now imported!
<zkriesse> For the --decrypt file.txt make sure to replace "file" with the name you gave the .txt file
<zkriesse> After you type that all in hit enter and you will be required to type in the passkey you gave the key back in step 1/2
<zkriesse> After that your email should be decrypted and you should have actual understandable text with links in there
<zkriesse> The one you want is at the bottom. It'll say something like, "Click this link to verify your key" or something to that affect
<zkriesse> OK!
<zkriesse> That's it!
<zkriesse> You have just made your very own GPG Key
<zkriesse> Now that I'm done giving the session itself I'm going to stay for the last 20 minutes of the session and answer any questions/problems you might have
<ClassBot> There are are 10 minutes remaining in the current session.
<ClassBot> There are are 5 minutes remaining in the current session.
* ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - http://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi
<Kljaver> ohh
<zkriesse> Kljaver: ?
<Kljaver> i want to learn Packaging
<Kljaver> i missed package training
<zkriesse> :(
<Kljaver> what training will be next?
<pleia2> Kljaver: we don't have anything on the schedule right now
#ubuntu-classroom 2010-08-08
<delcoyote> hi
<delcoyote> hi
<starspot> Hi folks,  In Ubuntu 10.04 Firefox and Thunderbird how do I disable the pop-up menu that appears with options when I select a URL for copying?
<starspot> This didn't exist until I updated to version 10.04
<zkriesse> starspot: Please do not post your question in multiple channels
<zkriesse> starspot: Wait for an answer before repeating yourself right away
<starspot> ok.
 * starspot is thinking zkriesse just repeated his or herself
<zkriesse> No i didn't...I made two separate points
<starspot> :)
#ubuntu-classroom 2011-08-01
 * negronjl is away: out to lunch
#ubuntu-classroom 2011-08-02
<vuth> hi
<vuth> i am a linux mint user trying out ubunutu
<vuth> mint had a software manager...does ubuntu have?
<SergioMeneses> vuth, yes...
<vuth> please enlighten me..sorry for not googling this i have ADD
<vuth> it hard for me to read websites...unless it straight to the point
<SergioMeneses> vuth, join to #ubuntu ...I'm working, but there can help you
<vuth> kk
<vuth> sergiomeneses im in
<SergioMeneses> vuth, make you question there! :D
<vuth> its okay i found out
<vuth> :P
<SergioMeneses> vuth, o.09
<vuth> im soo dumb i just need to get used to the toolbars
<SergioMeneses> vuth, linux mint is based in Ubuntu
<vuth> wow wat a quiet room
<crshbndct> hey everyone
<crshbndct> i have a question which is dd vs rsync
<head_victim> crshbndct: this is a channel for directed learning sessions, for general help you'll probably find more assistance in the main #ubuntu channel as that's where people monitor to give assistance.
<crshbndct> ok sorry
<mhall119> nw 36
#ubuntu-classroom 2011-08-03
<Renco> what exactly is ubuntu classroom?
<Renco> oh wait, nvm, gtg bye
#ubuntu-classroom 2011-08-04
<kikupotter> how to learn vim?
<kikupotter> ...
<kikupotter> ???
<kikupotter> thanks
<jmarsden> kikupotter: This is a classroom, no class is currently happening.  Ask support questions in #ubuntu
#ubuntu-classroom 2011-08-05
* ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Current Session: Q and A with Jonathan Lange - Application Developer Programme - Instructors: jml
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2011/08/05/%23ubuntu-classroom.html
* ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat ||
* ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Current Session: Q and A with Jonathan Lange - Application Developer Programme - Instructors: jml
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2011/08/05/%23ubuntu-classroom.html following the conclusion of the session.
<jml> Hello!
<jml> Before I take your questions, please allow me to introduce myself
<jml> My name is Jonathan Lange, and I work at Canonical on our developer programme
<jml> I used to work on Launchpad, now I don't.
<jml> Feel free to ask Launchpad questions on #launchpad :)
<jml> The developer programme stuff is fairly new, but I'm happy to answer any questions you have on it, or  application development more generally
<ClassBot> nigelb asked: What does the new developer program comprise of? How do you envision helping app developers more?
<jml> Good question
<jml> Very specifically, what I'm working on *right now* is making it much easier for people who want to distribute binaries to get that software packaged, in a PPA and in the software center
<jml> automagic binary packaging
<jml> More broadly, there's a lot of stuff going on in the Ubuntu project & in Canonical that is directly or indirectly related to helping app developers
<jml> e.g. A bunch of people are working on developer.ubuntu.com
<jml> nigelb: yeah, like pkgme
<jml> nigelb: in fact, that's where I'm landing lots of my work
<jml> nigelb: but a pkgme for binaries rather than source
<jml> nigelb: I think so :)
<jml> another part of what we want to do is make it safer to run binaries
<jml> another thing that's not officially part of the programme but just something that motivated community members are doing is writing up posts & content about how to actually *write* apps
<ClassBot> jsjgruber asked: Isn't it important from a security point of view that everything be introduced to the repositories through source?
<jml> jsjgruber: I guess that's the ideal from a security point of view.
<jml> jsjgruber: but ultimately, some people will want to install some binaries, and we need to figure out how to make that as safe as possible
<jml> apparmor, maybe running stuff inside arkose etc.
<jml> jsjgruber: does that answer the question?
<ClassBot> nigelb asked: apps that are in through the developer program will only be for the latest release or do developers have the option to release to all currently supported Ubuntu versions?
<jml> The automagic binary packaging stuff is aimed toward getting stuff into the software center for versions of Ubuntu that support the software center
<jml> In general, when bosses & stakeholders talk to me, they are most interested in current release of Ubuntu.
<jml> nigelb: do you think it's important to enable people to distribute their new apps to people running older versions?
<jml> tbh, I think it'll be driven by demand. If devs think that they'll get more users from older versions, we'll hear about it pretty quickly.
<jml> and there's not really any philosophical or technical reason not to.
<jml> anyone actually writing apps aimed at Ubuntu?
<ClassBot> deuxpi asked: What is the benefit (to Ubuntu as a project) of promoting the publication of binaries only?
<jml> It's more enabling than actually promoting.
<jml> And the benefit is for users.
<jml> e.g. A lot of the games you can get in the software center are released only as binaries
<jml> I have to confess to very much enjoying World of Goo
<jml> It would be better if the source were available, but gosh it's great to play a game like that without having to dual boot.
<jml> deuxpi: does that answer your question?
<jml> deuxpi: my pleasure
<jml> one possible fallout of the binary packaging work I'm doing now is that it'll be really easy to submit open source apps, even if they aren't packaged.
<jml> that'd be something we work out with the ARB
<ClassBot> jsjgruber asked: Have you any feel for how Debian and other upstreams would feel about adopting these ideas?
<jml> I have no idea :)
<ClassBot> nigelb asked: A follow up to my last question. If I get my app into a version of Ubuntu, will it automatically be included in the next?
<jml> At the moment, it depends.
<jml> I'm pretty sure that if you go through the ARB, the answer is 'yes'
<jml> If you're going through the proprietary apps system, then the answer is 'no, but it doesn't matter, because it'll appear in the software center'
<jml> am being kicked out of the room I'm in. back in a tick.
<jml> back.
<jml> *ahem*
<jml> they've closed off the wifi at this event, welcome to 3G powered Ubuntu Q+A
<jml> No more questions?
<ClassBot> nigelb asked: What more do you expect to happen in this space before this cycle is over?
<jml> If I knew my manager weren't watching, I'd say I'm optimistic that I can finish off this dang binary stuff.
<jml> By the time we release oneiric, I also want us to have a pretty clear picture & plan, something that everyone can be excited by & that isn't just a weird internal Canonical thing.
<jml> Umm, also developer.ubuntu.com up-and-running and awesome and people submitting content to it
<jml> That's about it. tbh, I've been pretty focused on one thing.
<ClassBot> nigelb asked: Since we have binaries the packages, would it support all the platforms Ubuntu supports? Specifically ARM.
<jml> No. It'd be up to the app developer
<jml> So, if you wrote a game,
<jml> and it was a really excellent game
<jml> and you compiled it for armel and released that
<jml> then it would only work on armel
<jml> If you caved into peer pressure and instead compiled it for i386, then that's all it would be available for
<jml> for the first cut, we're not even allowing you to provide binaries for multiple arches
<jml> but that's definitely on the radar
<jml> Umm, actually, on the earlier 'upstreams & Debian' question
<jml> I'd like to point out that it's not conceptually different to what we do already, in having a partner archive that includes fluendo and so forth
<jml> just basically making it way less work to do that
<jml> ... and my favourite author is Dostoyevksy
<jml> Any more questions?
<jml> Anyone writing an app for Ubuntu as we speak?
<jml> dropped again. back, this time on hotel provided internet.
<ClassBot> aquarius asked: what's the rough length of time between submitting an app for review (http://developer.ubuntu.com/publish/freestable/) and the app appearing in software centre?
<jml> I don't have direct experience in this, but allison informs me it takes 3 months
<jml> and that most of those months are spent getting a good screenshot
<jml> Which is obviously terrible.
<jml> So I think the ARB has plans afoot to use the same system that commercial apps use
<ClassBot> There are 10 minutes remaining in the current session.
<jml> which I think would be a great idea, but I'm not 100% sure, and I'm not on the ARB, so you shouldn't take that as gospel.
<jml> aquarius: does that answer your question?
<jml> The commercial process is you submit an app in a fancy web form that allows you to upload a screenshot, and then someone packages it & uploads it into a PPA for you
<jml> main difference is nicer UI & dedicated folk
<jml> and the work I'm doing atm is changing the 'someone' to 'something'
<jml> which will make it way easier for us to deal with the flood of apps that you guys are going to write
<jml> aquarius: I don't know if attaching the screenshot helps, sorry, I can only assume it does.
<ClassBot> There are 5 minutes remaining in the current session.
<jml> aquarius: But I can say that you should expect better news & answers for this soon.
<jml> 4 minutes remaining, 10 minutes of battery life.
<jml> anyone have any questions that consume unusual amounts of battery life?
<jml> OK. I'm wrapping up now.
<jml> Thanks all for the chat & questions.
<jml> Next time we talk, I hope to have way more to say
<jml> And you guys to be asking questions like, "My app is getting too many users, what do I do about it?"
<jml> cos I can really help with that one
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2011/08/05/%23ubuntu-classroom.html
* ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat ||
<nigelb> yay, thanks jml!
#ubuntu-classroom 2011-08-06
<Obfuscation> anyone have a clue as to why my DVD drive will read bought DVDs, and some burnt DVDs, but ones that come from Windows it can't read?
<pleia2> Obfuscation: this channel is for scheduled classes so you won't find much help, you should try #ubuntu
#ubuntu-classroom 2011-08-07
<ibrahim> hi
<jmarsden> ibrahim: there is no class now.  Use #ubuntu for Ubuntu support.
<jsjgruber> test
 * awkwardusername is Away, Reason: ( Checking mock exam papers ) | Since: ( Monday, August 8, 2011. 00:49:02 ) Xlack v2.1
<promithius> Hi! Does anyone know about the configuration file for init process in Ubuntu or Debian systems? Is it inittab like all the systems? Cause I don't see it in the /etc directory. Any idea?
<BuZZ-T> promithius: /etc/inittab doesn't exist in Ubuntu, configfiles are located in /etc/init/. But please ask questions in #ubuntu, this is no support channel
<promithius> BuZZ-T: Sorry about that. I'm learning about Linux & practice on Ubuntu.So thought, it'd be ok to ask here.  Yup! Have already got my ans from #ubuntu. Thanks for the help though.
<BuZZ-T> np
<promithius> Could you please tell me, what all are discussed  here in this IRC channel? If you don't mind..
<jmarsden> promithius: This is a classroom.  Classes are scheduled on Ubuntu-related topics.  See http://is.gd/8rtIi for the schedule
<jmarsden> !classroom
<ubot2> The Ubuntu Classroom is a project which aims to tutor users about Ubuntu, Kubuntu and Xubuntu through biweekly sessions in #ubuntu-classroom - For more information visit https://wiki.ubuntu.com/Classroom
<promithius> jmarsden, ubot2 : Thanks a lot!
<jmarsden> You're welcome.  And... ubot2 is a bot, by the way, not a real person :)
<promithius> Oh! we should respect the bots sometimes :)
#ubuntu-classroom 2012-07-30
<jsjgruber> We'll be starting our test of the proposed Lernid version in just a couple of minutes.
* ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Current Session: Lernid Application Testing - Instructors: jsjgruber
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2012/07/30/%23ubuntu-classroom.html following the conclusion of the session.
<jsjgruber> Thank you for joining us to day for a test of the proposed new version of
<jsjgruber> Lernid.
<jsjgruber> Unless you have already installed the lernid-proposed ppa we'll need to do that first.
<jsjgruber> Here are the commands:
<jsjgruber> sudo add-apt-repository ppa:jsjgruber/lernid-proposed
<jsjgruber> sudo apt-get update
<jsjgruber> sudo apt-get --reinstall install lernid
<jsjgruber> dpkg -s lernid
* Topic unset by letozaf___ on #ubuntu-classroom
<jsjgruber> Are folks doing okay? YOu can respond in #ubuntu-classroom-chat.
<JoseeAntonioR> the session isn't moderated
<jsjgruber> We will be testing a proposed version of Lernid with lot's of bug fixes and
<jsjgruber> a few new features. Thanks to coalwater (Mohammed AbuShady) for several
<jsjgruber> of the bug fixes.
<jsjgruber> Excellent, but lernid won't allow you to type to the classroom. So if you are running another irc client too, you can type here, otherwise you can type in the chatroom.
<jsjgruber> Bug fixes, and often new features, start with people
<jsjgruber> filing bug reports. Please, please let us know, in particular, if you
<jsjgruber> have any problems with Lernid. We need to correct any show-stoppers
<jsjgruber> before Ubuntu learning sessions happen, and we like to fix as many of the
<jsjgruber> minor bugs as we can.
<jsjgruber> You should see that you are running a version of 0.8.4 (the rest of the
<jsjgruber> version number is something that is added by the launchpad build recipe
<jsjgruber> and can be ignored. It won't be there when we actually make our release
<jsjgruber> to the lernid upstream ppa.
<jsjgruber> Nor will it be there when lernid is release to Ubuntu.
<jsjgruber> Who is joining us for lernid testing? Please speak up here are in #ubuntu-classroom-chat.
<jsjgruber> Again, to install the version of Lernid open a terminal with ctl-Alt-T and then enter the following:
<jsjgruber> sudo add-apt-repository ppa:jsjgruber/lernid-proposed
<jsjgruber> sudo apt-get update
<jsjgruber> sudo apt-get --reinstall install lernid
<jsjgruber> dpkg -s lernid
<jsjgruber> JoseeAntonioR,  do you have the new version of Lernid running?
<JoseeAntonioR> that's right
<jsjgruber> Would you look at the current session in the schedule to see the Instructor list (should be just me).
<JoseeAntonioR> correct
<jsjgruber> Just a minute please.
* ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Current Session: Lernid Application Testing - Instructors: jsjgruber, JoseeAntonioR
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2012/07/30/%23ubuntu-classroom.html following the conclusion of the session.
<jsjgruber> Ok, NigelB has been kind enough to make a change to the calendar for us. In a few minutes Lernid should see the change. You can see the classbot just noticed the change, too.
<jsjgruber> Within a few minutes you should see the change in Lernid.
<jsjgruber> A few minutes means maybe ten minutes.
<jsjgruber> letozaf__ , were you able to install the new lernid version?
<letozaf___> yes
<jsjgruber> Did it start for you ok?
<jsjgruber> Please go to Help in the menu, and then about. It should list the version there
<jsjgruber> as 0.8.4.7.
<jsjgruber> Does everyone see that as the version?
<letozaf___> yes
<JoseeAntonioR> and  that's right!
<jsjgruber> very good.
<jsjgruber> Let's try to enter an IRC command. (Lernid doesn't support IRC commands, but it shouldn't cause it a problem, either):
<jsjgruber>  "/whois jsjgruber"
<jsjgruber> without the quotes, of course
<letozaf___> I get: [19:29] IRC commands are not yet supported.
<jsjgruber> that goes in the bottom right of lernid, and it should just give you an error message right above where you enter it.
<jsjgruber> letozaf__, excellent
<JoseeAntonioR> that's right
<jsjgruber> letozaf___, excellent
<jsjgruber> We used to get a lernid traceback when that happened. That was fixed with coalwater's help.
<jsjgruber> Did either of you start lernid from a terminal or did you start it from the gui?
<JoseeAntonioR> gui, you didn't mention debuggin mode D:
<jsjgruber> No, I didn't. I have that for later, but I'd thought I'd ask. We'll try it again later if we have time.
<jsjgruber> let's try to access flash.
<JoseeAntonioR> btw, the calendar updated
<jsjgruber> Lernid is unable to use flash as the newest flash
<jsjgruber> crashes webkit programs when run on older CPU's. We want to support access to
<jsjgruber> the classroom from the oldest computers Ubuntu supports.
<jsjgruber> http://pastebin.com
<jsjgruber> any crashes?
<JoseeAntonioR> no crashes!
<jsjgruber> Now I'll draw your attention to the Session tab and our current session. Do you see JoseeAntonioR in the list of instructors?
<jsjgruber> Do you both see JoseeAntonioR in the list of instructors?
<JoseeAntonioR> I do
<letozaf___> I do, but not in the session tab but in the schedule tab
<jsjgruber> Sorry, about that, the schedule tab.
<letozaf___> ok, no prolbem!
<jsjgruber> You should be able to press the reload button on the bottom of the schedule tab. Please press it a few times, giving it a little time between presses. Any problems?
<letozaf___> no problem
<jsjgruber> JoseeAntonioR, work for you ok?
<JoseeAntonioR> yep
<jsjgruber> Let's go to the Session tab at the top.
<jsjgruber> I'll bring up a slide:
<jsjgruber> [slidefile https://sites.google.com/site/gruberdocuments/engineering-docs/lernid-test-slides.pdf 3]
<jsjgruber> and then we will change it:
<jsjgruber> [slide 4]
<jsjgruber> are you both still with us, now on slide 4?
<JoseeAntonioR> yep
<letozaf___> yes
<jsjgruber> Please click on the buttons under the schedule and under the slide to see
<jsjgruber> that they do what they say they do.
<jsjgruber> Any problems?
<jsjgruber> I'll wait a couple of minutes here.
<JoseeAntonioR> everything works fine
<letozaf___> everything is ok
<jsjgruber> great.
<jsjgruber> Let's try loading a much longer slide file:
<jsjgruber> [slidefile http://www.gnu.org/software/guile-gnome/docs/gtk/guile-gnome-gtk.pdf 2]
<jsjgruber> Please tell me when it has loaded.
<letozaf___> loade
<JoseeAntonioR> done
<letozaf___> sorry loaded
<JoseeAntonioR> [slide 2]
<jsjgruber> you guys must have pretty good connectivity.
<jsjgruber> I'll load it again.
<jsjgruber> [slidefile http://www.gnu.org/software/guile-gnome/docs/gtk/guile-gnome-gtk.pdf 2]
<JoseeAntonioR> done
<letozaf___> got it
<jsjgruber> very good.
<jsjgruber> Could someone please post a question by checking the checkbox at the bottom
<jsjgruber> right and typeing something?
<jsjgruber> The spacing shouldn't look unusual.
<jsjgruber> letozaf___, excellent, looks right.
<jsjgruber> cheese is good.
<jsjgruber> If you go to the schedule tab you should be able to see irc log entries.
<JoseeAntonioR> right
<letozaf___> yes
<jsjgruber> and should be able to go back in time to see the entries for logs from past days and months.
<JoseeAntonioR> right
<letozaf___> right
<jsjgruber> Would you both please click on an entry or two and see if your browser will bring the log file up in a tab?
<JoseeAntonioR> that's correct!
<letozaf___> yes it works
<jsjgruber> we are moving right along now.
<jsjgruber> Please go to a new terminal session and enter "man lernid" it should bring up the new lernid man page.
<letozaf___> yes
<JoseeAntonioR> yep
<jsjgruber> very good.
<jsjgruber> In a minute, let's stop lernid and restart it from a terminal this time. As it starts I'd like you to keep an eye on the message bar at the bottom. It should tell you what nick the server has assigned to you.
<jsjgruber> Then please reenter "/whois jsjgruber"
<jsjgruber> Ok
<jsjgruber> Please let me know when you are back
<letozaf___> ok
<letozaf___> I'm back and typed the message
<JoseeAntonioR> hmm, I seem to get no traceback
<jsjgruber> JoseeAntonioR, great.
<letozaf___> same for me no message at the bottom
<jsjgruber> letozaf___, no error in the terminal?
<letozaf___> no I meant that when I opened learnid from terminal
<letozaf___> I did not see anything on the message bar
<letozaf___> at the bottom
<jsjgruber> letozaf___, let me think about that for a minute. When you entered /whois you got no traceback in the terminal, though?
<letozaf___> yes
<letozaf___> Maybe I misunderstood
<letozaf___> I got a message box telling me my nick
<jsjgruber> That's great. That's what we want. I confused matters by asking you to test two things at once.
<letozaf___> ok
<jsjgruber> Now I'll ask you to restart lernid again, this time entering the --no-update option on the command line. That option is for those with modems who wouldn't want to reload the calendar several times an hour.
<jsjgruber> Please go ahead if you don't mind.
<letozaf___> ok done
<JoseeAntonioR> I'm back here
<jsjgruber> welcome back, JoseeAntonioR
<jsjgruber> letozaf___ are you back with us with lernid?
<letozaf___> yes
<jsjgruber> no errors, I assume?
<letozaf___> no errors
<jsjgruber> Using the File menu at the top of the screen, please disconnect from the
<jsjgruber> session and then reconnect.
<jsjgruber> please try it a couple of times.
<letozaf___> I'm back, everything seems fine
<jsjgruber> great, let's give JoseeAntonioR a bit more time
<jsjgruber> No errors for anyone?
<JoseeAntonioR> I'm done
<letozaf___> no errors for me
<JoseeAntonioR> nope
<jsjgruber> great. Let's go to the terminal tab and enter an ls command. Any problems with that?
<letozaf___> no problems
<JoseeAntonioR> what directory should I list?
<jsjgruber> It doesn't matter. Just want to make sure we haven't messed up the terminal with any of the fixes we put elsewhere.
<jsjgruber> Unless JoseeAntonioR has a problem ...
<jsjgruber> Everything else we have done falls into the realm of bug fixes and
<jsjgruber> making lernid more robust. It's harder to test them individually so
<jsjgruber> I'll just ask if anything has gone wrong for anyone--we have already
<jsjgruber> gone through logging on, loading the calendar, and loading slides, where
<jsjgruber> many of the changes have gone.
<jsjgruber> Anyone having any problems?
<jsjgruber> You are free to keep using this version of lernid if you like. If you see
<jsjgruber> a bug please report it from http://bugs.launchpad.net/lernid. As always, please
<jsjgruber> note the release of lernid you are using.
<jsjgruber> To go back to the released version of lernid:
<jsjgruber> sudo ppa-purge ppa:jsjgruber/lernid-proposed
<jsjgruber> Any final questions or problems?
<JoseeAntonioR> everything went fine
<letozaf___> no, everything went fine
<jsjgruber> Thanks to you both for helping me test lernid--it really helps build confidence that everything will work in production as well as it works during my testing.
<letozaf___> it was a pleasure to help
<jsjgruber> It's very important that lernid doesn't distract from our learning sessions by being buggy.
<jsjgruber> Thanks JoseeAntonioR, it was great to have your help once again.
<JoseeAntonioR> np :)
<ClassBot> There are 10 minutes remaining in the current session.
<ClassBot> There are 5 minutes remaining in the current session.
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2012/07/30/%23ubuntu-classroom.html
* ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat ||
#ubuntu-classroom 2012-07-31
<blackshirt> hello, good morning
<Hayate> hello,good morning
<Hayate> is there class rom this morning?
* ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Event: MOTU School - Current Session: RC Bug Fixing Workflow - Instructors: tumbleweed
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2012/07/31/%23ubuntu-classroom.html following the conclusion of the session.
<tumbleweed> Hello everyone
<tumbleweed> Welcome to our little Debian RC bug squashing party
<tumbleweed> glad to see there's already an audience of 2
<tumbleweed> anyone else here? please say hi in the chat channel
<tumbleweed> that's #ubuntu-classroom-chat, which is also the place to ask questions
<tumbleweed> so, I'm Stefano Rivera, a Debian & Ubuntu Developer
<tumbleweed> and I'm here to guide you through working with Debian, today
<tumbleweed> I assume you all know that Ubuntu is derived from Debian
<tumbleweed> in fact, about 75% of packages in Universe are entirely unmodified from Debian
<tumbleweed> and that's a good thing
<tumbleweed> there's no need for those packages to be modified in Ubuntu
<tumbleweed> the vast majority of bugs that we'd encounter in them are relevant to both Debian & Ubuntu
<tumbleweed> and it makes sense to fix them as close to the source as possible
<tumbleweed> that means the least duplication of effort, and shares the benefit as widely as possible
<tumbleweed> https://wiki.ubuntu.com/Debian/ForUbuntuDevelopers
<tumbleweed> I hope at this point, you are aware of the advantages of working well with our upstream, Debian
<tumbleweed> (and that I might have written up some of this beforehand, for pasting) :P
<tumbleweed> so, what are we here to do today?
<tumbleweed> Debain has frozen their next release, wheezy, and is now trying to fix all the remaining RC bugs in it
<tumbleweed> we're going to try and help with that
<tumbleweed> a lot of these are also relevant to Ubuntu, and it's generally in our interest for Debian to release quickly
<tumbleweed> what's an RC bug?
<tumbleweed> the Debian Release team has helpfully defined that for us
<tumbleweed> http://release.debian.org/wheezy/rc_policy.txt
<tumbleweed> how many need to still be fixed?
<tumbleweed> far too many: http://bugs.debian.org/release-critical/
<tumbleweed> we need to get the green line down to zero
<tumbleweed> everyone still with me?
<tumbleweed> what's the best way to find RC bugs?
<tumbleweed> I suggest using this search: http://deb.li/fOvv
<tumbleweed> that should find issues that are blocking the release of wheezy, and nobody has looked at yet
<tumbleweed> if anyone has any more questions about that search interface, please ask me
<tumbleweed> here's another query that may be interesting to us: http://deb.li/3Yc7n
<tumbleweed> that will list bugs that may have been fixed in Ubuntu, but the patch hasn't been forwarded to Debian
<tumbleweed> many of the bugs you'll see on these lists are not trivial to fix
<tumbleweed> there's a reason that they've been open for a long time, and nobody has fixed them
<tumbleweed> so, if you want to find something easy to work on, it's often best to look at 10 of them, and pick the easiest one
<tumbleweed> but, of course, they all need to be fixed :)
<tumbleweed> (or found to be not actually blocking bugs)
<tumbleweed> how do you go about fixing these issues?
<tumbleweed> I'm afraid there are way too many types of RC bug for me to answer that
<tumbleweed> but we can take that on a case-by-case basis, if you point to a bug you aren't sure how to deal with, I'm sure someone can suggest the answer
<tumbleweed> I can briefly explain the procedures
<tumbleweed> when Debian is frozen, Debian package maintainers are strongly encouraged not to upload anything to unstable, that won't end up in the frozen release
<tumbleweed> so, for most packages, the same version should be present in both unstable, and testing
<tumbleweed> (if you don't know about debian testing, packages automatically migrate from unstable to testing after 10 days, if there are no issues that should stop the migration)
<tumbleweed> but during the freeze, this is disabled
<tumbleweed> we'll fix it in unstable, and then ask the release team to let it migrate through to testing
<tumbleweed> this means that the fix should be as minimal as possible, as the release team will have to review it
<tumbleweed> it should also be minimal, if we intend to NMU (non-maintainer upload) it
<tumbleweed> the chat channel seems deathly silent, am I going way too fast?
<tumbleweed> So:
<tumbleweed> verify that the bug exists in wheezy (testing), and that the version is the same as unstable
<tumbleweed> it may be so trivially obvious that it doesn't need to be verifified
<tumbleweed> or it has enough commenters / logs to be sure it's real
<tumbleweed> if not, you can always fire up a chroot / vm (and people around here can help you set that all up)
<tumbleweed> You can see more information about the package at http://packages.qa.debian.org/$PACKAGENAME
<tumbleweed> (when I say $packagename in this talk, I mean source package)
<tumbleweed> or run rmadison -u debian $package
<tumbleweed> pull-debian-source $package
<tumbleweed> should get you the current source
<tumbleweed> then you get to fix it (that's the easy bit, right? :)
<tumbleweed> test-build against sid (unstable)
<tumbleweed> generate a debdiff, and attach it to the bug, tagging the bug +patch
<tumbleweed> has anyone here never used debian's bugtracker before?
<tumbleweed> (it's probably very different to anything you are used to, so I can give you a crash course in it)
<tumbleweed> it's worth noting that debbugs recently gained a new feature. You can now tag a bug +patch by making the first line of your e-mail
<tumbleweed> Tags: +patch
<tumbleweed> and then a blank line
<tumbleweed> (in other words, all e-mail to debbugs can now take pseudo-headers)
<tumbleweed> no need no cc control@bugs.debian.org
<tumbleweed> right. So. Once you've attached a patch to a bug and tagged it patch
<tumbleweed> Chances are a Debian Developer who's looking at RC bugs will notice it and sponsor it, fairly quickly.
<tumbleweed> But you can also ask for sponsorship. Usually, #debian-mentors on irc.debian.org is a good place.
<tumbleweed> #ubuntu-motu / #ubuntu-devel would work too (be clear that it's a debian bug that you are looking for a sponsor for)
<tumbleweed> and today, you can raise it in the classroom chat channel
<tumbleweed> ok, that's everything I intended to cover in classroom style
<tumbleweed> now, I'm entirely open to questions
<ClassBot> Rcart asked: Fixed bugs are automatically removed from those lists?
<tumbleweed> yes
<tumbleweed> the RC bug search like I gave you doesn't ignore bugs which arceh marked as done
<tumbleweed> *are
<tumbleweed> (which is the traditional way to mark a bug as fixed)
<tumbleweed> but instead relies on debbugs (the debian bugtracking system)'s version tracking feature
<tumbleweed> it knows which version of a package a bug was found in, and wwhich in was fixed in
<tumbleweed> (when people close bugs in the changelog, that is)
<tumbleweed> you asked about logkeys
<tumbleweed> $ rmadison -u debian logkeys logkeys | 0.1.0-1  | squeeze | source, amd64, armel, i386, ia64, mips, mipsel, powerpc, sparc logkeys | 0.1.0-1  | wheezy  | source, amd64, armel, i386, ia64, mips, mipsel, powerpc, sparc logkeys | 0.1.0-1  | sid     | source, mips, mipsel logkeys | 0.1.1a-3 | sid     | source, amd64, armel, armhf, i386, ia64, powerpc, sparc
<tumbleweed> erk, that wasn't pretty
<tumbleweed> http://packages.qa.debian.org/l/logkeys.html
<tumbleweed> you can see the fixed version hasn't entered testing yet
<tumbleweed> because it didn't build on some architectures
<tumbleweed> https://buildd.debian.org/status/logs.php?pkg=logkeys
<tumbleweed> it successfully built on some architectures in the past, that it isn't building on now
<tumbleweed> so those old versions are holding the new ones back
<ClassBot> chilicuil asked: all the rc bugs must be corrected in debian?, what about unity or some projects specific to ubuntu, can they be defined as RC?, if so, how can I find them?
<tumbleweed> chilicuil: to answer the example first: unity isn't in Debian
<tumbleweed> (although hopefully it will be, at same point)
<tumbleweed> Ubuntu has its own definition of RC bugs
<tumbleweed> but Ubuntu doesn't require all RC bugs to be fixed before releasing
<tumbleweed> we do a time-based release, where we release on a particular day
<tumbleweed> and do our best to fix all the show-stopper bugs before that date
<tumbleweed> we'd love to fix all our RC bugs, but one can't do that and regular, timely, releases
<tumbleweed> https://wiki.ubuntu.com/Bugs/Importance describes Ubuntu's bug importance levels
<tumbleweed> but our RC bugs are usually bugs that are noticed during ISO testing. i.e. bugs that actually block releasing
<tumbleweed> that and bugs that are critical enough that the release team is informed of them
<ClassBot> UndiFineD asked: looking at the number of rc-bugs, the number seems to decrease, how many are caused by kfreebsd and can i easily check that ?
<ClassBot> There are 10 minutes remaining in the current session.
<tumbleweed> so, yes, Debian is releasing with kfreebsd as supported architectures, in wheezy
<tumbleweed> http://release.debian.org/wheezy/arch_qualify.html
<tumbleweed> the number decreases, because people put attention into fixing them
<tumbleweed> (although, it generally climbs a bit after the freeze, as people notice bugs in all the last-minute uploads)
<tumbleweed> freezing testing means developers aren't introducing new bugs (hopefully), and effort should mostly go into RC bug fixing
<tumbleweed> as to bugs caused by kfreebsd. I see a bunch of usertags that may be helpful in finding them
<tumbleweed> http://udd.debian.org/cgi-bin/bts-usertags.cgi?user=&tag=*kfreebsd*
<tumbleweed> of course, not all of those will be RC
<ClassBot> There are 5 minutes remaining in the current session.
<tumbleweed> and many architecture-specific RC bugs can be solved by removing the binary packages from that architecture
<tumbleweed> (assuming they have no significant reverse dependencies)
<ClassBot> Rcart asked: can we use ubuntu's procedure to fix bugs in Debian? Like setting up an instance of Debian in pbuilder? I mean, fixing Debian bugs from Ubuntu?
<tumbleweed> yes, you can easily set up a debian chroot in pbuilder
<tumbleweed> pbuilder-dist create sid
<tumbleweed> should work
<tumbleweed> Debian and Ubuntu are incredibly similar, under the hood
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2012/07/31/%23ubuntu-classroom.html
* ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat ||
<tumbleweed> I guess that's it everyone. Thanks
#ubuntu-classroom 2012-08-02
<jrib> hmm listen to LjL or go to gym...
<LjL> i doubt i'm going to say anything much that you don't know jrib...
<jrib> LjL: k, i'll read scrollback later then.  Have fun!
<tomtiger11> Is it time?... :)
<tomtiger11> nm
<LjL> tomtiger11: in an hour i believe
<tomtiger11> LjL: yea, I remembered the UK is in BST ;)
* ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Current Session: A grand tour of the channels and bots - Instructors: LjL
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2012/08/02/%23ubuntu-classroom.html following the conclusion of the session.
<LjL> Hello. In this session I'll give an introduction to the bots I'm familiar with, and the channels they use.
<LjL> The three bots I'll cover are the FloodBots, MetaBot and BestBot.
<LjL> FloodBots
<LjL> ---------
<LjL> First (and most involved), the FloodBots. They're multiple bots running the same code that you'll find in #ubuntu and #kubuntu, that serve multiple purposes; most importantly, like they name implies, they flood. No, I mean, they try to *prevent* floods and spam.
<LjL> There are two things you probably have already noticed the FloodBots doing: setting a channel mode "+j" and "-q", and muting/unmuting people who post too many messages in a row.
<LjL> The bots can be in one of two modes: "hooked", or normal mode, and "unhooked", or emergency mode. Of course these are just names I made up. When the bots are hooked, it means they think everything is alright with the freenode network and themselves, so they'll set "+j", mute flooders, and do other things.
<LjL> If the bots think something is wrong, they'll "unhook", set "-j" and stop their normal operation. For you, that means basically the automatic handling of flood will not happen.
<LjL> But what is "+j"? It's a channel mode that avoids situations where many people join the channel all at once. Why is that a problem? Because spambots are known to do that: they make very many clones join, and spam.
<LjL> Where do people (or bots) who are stopped from joining end up? They end up in #ubuntu-unregged, the "overflow" channel. You can join it now if you want. The FloodBots will ask people who land there a very simple question (or give them a "captcha"), and if they reply correctly, they will be able to join #ubuntu or #kubuntu.
<LjL> I'll stop for a moment to let you join #ubuntu-unregged if you want to peek in, and ask any questions if you have them (I believe you're supposed to use #ubuntu-classroom-chat to ask questions).
<LjL> [15:07:11] <AlanBell> QUESTION: so people just need to be registered with nickserv to not end up in -unregged?
<LjL> In general, people *don't* need to be registered to join #ubuntu. But if there's a "mass join", or (as I'll mention later) the channel is set "+r", then yes, they'll need to be registered with NickServ...
<LjL> ... *or*, they can just answer the "captcha" question the FloodBots pose them.
<LjL> In fact, #ubuntu-unregged also has another purpose, which is where its name come from: when the main channel is set +r (meaning that only registered users can join it), unregistered joiners end up in #ubuntu-unregged - and again, they get asked a question by the bots, so they can eventually join even if they choose not to register.
<LjL> [15:10:03] <tomtiger11> QUESTION: What sort of system is in place to stop people spamming ubottu?
<LjL> ubottu is a bit outside the scope of what I'm particularly familiar with (as in: I didn't write it), but as far as I know, ubottu ignores repeated requests. It can also be set to ignore certain users. I don't think there is very much beyond that.
<LjL> Ok, I'll proceed with the FloodBots stuff...
<LjL> When is the main channel set +r? During spambot attacks. This can happen automatically: the FloodBots try to detect when an attack is in progress, and they'll set "+r" for a little while.
<LjL> Or an operator can do it manually: even then, I recommend telling the FloodBots to do it for you, and later I'll explain how you can do that.
<LjL> As I said, the other thing you'll often see the FloodBots do is mute people who "flood". This may seem relatively trivial, but I want to answer some questions about it that I think might come natural:
<LjL> * How do the bots know when the user is finished flooding? When they mute them, they also set channel mode "+z". That will let opped users (such as the FloodBots themselves) see what the muted user is saying. When the bots see silence from them, they'll remove the mute. This way, a user only stays muted for the necessary time.
<LjL> * How many lines is considered "flooding"? I can't give this a definite answer, because the bots use various methods to determine that. Anyway, the bots warn users after a few lines, *before* the mute takes place, so if they're flooding, they have a chance of stopping.
<LjL> * How do users know they've been muted? First, the bot warns them in the channel to stop flooding; then after the mute takes place, they warn them in private; when the mute is removed, they tell them in private that they can speak again.
<LjL> Any questions about the muting? It's handled transparently, but it's possibly the main or most visible feature of the bots, so maybe there are more doubts about it.
<LjL> Meanwhile, how can you interact with the floodbots? The general idea is that you shouldn't have to, and they'll work transparently, but there are always exceptions.
<LjL> The channel to control them is #ubuntu-ops-monitor - it's a private channel, and you'll need an invite to join. If you are an operator in #ubuntu and you aren't there yet, feel free to ask me for an invite now or later.
<LjL> The commands you can use in #ubuntu-ops-monitor are described at https://wiki.ubuntu.com/IRC/Floodbots - I just want to mention "protect", which sets "+r" for a while. You can use it if #ubuntu is being attacked by spammers, as I mentioned earlier.
<LjL> The way to use it is to type, for example, "protect 15", which will set "+r" for 15 minutes. If you want to remove the "+r" before time, use "protect 0".
<LjL> Another channel the FloodBots use is #ubuntu-read-topic, but that's honestly not very important :)
<LjL> Another "exception" I'd like to mention concerns users who connect from the freenode webchat. Without going into the details too much, these users are "filtered" by the FloodBots, so that they can be banned like other users if needed, which wouldn't happen otherwise.
<LjL> What does this mean for you? Simply put, if you "remove" (kick) a webchat user, they will automatically be banned by the FloodBots. If a ban wasn't really warranted. you will need to remove it yourself.
<LjL> I'm done with the FloodBots (finally). Any questions about them, if not I'll proceed with a couple other much less "troublesome" bots to talk about.
<LjL> [15:20:42] <JoseeAntonioR> QUESTION: Can you explain a little bit more about their functions in #u-unregged?
<LjL> They mainly do two annoying things in #ubuntu-unregged:
<LjL> They keep saying "Please register to join #ubuntu, because you've landed in the channel for unregistered users" or something like that (when +r is set, or for ~10 minutes after it was set)
<LjL> And they ask individual users simple "captcha"-style questions like "what is 2+2?"
<LjL> If the users answer these questions correctly, they get /INVITEd into #ubuntu.
<LjL> Does this answer it?
<LjL> I'll proceed with the other two bots I wanted to mention.
<LjL> MetaBot
<LjL> -------
<LjL> MetaBot sits in #ubuntu, #kubuntu, #ubuntu+1 etc and monitors questions and answers. It uses mainly a Bayesian filter to attempt to determine what is a support question, and what is not.
<LjL> Its purpose is to identify support questions that go unanswered. If you want to help answer them, join #ubuntu-meta and watch for them.
<LjL> If you join #ubuntu-meta right now, chances are you'll see questions "piped" there within a couple of minutes.
<LjL> In the topic of #ubuntu-meta you will find how to have MetaBot alert you of questions that concern specific topics. Just remember that MetaBot does what it can, but it's just a machine, and it's bound to mix up topics (or even think something is a question when it's not).
<LjL> Do you want to help make it recognize questions better? Then join #metabot and help "train" the bot. This is recommended only if you're very bored!
<LjL> ... and I'm done with MetaBot (told you it wasn't as involved as the FloodBots). But it's still a bit more complicated than this, so if you're curious, ask away.
<LjL> [15:27:10] <tomtiger11> QUESTION: How is metabot trained? How is the training used by the bot?
<LjL> If you join #metabot, you will see it basically pipes there every single thing that is said in #ubuntu and friends.
<LjL> For each of those messages that get piped, you can give MetaBot commands that tell it "this message is a valid question and belongs to the category 'APT'" (for example)
<LjL> Or "this message is nonsense, it's not a valid question and you should ignore it"
<LjL> The syntax is explained if you type "help" in #metabot, but basically, "cat <category> <nickname>" to say something is a valid question of the given category, and "null <nickname>" and "spam <nickname>" to say it's not-a-question or nonsense.
<LjL> By the way, this is virtually the same mechanism that your email client probably uses to filter out spam.
<LjL> You "train" it to recognize spam from non-spam, and MetaBot is "trained" to recognize questions from non-questions (and additionally categorize them, which is not much different).
<LjL> Ok, next bot:
<LjL> BestBot
<LjL> -------
<LjL> BestBot sits in #ubuntu-bots. Its purpose is to answer a common kind of question that occurs in support channels, but that isn't really a valid support question: "What is the best program to do X?".
<LjL> It's meant to be "fun", because people can vote - tell the bot what they think is the "best" program - and see how many people voted for various pieces of software.
<LjL> #ubuntu-bots can also be used to play with some other bots (ubottu for starters), and there is also #ubuntu-bots-team as the backstage for various bots.
<LjL> You can also ask BestBot to give you a *list* of all the programs in a given category: I think this is the particularly useful part, because a valid support question is "what can I use to do X?".
<LjL> Try asking the bot (publicly in #ubuntu-bots, it doesn't work in private) to "list every IRC client" for example. You'll see it can, sort of, tell you about GNOME and KDE clients separately, or console clients, etc.
<LjL> You can teach the bot new things, by voting or by simply saying (for example) "xchat is an IRC client". Its database is already relatively extensive (and unfortunately also a bit messed up, I should clean it up some time), but the repositories contain about 40000 packages, and there's certainly more to add!
<LjL> Questions about BestBot? Don't expect it to understand commands, by the way, it's supposed to be "fun" so I made it to pretend to recognize natural language. Which is a mixed blessing, I suppose.
<LjL> I've mentioned a few channels while talking about the bots. I'm sure you already know about #ubuntu-ops (if you're a core op you're there already, if not, you aren't supposed to idle in there, but you can always join for operator questions or issues), but remember there is also #ubuntu-irc, where everyone *can* idle, with a broader scope.
<LjL> [15:35:36] <tomtiger11> QUESTION: Is BestBot's source available?
<LjL> At the moment it's not available (it might be... somewhere, but it's almost certainly not the latest version). It's a very hacky bot, but if there's interest, I can just put the source somewhere.
<LjL> Ok, I'll try to not be lazy, polish its source code a little, and upload it somewhere accessible :)
<LjL> This question reminds me of something else though:
<LjL> The FloodBots source code is NOT available, and there is some concern about making it available. BUT if you want to help reduce that concern (by reviewing the code), access to the source code is available to Ubuntu core ops who request it.
<LjL> [15:38:43] <tomtiger11> QUESTION: Do you know what language it is coded in?
<LjL> All the bots I described are based on the same original source code; they're *very hacky* bots, and that's partly why the source code is not available, but they do their job etc. I hate to admit it, but they're written in PHP :-P
<LjL> Well, I guess we're done. I'm sorry I haven't introduced you to our actual main bot, ubottu, but I only know as much as the next guy about it myself. Ubottu is *not* written in PHP, it's written in Python and based on Supybot, that much I know - I believe its home is in #ubuntu-bots-team, where people have more knowledge about it.
<LjL> Thank you for attending and sorry if this has been a bit messy, my excuse is that I'm not feeling too well and I haven't been able to prepare very attentively ;(
<LjL> [15:43:55] <JoseeAntonioR> QUESTION: Is there any bot that helps in opping ops in case ChanServ is not available for a netsplit/services update/etc?
<LjL> No. The FloodBots could theoretically do this, and I've sometimes thought about it, but it seemed a bit of a security issue, so I decided to avoid it.
<LjL> I mean, ChanServ is actually built by people who know what you're doing, the FloodBots are written by me and I wouldn't want to have random people opped by mistake :-P
<LjL> [15:46:52] <JoseeAntonioR> maybe a +o to ubottu when it detects a chanserv quit may work
<LjL> I can think about that a little more. I'm not ruling it out, it just makes me a little uneasy.
<ClassBot> There are 10 minutes remaining in the current session.
<LjL> ClassBot: Here in Italy when there are only 10 minutes left, the class is dismissed. =)
<AlanBell> thanks very much LjL :)
<ClassBot> There are 5 minutes remaining in the current session.
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2012/08/02/%23ubuntu-classroom.html
* ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat ||
#ubuntu-classroom 2012-08-04
<Lolitha> Anyone with development experience with Quickly
<Lolitha> ?
<JoseeAntonioR> Lolitha: You can go to #ubuntu-app-devel for support :)
<Lolitha> Thanks
#ubuntu-classroom 2013-08-03
<Alex_JB> Hi everyone!
#ubuntu-classroom 2014-07-31
<mint> hey guys
<mint> anybody here?
<mint> how do i install linux from usb to my hdd? i installed it on the usb flash drive and i need some help to install it on the hard drive
<mint> anybody here?
<mint> hey guys
<mint> anybody here?
#ubuntu-classroom 2014-08-01
<Ubuntizado> hola
#ubuntu-classroom 2014-08-02
<paullus> anyone know how to make ubuntu see an SD flash drive card?
